CloudWatch Logs エージェント (awslogs) で Amazon CloudWatch Logs にログデータをプッシュできません。
解決方法
開始する前に、awslogs エージェントが CloudWatch Logs API エンドポイントに接続できることを確認します。
構成に次は以下の属性が含まれていることを確認してください。
- インターネット接続
- 有効なセキュリティグループの設定
- 有効なネットワークアクセス制御リスト (ネットワーク ACL)
重要: このレファレンスは、サポートされなくなった以前の CloudWatch Logs エージェント用です。Instance Metadata Service Version 2 (IMDSv2) を使用する場合は、新しい統合 CloudWatch エージェントを使用してください。IMDSv2 を使用していない場合、ベストプラクティスは、ログエージェントの代わりに新しい統合 CloudWatch エージェントを使用することです。
フィンガープリントの問題
ソースログファイルのヘッダー行を確認します。このファイルのパスを、CloudWatch にプッシュするデータを設定するときに設定します。
- 最初の数行が空白であるか、同じままの非イベントデータが含まれている場合は、ログ識別ハッシュに問題がある可能性があります。
- ヘッダー行が同じ場合は、エージェント構成ファイル内の file_fingerprint_lines オプションを更新します。識別ハッシュの生成に使用する各ファイルの行を必ず指定しています。
awslogs ログファイルでエラーを確認します
/var/log/awslogs.log ログファイルを確認します。エラーメッセージをメモするようにしてください。
アクセス許可のエラーには、以下のようなものがあります。
- NoCredentialsError: 認証情報が見つからない – AWS Identity and Access Management (IAM) ロールをインスタンスに追加していない場合は、IAM ロールを作成して添付します。IAM ロールをインスタンスにすでに追加している場合は、/etc/awslogs/awscli.conf ファイルで IAM ユーザーの認証情報を更新します。
- ClientError: PutLogEvents オペレーション呼び出しのエラーが発生しました (AccessDeniedException): ユーザー: arn:aws:iam::012345678910: / には実行権限がありません: PutLogEvents[...] – CloudWatch Logs に必要なアクセス許可を持つ IAM ロールまたはユーザーを設定します。
タイムスタンプのエラーには、以下のようなものがあります。
- 前のイベント時間にフォールバック: {'timestamp': 1492395793000, 'start_position': 17280L, 'end_position': 17389L}, previousEventTime: 1492395793000、理由:メッセージからタイムスタンプを解析できませんでした。 – ログイベントがタイムスタンプで始まることを確認します。/etc/awslogs/awslogs.conf で指定された datetime_format がログイベントのタイムスタンプ形式と一致するかどうかを確認します。必要に応じて、タイムスタンプ形式と一致するように datetime_format を変更します。
- 指定されたパス ' ' のファイルが見つかりません – エージェント構成ファイルのログファイルパスを正しいパスに更新します。
その他の awslogs の問題
- ログローテーション後にログのプッシュが停止した場合は、サポートされているログローテーション方法を確認してください。詳細については、「CloudWatch ログエージェントに関する FAQ」を参照してください。
- awslogs エージェントが再起動した後だけログが短時間プッシュされる場合は、エージェント設定ファイルの [logstream] セクションで重複を確認してください。各セクションに、一意の名前を付ける必要があります。
- awslogs.log ログファイルがディスク容量を占有しすぎる場合は、ログファイルでエラーを確認し、修正します。ログファイルに情報メッセージのみが含まれている場合は、エージェント構成ファイルの logging_config_file オプションに低いログレベルを指定します。
トラブルシューティング
追加的なトラブルシューティングを行う場合は、instance-id (インスタンスの ID) をメモしておいてください。次に、構成に基づいて以下を収集して確認します。
Yum のインストール:
$ yum info awslogs
$ yum info aws-cli-plugin-cloudwatch-logs
- /etc/awslogs/awslogs.conf ファイル
- /etc/awslogs/awscli.conf ファイル
- /etc/awslogs/ 内のその他の関連ファイル
- /var/log/awslogs.log ファイル
スクリプトベースのインストール:
- 次のコマンドで取得した awslogs バージョン:
$ /var/awslogs/bin/awslogs-version.sh
- /var/awslogs/etc/awslogs.conf ファイル
- /var/awslogs/etc/awscli.conf ファイル
- /var/awslogs/etc/ 内のその他の関連ファイル
- /var/log/awslogs.log
- /var/log/awslogs-agent-setup.log
ローテーション関連の問題の場合は、以下を収集して確認します。
- ソースログのスニペット
- 監視対象ディレクトリの内容のリスト。これを取得するには、ディレクトリパスを指定して、コマンド ls -la を使用します。
$ ls -la <Monitoring-Target-Directory-Path>
関連情報
CloudWatch ログの使用開始