統合 CloudWatch エージェントがログイベントをプッシュしないのはなぜですか?

最終更新日: 2020 年 4 月 28 日

統合 CloudWatch エージェントを使用して Amazon CloudWatch Logs にログをプッシュしているのですが、CloudWatch Logs コンソールにログが表示されません。統合 CloudWatch エージェントがログイベントをプッシュしないのはなぜですか?

簡単な説明

次の問題により、統合 CloudWatch エージェントがログイベントをプッシュできない可能性があります。

  • CloudWatch エージェントのインストール後に Amazon マシンイメージ (AMI) を作成したために発生する非同期メタデータ
  • 古いバージョンの CloudWatch エージェントを使用している
  • CloudWatch Logs エンドポイントに接続できない
  • アカウント、リージョン、またはロググループの設定が正しくない
  • AWS Identity and Access Management (IAM) のアクセス許可が不十分
  • CloudWatch エージェントの実行エラー
  • タイムスタンプの問題

解決方法

注: 次のトラブルシューティング手順は Container Insights には適用されません。Container Insights のトラブルシューティングの詳細については、「Container Insights のトラブルシューティング」と「Amazon EKS でポッドのステータスをトラブルシューティングする方法を教えてください」を参照してください。

CloudWatch エージェントのインストール方法を確認する

AWS CloudFormation、AWS Systems Manager エージェント (SSM エージェント)、ユーザーデータスクリプト、または AWS コマンドラインインターフェイス (AWS CLI) を使用して、起動時に CloudWatch エージェントをインストールすることがベストプラクティスです。CloudWatch エージェントがすでにインストールされた状態で AMI を作成することはお勧めしません。AMI は通常、元のインスタンスから一意の情報を取得します。メタデータが同期しなくなり、この状態により CloudWatch エージェントが意図したとおりに動作しなくなる可能性があります。非同期メタデータは、AMI で作業するときに多くの Windows インスタンスが Sysprep を必要とする理由です。詳細については、「Sysprep を使用して、カスタムの再利用可能な Windows AMI を作成およびインストールする方法を教えてください」を参照してください。

最新バージョンの CloudWatch エージェントを使用していることを確認します

CloudWatch エージェントのリリースノートと最新バージョン番号の README ファイルをダウンロードして確認します。古いバージョンの CloudWatch エージェントを使用している場合は、必ずアップグレードしてください。最新バージョンには、発生している問題を解決するアップデートが含まれている場合があります。

CloudWatch Logs エンドポイントへの接続をテストする

次のいずれかのコマンドを使用して、CloudWatch Logs エンドポイント への接続をテストします。

telnet logs.<region>.amazonaws.com 443
nc -zv logs.<region>.amazonaws.com 443

接続障害が発生した場合は、以下を確認してください。

  • セキュリティグループとネットワークアクセスコントロールリスト (ACL) ルールで接続を許可する
  • インスタンスは、インターネットゲートウェイまたはネットワークアドレス変換 (NAT) ゲートウェイを使用して、パブリックエンドポイントに到達できる
  • VPC エンドポイントを使用している場合、エンドポイントは VPC IP に解決され、エンドポイントセキュリティグループはソースインスタンスからのアクセスを許可する

アカウント、リージョン、およびロググループの設定を確認する

CloudWatch エージェント設定ファイルで、以下の操作を行います。

  • 指定されたリージョンがコンソールのリージョンと一致することを確認する
  • ログが正しいアカウントでチェックされていることを確認する

オプションで、common-config.toml ファイルを使用して、CloudWatch エージェントのシステムデフォルトを上書きできます。これらのシステムデフォルトには、エージェントのプロキシ、リージョン、および認証情報が含まれます。ファイルは次の場所にあります。

Linux:

/opt/aws/amazon-cloudwatch-agent/etc/common-config.toml 

– または –

/etc/amazon/amazon-cloudwatch-agent/common-config.toml

Windows:

$Env:ProgramData\Amazon\AmazonCloudWatchAgent\common-config.toml

IAM アクセス許可を確認する

CloudWatch エージェントは、IAM ユーザーまたは IAM ロールポリシーからの認証情報を使用して、ログイベントを CloudWatch サービスにプッシュします。ログイベントを発行する前に、ロググループとログストリームを作成する必要があります。ロググループまたはログストリームがない場合、CloudWatch エージェントがそれらを作成します。

ポリシーに以下の IAM アクセス許可が含まれていることを確認します。

"logs:CreateLogGroup",
"logs:CreateLogStream",
"logs:PutLogEvents",
"logs:DescribeLogStreams"

欠落している IAM アクセス許可をユーザーポリシーまたはロールポリシーに追加します。

注: IAM ロールとユーザーを作成する場合、カスタムポリシーではなく、Amazon が作成した CloudWatchAgentServerPolicyCloudWatchAgentAdminPolicy ポリシーを使用することがベストプラクティスです。

CloudWatch エージェントの実行エラーを解決する

CloudWatch エージェントが実行されていることを確認します。エージェントが実行されていない場合は、ログファイルでエラーを確認し、解決します。ログファイルは次の場所にあります。

Linux:

/opt/aws/amazon-cloudwatch-agent/logs/amazon-cloudwatch-agent.log

Windows:

$Env:ProgramData\Amazon\AmazonCloudWatchAgent\Logs\amazon-cloudwatch-agent.log

注: ログは、カスタムログファイルの場所で指定される場合があります。 エージェント設定ファイルを確認して、カスタムログの場所を特定します。

エージェント設定ファイルで、デバッグパラメータを使用して詳細なデバッグログ記録を有効にします。run_as_user パラメータを使用している場合は、ユーザーがログの場所のパスに対するアクセス許可を持っていることを確認します。必要なアクセス許可がないと、CloudWatch エージェントはその場所にログを書き込むことができません。

タイムスタンプの問題を解決する

ログイベントのタイムスタンプが 14 日を経過しているか、または 2 時間以上先かを確認します。PutLogEvents コマンドは、どちらの時間枠でもログバッチを許可しません。

また、インスタンスのシステムタイムサービスが正しく設定されていることを確認します。詳細については、以下を参照してください。


この記事はお役に立ちましたか?

改善できることはありますか?


さらにサポートが必要な場合