web-dev-qa-db-ja.com

AWS Elastic BeanstalkからのログをテールするCLIはありますか

Elastic BeanstalkアプリケーションからのログをテーリングするためのCLIユーティリティはありますか?具体的には、python flaskアプリケーションです。

彼らのeb CLIを使用してスナップショットを取得できます...

eb logs

しかし、私はしたいのですが( herokuが提供するものと同様に )...

eb logs --tail

誰かがこれを達成しましたか?

ありがとう!


いくつかの参照:

38
Jonathan

これは次のように簡単です。

eb logs --stream

https://docs.aws.Amazon.com/elasticbeanstalk/latest/dg/eb3-logs.html

(私は ポジティブラボの答え がすでに含まれていることを理解しています--streamオプションですが、1つのグループだけでなく、すべてのログを表示したいので、その答えをざっと見ます。そして、私の記憶が良ければ、同じ質問をグーグルで続けて同じ場所に行く必要はありません。)

9
eremite

UPDATE:私の回答は賛成票を獲得し続けていますが、2013年以降は状況が変更されています。EBログを追跡するのが簡単になりました posit labs's答え それを行うためのより簡単な方法:-)。


元の答え:

私もこれに苦労していた。現在、eb CLIユーティリティでは、アプリケーションログを調整することはできません。

ただし、次の方法でこれらのログをテールすることができます。

  1. EC2コンソールでキーペアを作成する(これにより.pemファイル)
  2. EBインスタンスをこのキーペアにリンクする(EBコンソールで)
  3. EC2コンソールでインスタンスのパブリックDNSを見つける
  4. Sshを介してインスタンスに接続する( `ssh -i [yourpemfile.pem] ec2-user @ [your.public.dns]
  5. ログファイルを追跡します。 Node.jsアプリケーションの場合、それはtail -f /var/log/nodejs/nodejs.log。 Flaskアプリケーションに相当するものはわかりません。

Richard Soutar に感謝します。これで私を正しい方向に向けてくれました。)

25
Jorge Aranda

-gフラグを使用してロググループを設定し、--streamを使用して結果をストリーミングできます。特定のマシンにsshする必要はありません。

eb logs -g /aws/elasticbeanstalk/yourApp-env/var/log/nodejs/nodejs.log --stream
10
posit labs

Ebログは必要ない場合があります。最初にeb sshを試してください。

tail -f /var/log/*
6
tarikakyol

したがって、まだそれを探している他の人のために、Elastic Beanstalk環境のログをテールする小さなツールを書きました。環境名とファイル名を指定するだけで、SSHを実行して各インスタンスのファイルをテールします。

./eb-tail env-name

または

./eb-tail env-name -f '/path/to/file'

https://github.com/ahmednasir91/eb-tail

2
Ahmed

これが私がすることです:

eb logsから必要なログファイルの場所を取得します

eb logs

EBが表示する各ログには、その前/前に-------が付いています。たとえば、PassengerがRailsにログオンする場合:

-------------------------------------
/var/app/support/logs/production.log
-------------------------------------

次に、サーバーにSSHでログインし、ログを記録します。

eb ssh    # may have to eb ssh --setup for first time use

# from inside the server
tail -f /var/app/support/logs/production.log
2
risa_risa

これはeb-cliを使用しませんが、ログをストリーミングする最も簡単な方法は、eb logs -cw enableを使用してから、cloudwatchポータルでストリームを読み取ることです。

0
jimmy

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

ローカルマシンの複数のリモートインスタンスを監視できます。

0
Lloyd Moore

AWS EBは複数のログをまとめて収集するため、ログを直接テールにすることはできません。関心があるのはアプリケーションログであると想定して、EC2タブに移動し、実際のサーバーの接続ボタンを押すことができます(キーペアを定義する必要がある場合があります。指示に従ってください)。サーバーにログインすると、そこからログを記録できます。

0
Tal