CloudWatch エージェントのトラブルシューティング - Amazon CloudWatch

CloudWatch エージェントのトラブルシューティング

以下の情報を参考にして、CloudWatch エージェントに関する問題のトラブルシューティングを行います。

CloudWatch エージェントのコマンドラインパラメータ

CloudWatch エージェントでサポートされているパラメータの完全なリストを表示するには、エージェントがインストールされているコンピュータで、コマンドラインに以下のコマンドを入力します。

amazon-cloudwatch-agent-ctl -help

Run Command を使用した CloudWatch エージェントのインストールが失敗する

Systems Manager Run Command を使用して CloudWatch エージェントをインストールするには、ターゲットサーバー上の SSM Agent がバージョン 2.2.93.0 以降である必要があります。SSM Agent のバージョンが適切でない場合は、次のエラーメッセージが表示されることがあります。

no latest version found for package AmazonCloudWatchAgent on platform linux
failed to download installation package reliably

SSM Agent バージョンの更新については、AWS Systems Manager ユーザーガイドSSM Agent のインストールと設定を参照してください。

CloudWatch エージェントが開始されない

CloudWatch エージェントが開始されない場合、設定に問題がある可能性があります。設定情報は、configuration-validation.log ファイルにログ記録されます。このファイルは、Linux サーバーでは /opt/aws/amazon-cloudwatch-agent/logs/configuration-validation.log に、Windows Server を実行しているサーバーでは $Env:ProgramData\Amazon\AmazonCloudWatchAgent\Logs\configuration-validation.log にあります。

CloudWatch エージェントが実行されていることを確認する

CloudWatch エージェントのクエリを実行して、実行中か停止中かを調べることができます。これをリモートに行うには、AWS Systems Manager を使用できます。コマンドラインを使用することもできますが、チェックできるのはローカルサーバーだけです。

