はじめに
個人開発でアプリを作成中、
・Renderでデプロイしたけどログが見られない
・本番環境でもコンソールを使いたい
という場面があり、方法を調べたので備忘録としてまとめておきたいと思います!
私はプログラミング学習中の初学者です。
内容に誤りがある場合がございます。
もし間違いや改善点がございましたらご指摘いただけますと幸いです。
使用環境
Docker
Ruby 3.2.2
Ruby on Rails 7.0.8
Render
※すでにRenderにてデプロイが終わっていることを前提としています
Renderでログが見たい
以下の画像のようにRnederの「Logs」を見れば、ログを見ることができます。
しかし、私の場合は、環境設定ができておらず表示されない現象が起きていました。
対応方法
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. 再デプロイ
Railsの設定ファイルについて
Railsではproduction.rbでRAILS_LOG_TO_STDOUTを参照しています
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
コマンドで立ち上げることができます!
SSHで接続する
レンダリング サービスで SSH を初めて使用する場合は、SSH キーをレンダー アカウントに追加する必要があります。
https://docs.render.com/ssh
公式サイトの通りにやればできるかと思いますが、私の行った方法も紹介いたします。
1. 「Account Settings」
2. 「SSH Public Keys」
3. 「Add SSH Public Key」クリック
4. ターミナルでls -l ~/.ssh/*.pub
cat ~/.ssh/id_rsa.pub
確認します。
Keyに、ssh-rsaから始まる内容をコピーして貼り付ける。Name (Optional)は何でも良いと思います。
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となり、使えないかもしれません!)
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の公式サイトに全て書いてありました😅まずは公式を読め!を実感しました。
同じように悩んでいる方の助けになったら幸いです。
参考