なぜ、ログデータを awslogs エージェントで CloudWatch Logs にプッシュできないのですか?

最終更新日: 2020 年 11 月 6 日

CloudWatch Logs エージェント (awslogs) を使用してログデータを Amazon CloudWatch Logs にプッシュすることができません。これを解決するにはどうすればよいですか?

解決方法

開始する前に、awslogs エージェントが CloudWatch Logs API エンドポイントに接続できることを確認してください。

以下の設定に次のものがあることを確認してください。

  • インターネット接続
  • 有効なセキュリティグループの設定
  • 有効なネットワークアクセスコントロールリスト (ネットワーク ACL)

フィンガープリントの問題

ソースログファイルのヘッダー行を確認します。CloudWatch にプッシュするデータを設定するときに、このファイルのパスを設定します。

  • 最初の数行が空白であるか、同一のまま保持されるイベント以外のデータが含まれている場合、ログ識別ハッシュに問題がある可能性があります。
  • ヘッダー行が同じ場合は、エージェント設定ファイルfile_fingerprint_lines オプションを更新します。識別ハッシュの生成には、各ファイルのどの行を使用するかを必ず指定してください。

awslogs ログファイルでエラーを確認する

/var/log/awslogs.log ログファイルを確認します。エラーメッセージに注意してください。

アクセス許可エラーには次のものがあります。

  • NoCredentialsError: Unable to locate credentials - インスタンスに AWS Identity and Access Management (IAM) ロールを追加していない場合は、IAM ロールを作成して添付します。すでにインスタンスに IAM ロールを追加している場合は、/etc/awslogs/awscli.conf ファイルで IAM ユーザーの認証情報を更新してください。
  • ClientError: An error occurred (AccessDeniedException) when calling the PutLogEvents operation: User: arn:aws:iam::012345678910:<role/user>/<iam-user-name> is not authorized to perform: logs:PutLogEvents[...] - CloudWatch Logs に必要なアクセス許可で IAM ロールまたはユーザーを設定します。

タイムスタンプのエラーには以下のものが含まれています。

  • Fall back to previous event time: {'timestamp': 1492395793000, 'start_position': 17280L, 'end_position': 17389L}, previousEventTime: 1492395793000, reason: timestamp could not be parsed from message. - ログイベントがタイムスタンプで開始されることを確認します。/etc/awslogs/awslogs.conf で指定された datetime_format がログイベントのタイムスタンプ形式と一致するかどうかを確認します。必要に応じて、タイムスタンプ形式と一致するように datetime_format を変更します。
  • No file is found with given path '<PATH-TO-FILE>' - エージェント設定ファイルのログファイルパスを正しいパスに更新します。
  • Caught exception: An error occurred (InvalidSequenceTokenException) when calling the PutLogEvents operation: The given sequenceToken is invalid[…] または Multiple agents might be sending log events to log stream[…] - 複数のログファイルからログを単一のログストリームにプッシュすることはできません。設定を更新して、各ログをログストリーム - ロググループの組み合わせにプッシュします。

その他の awslogs 問題

  • ログのローテーション後にログのプッシュが停止した場合は、サポートされているログのローテーションメソッドを確認してください。詳細については、CloudWatch Logs のよくある質問を参照してください。
  • awslogs エージェントを再起動してから短時間だけログがプッシュされた場合は、エージェント設定ファイル[logstream] セクションで重複を確認してください。各セクションには一意の名前が必要です。
  • awslogs.log ログファイルが占めるディスク領域が大きすぎる場合は、ログファイルでエラーをチェックして修正してください。ログファイルに情報メッセージしか含まれていない場合は、エージェント設定ファイルlogging_config_file オプションに、より低いログ記録のレベルを指定します。

さらにトラブルシューティングする

さらにトラブルシューティングを行うには、instance-id (インスタンスの ID) をメモしてください。次に、設定に基づいて以下を収集して確認します。

Yum インストール

  • 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>

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


請求に関するサポートまたは技術サポートが必要ですか?