LoginSignup
16
14

【Render,Rails,Docker】本番環境でログを見たり、コンソールを使う方法

Last updated at Posted at 2024-04-15

はじめに

個人開発でアプリを作成中、

・Renderでデプロイしたけどログが見られない
・本番環境でもコンソールを使いたい

という場面があり、方法を調べたので備忘録としてまとめておきたいと思います!

私はプログラミング学習中の初学者です。
内容に誤りがある場合がございます。
もし間違いや改善点がございましたらご指摘いただけますと幸いです。

使用環境

Docker
Ruby 3.2.2
Ruby on Rails 7.0.8
Render

※すでにRenderにてデプロイが終わっていることを前提としています

Renderでログが見たい

以下の画像のようにRnederの「Logs」を見れば、ログを見ることができます。
しかし、私の場合は、環境設定ができておらず表示されない現象が起きていました。
名称未設定のデザイン.jpg

対応方法

Render側にRAILS_LOG_TO_STDOUTという環境変数を設定する。

対応手順

1. メニューの「Dashboard」
2. 設定したいアプリケーション選択
3. 「Environment」タブの「Environment Variables」
4. 「Add Environment Variable」ボタンをクリック
5. 「Config Vars」にそれぞれ以下を入力
  KEY:RAILS_LOG_TO_STDOUT
  VALUE:true
6. 「Save Changes」ボタンをクリック
7. 再デプロイ
名称未設定のデザイン (1).jpg

Railsの設定ファイルについて

Railsではproduction.rbでRAILS_LOG_TO_STDOUTを参照しています

config/environments/production.rb
Rails.application.configure do
 ()
 if ENV["RAILS_LOG_TO_STDOUT"].present?
    logger           = ActiveSupport::Logger.new(STDOUT)
    logger.formatter = config.log_formatter
    config.logger    = ActiveSupport::TaggedLogging.new(logger)
 end
 (略)
end

本番環境でもコンソールを使いたい

Render有料プランに入っているなら、「Shell」を使えば、コンソールを使うことができます。rails cコマンドで立ち上げることができます!
名称未設定のデザイン (2).jpg

SSHで接続する

レンダリング サービスで SSH を初めて使用する場合は、SSH キーをレンダー アカウントに追加する必要があります。
https://docs.render.com/ssh
名称未設定のデザイン (3).jpg
公式サイトの通りにやればできるかと思いますが、私の行った方法も紹介いたします。
1. 「Account Settings」
2. 「SSH Public Keys」
3. 「Add SSH Public Key」クリック
9a4e8945ce2ef20f469cbcc13f04a345.png
4. ターミナルでls -l ~/.ssh/*.pub cat ~/.ssh/id_rsa.pub確認します。
Keyに、ssh-rsaから始まる内容をコピーして貼り付ける。Name (Optional)は何でも良いと思います。
名称未設定のデザイン (4).jpg
5. 「Add SSH Public Key」 クリック

ターミナルで使いたい

Render無料プランだとコンソール使えないのか?と言ったらそんなことはありません!
RenderCLIをインストールしたらターミナルでも使えます🥳
https://docs.render.com/cli

RenderCLIセットアップ

1. Homebrewを使用してRenderCLIをMacOSやLinuxにインストール

brew tap render-oss/render
brew install render

2. RenderのAPIキー設定
「Account Settings」→「API Keys」→「Create API Key」クリック
自分のアプリの名前などで作成してください
3. Render CLIをセットアップ

render config init

指示に従って入力してください

INFO Let's create your default profile.
 ? What is this profile's default region? (oregon) › singapore
 ? Provide your API key from the Dashboard: › ********************************
 ? Enable SSH pinning in `known_hosts`? (Y/n) › Yes
INFO Done! You're ready to use the Render CLI!
render commands

でアプリケーションで使用されるコマンドのアルファベット順のリストが表示されます。

ログの見方

render services tail --id <serviceId>

どのサービスのログを表示するかを識別するためにサービスIDが必要となります。
以下コマンドでサービスのIDを確認し、必要なサービスのログを取得してください。
また、サービスIDは、Renderのダッシュボード上でサービスを選択したときのURLに含まれています!

render services list

確認できたら、<serviceId>のところに入力してください!
ターミナルで入力しても、何も起きないと思いますが、ご自分のアプリを触って見てください!ログが出力されるハズです!
Ctrl+Cで終了できます。

コンソールの使いかた

(課金しないと、もしかしたらclosed by remotehostとなり、使えないかもしれません!)
名称未設定のデザイン (6).jpg
https://docs.render.com/ssh#use-with-a-docker-container

YOUR_SERVICE@ssh.YOUR_REGION.render.com
ssh <サービスID>@ssh.singapore.render.com

1. ダッシュボードで自分のアプリを選択し、「Connect」の「SSH」をコピー
2. ターミナルで前にコピーしたコマンドを貼り付け(少し時間かかる)
3. root@<serviceId>:~# のようなコマンドが出てきたら、

root@\<serviceId>:~# cd /app

cd /appで自分のアプリに移動する。
rails cなど使えるようになったハズです!終わる時はexit

おわりに

私の場合は開発環境では問題ないのに、本番環境だと動かない、ということが頻繁に起きていて、原因を特定するためにログやコンソールが使いたい!と思って調べました。
意外とRenderのログのことなど説明された記事を見つけることができず悩んでいたのですが、Renderの公式サイトに全て書いてありました😅まずは公式を読め!を実感しました。
同じように悩んでいる方の助けになったら幸いです。

参考

16
14
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
16
14