Run Command を使用して CloudWatch エージェントのステータスをクエリするには
  1. Systems Manager コンソール (https://console.aws.amazon.com/systems-manager/) を開きます。

  2. ナビゲーションペインで、[Run Command] を選択します。

    -または-

    AWS Systems Manager のホームページが表示された場合は、スクロールダウンして [Explore Run Command] (Run Command の詳細) を選択します。

  3. [Run command (コマンドの実行)] を選択します。

  4. [コマンドドキュメント] リストで、[AmazonCloudWatch-ManageAgent] の横のボタンをクリックします。

  5. [Action] リストで、[status] を選択します。

  6. [オプションの設定ソース] で [デフォルト] を選択し、[オプションの設定場所] を空白のままにします。

  7. [Target] 領域で、確認するインスタンスを選択します。

  8. [Run (実行)] を選択します。

エージェントが実行されている場合、出力は次のようになります。

{ "status": "running", "starttime": "2017-12-12T18:41:18", "version": "1.73.4" }

エージェントが停止した場合、"status" フィールドには "stopped" が表示されます。

コマンドラインを使用して CloudWatch エージェントのステータスのクエリをローカルで実行するには
  • Linux サーバーで、次のように入力します。

    sudo /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl -m ec2 -a status

    Windows Server を実行しているサーバーの場合、管理者として PowerShell で次のように入力します。

    & $Env:ProgramFiles\Amazon\AmazonCloudWatchAgent\amazon-cloudwatch-agent-ctl.ps1 -m ec2 -a status

CloudWatch エージェントが起動ぜず、Amazon EC2 リージョンに関するエラーが発生する

エージェントが起動せず、エラーメッセージに Amazon EC2 リージョンのエンドポイントが示されている場合は、Amazon EC2 エンドポイントへのアクセス権を必要とするエージェントを設定しただけで、そのアクセス権を付与していない可能性があります。

例えば、エージェントの設定ファイルで Amazon EC2 メタデータに依存する値を append_dimensions パラメータに指定し、プロキシー使用する場合は、そのサーバーが Amazon EC2 のエンドポイントにアクセスできることを確認する必要があります。これらのエンドポイントの詳細については、「Amazon Web Services 全般のリファレンス」の「Amazon Elastic Compute Cloud (Amazon EC2)」を参照してください。

CloudWatch エージェントが Windows Server で開始されない

Windows Server では、次のエラーが表示されることがあります。

Start-Service : Service 'Amazon CloudWatch Agent (AmazonCloudWatchAgent)' cannot be started due to the following error: Cannot start service AmazonCloudWatchAgent on computer '.'. At C:\Program Files\Amazon\AmazonCloudWatchAgent\amazon-cloudwatch-agent-ctl.ps1:113 char:12 + $svc | Start-Service + ~~~~~~~~~~~~~ + CategoryInfo : OpenError: (System.ServiceProcess.ServiceController:ServiceController) [Start-Service], ServiceCommandException + FullyQualifiedErrorId : CouldNotStartService,Microsoft.PowerShell.Commands.StartServiceCommand

これを修正するには、まずサーバーサービスが実行中であることを確認します。このエラーは、サーバーサービスが実行されていないときにエージェントが起動しようとした場合に表示されます。

サーバーサービスがすでに実行されている場合は、以下の点が問題である可能性があります。一部の Windows Server インストールでは、CloudWatch エージェントの起動に 30 秒以上かかります。Windows Server では、サービスの起動に許容されるデフォルトの時間が 30 秒のみであるため、エージェントが失敗して次のようなエラーが表示される場合があります。

この問題を修正するには、サービスのタイムアウト値を増やします。詳細については、「サービスが開始されず、イベント 7000 および 7011 が Windows イベントログに記録される」を参照してください。

メトリクスの場所

CloudWatch エージェントが実行されているが、そのエージェントによって収集されたメトリクスが AWS Management Console または AWS CLI で見つからない場合、適切な名前空間を使用していることを確認します。エージェントによって収集されるメトリクスの名前空間は、デフォルトでは CWAgent です。この名前空間は、エージェント設定ファイルの [namespace] セクションの [metrics] フィールドを使用してカスタマイズできます。予想されるメトリクスが表示されない場合、設定ファイルで、使用している名前空間を確認してください。

CloudWatch エージェントパッケージを初めてダウンロードした場合、エージェント設定ファイルは amazon-cloudwatch-agent.json です。このファイルは、設定ウィザードを実行したディレクトリにあります。または、別のディレクトリに自分で移動した可能性があります。設定ウィザードを使用した場合は、ウィザードからのエージェント設定ファイル出力の名前は config.json です。namespace フィールドなど、設定ファイルの詳細については、「 CloudWatch エージェント設定ファイル: Metrics セクション」を参照してください。

CloudWatch エージェントが、コンテナで実行に長い時間がかかる、またはホップ制限のエラーをログに記録する

CloudWatch エージェントをコンテナサービスとして実行し、エージェントによって収集されたすべてのメトリクスに Amazon EC2 メトリクスのディメンションを追加する場合、エージェントのバージョン v1.247354.0 で次のエラーが表示されることがあります。

2022-06-07T03:36:11Z E! [processors.ec2tagger] ec2tagger: Unable to retrieve Instance Metadata Tags. This plugin must only be used on an EC2 instance. 2022-06-07T03:36:11Z E! [processors.ec2tagger] ec2tagger: Please increase hop limit to 2 by following this document https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/configuring-instance-metadata-options.html#configuring-IMDS-existing-instances. 2022-06-07T03:36:11Z E! [telegraf] Error running agent: could not initialize processor ec2tagger: EC2MetadataRequestError: failed to get EC2 instance identity document caused by: EC2MetadataError: failed to make EC2Metadata request status code: 401, request id: caused by:

このエラーは、エージェントが適切なホップ制限なしでコンテナ内の IMDSv2 からメタデータを取得しようとした場合に表示されることがあります。v1.247354.0 より前のバージョンのエージェントでは、ログメッセージが表示されることなくこの問題が発生する可能性があります。

これを解決するには、「インスタンスメタデータオプションの設定」の指示に従い、ホップ制限を 2 に増やします。

エージェントの設定を更新しましたが、CloudWatch コンソールに新しいメトリクスやログが表示されません

CloudWatch エージェント設定ファイルを更新した場合、次回にエージェントを起動したときに、fetch-config オプションを使用する必要があります。例えば、更新したファイルをローカルコンピュータに保存した場合は、次のコマンドを入力します。

sudo /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl -a fetch-config -s -m ec2 -c file:configuration-file-path

CloudWatch エージェントファイルとロケーション

次の表は、Linux や Windows Server を実行しているサーバー上に CloudWatch エージェントによってインストールされて使用されるファイルおよびインストール先の一覧です。

ファイル Linux のロケーション Windows Server のロケーション

エージェントの起動、停止、再起動を制御する制御スクリプト。

/opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl 、、または /usr/bin/amazon-cloudwatch-agent-ctl

$Env:ProgramFiles\Amazon\AmazonCloudWatchAgent\amazon-cloudwatch-agent-ctl.ps1

エージェントが書き込むログファイル。AWS Support に問い合わせる際は、このファイルを添付する必要があります。

/opt/aws/amazon-cloudwatch-agent/logs/amazon-cloudwatch-agent.log 、、または /var/log/amazon/amazon-cloudwatch-agent/amazon-cloudwatch-agent.log

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

エージェント妥当性確認検証ファイル。

/opt/aws/amazon-cloudwatch-agent/logs/configuration-validation.log 、、または /var/log/amazon/amazon-cloudwatch-agent/configuration-validation.log

$Env:ProgramData\Amazon\AmazonCloudWatchAgent\Logs\configuration-validation.log

ウィザードが作成した直後に、エージェントの設定に使用される JSON ファイル。詳細については、「CloudWatch エージェント設定ファイルを作成する」を参照してください。

/opt/aws/amazon-cloudwatch-agent/bin/config.json

$Env:ProgramFiles\Amazon\AmazonCloudWatchAgent\config.json

この設定ファイルが Parameter Store からダウンロードした場合に、エージェントの設定に使用される JSON ファイル。

/opt/aws/amazon-cloudwatch-agent/etc/amazon-cloudwatch-agent.json 、、または /etc/amazon/amazon-cloudwatch-agent/amazon-cloudwatch-agent.json

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

エージェントで使用するリージョン情報と認証情報を指定するための TOML ファイル (システムのデフォルト値を上書きします)。

/opt/aws/amazon-cloudwatch-agent/etc/common-config.toml、または /etc/amazon/amazon-cloudwatch-agent/common-config.toml

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

JSON 設定ファイルの変換された内容を含む TOML ファイル。amazon-cloudwatch-agent-ctl スクリプトは、このファイルを生成します。このファイルは直接変更しないでください。JSON から TOML への変換が正常に完了したことを確認するのに役立ちます。

/opt/aws/amazon-cloudwatch-agent/etc/amazon-cloudwatch-agent.toml、または /etc/amazon/amazon-cloudwatch-agent/amazon-cloudwatch-agent.toml

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

JSON 設定ファイルの変換された内容を含む YAML ファイル。amazon-cloudwatch-agent-ctl スクリプトは、このファイルを生成します。このファイルは直接変更しないでください。このファイルは、JSON から YAML への変換が正常に完了したことを確認するのに役立ちます。

/opt/aws/amazon-cloudwatch-agent/etc/amazon-cloudwatch-agent.yaml or /etc/amazon/amazon-cloudwatch-agent/amazon-cloudwatch-agent.yaml

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

CloudWatch エージェントのバージョンについての情報の検索

Linux サーバー上の CloudWatch エージェントのバージョン番号を検索するには、次のコマンドを入力します。

sudo /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl -a status

Windows Server 上の CloudWatch エージェントのバージョン番号を検索するには、次のコマンドを入力します。

& $Env:ProgramFiles\Amazon\AmazonCloudWatchAgent\amazon-cloudwatch-agent-ctl.ps1 -m ec2 -a status
注記

このコマンドを使用することは、CloudWatch エージェントのバージョンを検索する正しい方法です。コントロールパネルの [Programs and Features (プログラムと機能)] を使用すると、誤ったバージョン番号が表示されます。

エージェントに対する最新の変更に関する README ファイル、およびダウンロード可能なバージョン番号を示すファイルをダウンロードすることもできます。これらのファイルは次の場所にあります。

  • https://amazoncloudwatch-agent.s3.amazonaws.com/info/latest/RELEASE_NOTES 、、または https://amazoncloudwatch-agent-region.s3.region.amazonaws.com/info/latest/RELEASE_NOTES

  • https://amazoncloudwatch-agent.s3.amazonaws.com/info/latest/CWAGENT_VERSION 、、または https://amazoncloudwatch-agent-region.s3.region.amazonaws.com/amazoncloudwatch-agent-region/info/latest/CWAGENT_VERSION

CloudWatch エージェントによって生成されたログ

エージェントは、実行されている間ログを生成します。このログには、トラブルシューティング情報が含まれています。このログは、amazon-cloudwatch-agent.log ファイルで確認できます。このファイルは、Linux サーバーでは /opt/aws/amazon-cloudwatch-agent/logs/amazon-cloudwatch-agent.log に、Windows Server を実行しているサーバーでは $Env:ProgramData\Amazon\AmazonCloudWatchAgent\Logs\amazon-cloudwatch-agent.log にあります。

amazon-cloudwatch-agent.log ファイルに追加の詳細を記録するようにエージェントを設定できます。エージェント設定ファイルの agent セクションで、debug フィールドを true に設定した後、CloudWatch エージェントを再設定して再起動します。この追加情報のログ記録を無効にするには、debug フィールドを false に設定します。次に、エージェントを再設定して再起動します。(詳細については、 CloudWatch エージェント設定ファイルを手動で作成または編集する を参照してください)。

バージョン 1.247350.0 以降の CloudWatch エージェントでは、必要に応じて、エージェント設定ファイルの agent セクションの aws_sdk_log_level フィールドに、次のオプションの 1 つまたは複数を指定できます。複数のオプションは、| 文字で区切ります。

  • LogDebug

  • LogDebugWithSigning

  • LogDebugWithHTTPBody

  • LogDebugRequestRetries

  • LogDebugWithEventStreamBody

これらのオプションの詳細については、「LogLevelType」を参照してください。

CloudWatch エージェントの停止と再起動

AWS Systems Manager またはコマンドラインを使用して CloudWatch エージェントを手動で停止できます。

Run Command を使用して CloudWatch エージェントを停止するには
  1. Systems Manager コンソール (https://console.aws.amazon.com/systems-manager/) を開きます。

  2. ナビゲーションペインで、[Run Command] を選択します。

    -または-

    AWS Systems Manager のホームページが表示された場合は、スクロールダウンして [Explore Run Command] (Run Command の詳細) を選択します。

  3. [Run command (コマンドの実行)] を選択します。

  4. [Command document] リストで、[AmazonCloudWatch-ManageAgent] を選択します。

  5. [Targets] 領域で、CloudWatch エージェントをインストールしたインスタンスを選択します。

  6. [Action] リストで、[stop] を選択します。

  7. [Optional Configuration Source] と [Optional Configuration Location] は空白のままにします。

  8. [Run (実行)] を選択します。

コマンドラインを使用して CloudWatch エージェントをローカルで停止するには
  • Linux サーバーで、次のように入力します。

    sudo /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl -m ec2 -a stop

    Windows Server を実行しているサーバーの場合、管理者として PowerShell で次のように入力します。

    & $Env:ProgramFiles\Amazon\AmazonCloudWatchAgent\amazon-cloudwatch-agent-ctl.ps1 -m ec2 -a stop

エージェントを再起動するには、「CloudWatch エージェントを起動する」の手順に従います。