Elastic Beanstalk のロギングに関する問題をトラブルシューティングする方法を教えてください。

所要時間1分
0

ログファイルが空か、ログストリームが突然ログメッセージのストリーミングを停止しました。AWS Elastic Beanstalk でこの問題を解決したいと思っています。

解決策

発生したロギングの問題に応じて、次のオプションのいずれかを選択します。

空のログファイルを見つける

デフォルトでは、Elastic Beanstalk は環境内の Amazon Elastic Compute Cloud (Amazon EC2) インスタンスのすべてのログを保持します。Elastic Beanstalk は定期的にログをローテーションしてファイルサイズを管理し、ディスク容量を節約します。Elastic Beanstalk はログを Amazon Simple Storage Service (Amazon S3) にエクスポートします。詳細については、「Linux のログローテーション設定」を参照してください。最近ローテーションされたログメッセージにアクセスするには、/var/log/rotated をチェックしてください。

ログファイルとログストリームが新しいログメッセージを出力しなくなった理由を特定する

Elastic Beanstalk EC2 インスタンスからログファイルを継続的にストリーミングするには、Amazon CloudWatch Logs を使用してください。

EC2 インスタンスで最初のログローテーションが行われた後にログストリーミングが機能しない場合は、アプリケーションが一意の行をログに記録していない可能性があります。アプリケーションログは次の例のようになります。

Hello my application!- at time 1:00 PM
Hello my application!
- at time 2:00 PM
...

前の例では、すべての行が一意であるとは限りません。一意のエントリは 2 行にまたがります。このログファイルを一意に識別するには、少なくとも 2 行必要です。

**注:**ログローテーションが発生したことを検出するために、CloudWatch Logs エージェントはログファイルを識別し、ファイルに含まれる固有の行数を使用します。

ログストリーミングを再び機能させるには、以下の解決策のいずれかを試してください。

アプリケーションログ形式を編集して、各行の先頭にタイムスタンプなどの固有の識別子を含めます。

-または-

file_fingerprint_lines の値を編集して、ファイルを一意に識別するのに十分な行が含まれるまで、ファイルの行数をカウントします。

**注:**この値を編集するには、CloudWatch Logs エージェントの設定をカスタマイズする必要があります。Elastic Beanstalk と CloudWatch Logs の統合は、アプリケーションが生成するカスタムログファイルのストリーミングを直接サポートしていません。カスタムログをストリーミングするには、設定ファイルを使用して CloudWatch Logs エージェントをインストールし、プッシュするファイルを設定します。

たとえば、次の .eb 拡張子は、Node.js アプリケーションログファイルの _fingerprint_lines をカスタマイズします。

files:  "/etc/awslogs/config/beanstalklogs.conf":
    mode: "000644"
    user: root
    group: root
    content: |
      [/var/log/nodejs/nodejs.log]
      log_group_name=/aws/elasticbeanstalk/streamlogs/var/log/nodejs/nodejs.log
      log_stream_name={instance_id}
      file=/var/log/nodejs/nodejs.log*
      file_fingerprint_lines=2-5

       [/var/log/nginx/error.log]
      log_group_name=/aws/elasticbeanstalk/streamlogs/var/log/nginx/error.log
      log_stream_name={instance_id}
      file=/var/log/nginx/error.log*

       [/var/log/nginx/access.log]
      log_group_name=/aws/elasticbeanstalk/streamlogs/var/log/nginx/access.log
      log_stream_name={instance_id}
      file=/var/log/nginx/access.log*

       [/var/log/httpd/error.log]
      log_group_name=/aws/elasticbeanstalk/streamlogs/var/log/httpd/error.log
      log_stream_name={instance_id}
      file=/var/log/httpd/error.log*

       [/var/log/httpd/access.log]
      log_group_name=/aws/elasticbeanstalk/streamlogs/var/log/httpd/access.log
      log_stream_name={instance_id}
      file=/var/log/httpd/access.log*

       [/var/log/eb-activity.log]
      log_group_name=/aws/elasticbeanstalk/streamlogs/var/log/eb-activity.log
      log_stream_name={instance_id}
      file=/var/log/eb-activity.log*
 commands:
  01_remove_eb_stream_config:
    command: 'rm -fr /etc/awslogs/config/beanstalklogs.conf.bak'
  02_restart_log_agent:
    command: 'service awslogs restart'

ログストリームの作成に失敗した場合のトラブルシューティング

ログストリーミングを有効にしてもログストリームが表示されない場合は、「CloudWatch Logs 統合のトラブルシューティング」を参照してください。

関連情報

Amazon CloudWatch Logs でのエラスティックビーンストークの使用

カスタムログファイルストリーミング

GitHub ウェブサイトの logs-streamtocloudwatch-linux.config

AWS公式
AWS公式更新しました 8ヶ月前
コメントはありません

関連するコンテンツ