Elastic Beanstalk アプリケーションからのログを追跡するための CLI ユーティリティはありますか。具体的には、Python フラスコ アプリケーションです。
eb CLI を使用してスナップショットを取得できます...
eb logs
しかし、私はやりたいです(herokuが提供するものと同様)...
eb logs --tail
これを達成した人はいますか?
ありがとう!
参考文献:
Elastic Beanstalk アプリケーションからのログを追跡するための CLI ユーティリティはありますか。具体的には、Python フラスコ アプリケーションです。
eb CLI を使用してスナップショットを取得できます...
eb logs
しかし、私はやりたいです(herokuが提供するものと同様)...
eb logs --tail
これを達成した人はいますか?
ありがとう!
参考文献:
更新:私の回答は賛成票を獲得し続けていますが、2013 年以降は状況が変わりました。EB ログを追跡するのが簡単になりました。より簡単な方法については、poslabsの回答を参照してください :-)。
元の答え:
私もこれで苦労したことがあります。現在、eb CLI ユーティリティでは、アプリケーション ログのテーリングが許可されていないようです。
ただし、次の方法でこれらのログを追跡できます。
.pem
ファイルが作成されます)tail -f /var/log/nodejs/nodejs.log
. Flask アプリケーションに相当するものは何かわかりません。(これについて正しい方向に向けてくれたRichard Soutarに感謝します。)
eb ログは必要ないかもしれません。eb ssh
最初に試してから試してください
tail -f /var/log/*
そのため、まだ探している他の人のために、エラスティック Beanstalk 環境のログを追跡するための小さなツールを作成しました。環境名とファイル名を指定するだけで、SSH が実行され、各インスタンスのファイルが追跡されます。
./eb-tail env-name
また
./eb-tail env-name -f '/path/to/file'
SSH でeb logs --stream
and withを使用してエラーが発生したため、より詳細な回答:tail
このコマンドを使用して、eb CLI で Cloudwatch を有効にしますeb logs --cloudwatch-logs enable
。
AWS コンソールに移動し、Cloudwatch を開きます。次に、ログ グループに移動し、ストリーミングするログ (私の場合は web.stdout.log) を選択し、下の画像で強調表示されているパスをコピーします。
ここで、eb CLI を再度開き、 と入力しeb logs -g your_copied_path --stream
ます。例: eb logs -g /aws/elasticbeanstalk/yourEbsApp-env/var/log/web.stdout.log --stream
. そして、ログテーリングが始まります。
(オプション) 3 番目のポイントを完全にスキップして、CloudWatch パネルの上にあるログを直接ストリーミングできます。ログ グループを開いて、その下にあるログ ストリームを選択するだけです。
awsを含む複数のサーバーからのいくつかのログを追跡するために使用するものは次のとおりです。
for $server in server-1 server-2 server-3 server-4; do
ssh -t $server -f "tail -f /var/log/some-process/error.log|sed -e 's/^/$server /'" &
done
ソース: https://gist.github.com/iolloyd/da60ef316643d7894bdf
これにより、ローカル マシンで複数のリモート インスタンスを監視できます。
私にとっては、2 つのステップが必要でした。
を実行する必要がありますがeb logs --stream
、その前に次を実行してください。
eb logs --cloudwatch-logs enable
出来上がり!
これをテストできる環境はありませんが、コードを見ると、次のことができるように見えます。
eb ログの末尾
constants.py の 129 行目を確認してください