Ongoing service disruptions
For the most recent update on ongoing service disruptions affecting the AWS Middle East (UAE) Region (ME-CENTRAL-1), refer to the AWS Health Dashboard. For information on AWS Service migration, see How do I migrate my services to another region?
統合 CloudWatch エージェントがメトリクスやログイベントを CloudWatch にプッシュしていない原因を教えてください。
Amazon CloudWatch にメトリクスとログを発行するために、統合 Amazon CloudWatch エージェントを Amazon Elastic Compute Cloud (Amazon EC2) インスタンスで設定しました。しかし、CloudWatch コンソールにメトリクスやログイベントが表示されません。
簡単な説明
接続またはアクセス許可の問題が発生した場合、統合 CloudWatch エージェントは、メトリクスやログを CloudWatch にプッシュできなくなる可能性があります。統合 CloudWatch エージェントのログを確認すると、次のエラーのいずれかが表示されることがあります。
- エージェントログエラー: エンドポイントに接続できません
- エージェントログエラー: アクセス許可が不十分です
解決策
統合 CloudWatch エージェントをトラブルシューティングするには、次の手順を実行します。
注: AWS コマンドラインインターフェイス (AWS CLI) コマンドの実行中にエラーが発生した場合は、「AWS CLI で発生したエラーのトラブルシューティング」を参照してください。また、AWS CLI の最新バージョンを使用していることを確認してください。
統合 CloudWatch エージェントのログを確認する
エージェントログファイルを使用すると、統合 CloudWatch エージェントパッケージで発生した問題をトラブルシューティングしやすくなります。
次のいずれかの問題が発生する可能性があります。
- 必要な AWS サービスエンドポイントまたは Amazon Virtual Private Cloud (Amazon VPC) エンドポイントに接続できない。詳細については、「VPC エンドポイントの操作」を参照してください。
- CloudWatch へのサポート API コールを行うのに適切なアクセス許可が欠けている。詳細については、「CloudWatch API 操作およびアクションに必要なアクセス許可」を参照してください。
次のログに、これらのエラーのいずれかが表示される場合があります。
エージェントログエラー: エンドポイントに接続できません
2021-08-30T04:07:46Z E! cloudwatch: code: RequestError, message: send request failed, original error: Post "https://monitoring.us-east-1.amazonaws.com/": dial tcp 172.31.11.121:443: i/o timeout 2021-08-30T04:07:46Z W! 210 retries, going to sleep 1m0s before retrying. 2021-08-30T04:07:46Z E! cloudwatch: code: RequestError, message: send request failed, original error: Post "https://monitoring.us-east-1.amazonaws.com/": dial tcp 172.31.11.121:443: i/o timeout 2021-08-30T04:07:46Z W! 211 retries, going to sleep 1m0s before retrying.
エージェントログエラー: アクセス許可が不十分です
2021-08-30T02:15:45Z E! cloudwatch: code: AccessDenied, message: User: arn:aws:sts::123456789012:assumed-role/cwagent/i-0744de7c842d2c2ba is not authorized to perform: cloudwatch:PutMetricData, original error: 2021-08-30T02:15:45Z W! 1 retries, going to sleep 400ms before retrying. 2021-08-30T02:15:46Z E! WriteToCloudWatch failure, err: AccessDenied: User: arn:aws:sts::123456789012:assumed-role/cwagent/i-0744de7c842d2c2ba is not authorized to perform: cloudwatch:PutMetricData status code: 403, request id: f1171fd0-05b6-4f7d-bac2-629c8594c46e
CloudWatch エンドポイントへの接続を確認する
CloudWatch へのトラフィックがパブリックインターネットを経由しない場合、Amazon VPC エンドポイントを使用できます。Amazon VPC エンドポイントを使用する場合は、次のパラメータを確認します。
- プライベートネームサーバーを使用している場合は、DNS 解決によって正確な応答が得られたことを確認します。
- CloudWatch エンドポイントがプライベート IP アドレスに解決されることを確認します。
- Amazon VPC エンドポイントに関連付けられたセキュリティグループでは、ホストからのインバウンドトラフィックを許可していることを確認します。
CloudWatch エンドポイントへの接続を確認するには、次の手順を実行します。
-
メトリクスエンドポイントへの接続を確認するには、次のコマンドを実行します。
$ telnet monitoring.us-east-1.amazonaws.com 443 Trying 52.46.138.115... Connected to monitoring.amazonaws.com. Escape character is '^]'. ^] telnet> quit Connection closed. -
ログエンドポイントへの接続を確認するには、次のコマンドを実行します。
$ telnet logs.us-east-1.amazonaws.com 443 Trying 3.236.94.218... Connected to logs.us-east-1.amazonaws.com. Escape character is '^]'. ^] telnet> quit Connection closed -
Amazon VPC エンドポイントがプライベート IP アドレスに解決されることを確認するには、次のコマンドを実行します。
$ dig monitoring.us-east-1.amazonaws.com +short172.31.11.121 172.31.0.13
統合 CloudWatch エージェントの設定をレビューする
CloudWatch エージェント設定ファイルには、CloudWatch に発行されるメトリクスとログの詳細が記載されています。エージェント設定ファイルをレビューし、発行しようとしているログとメトリクスが含まれていることを確認します。
メトリクスとログを発行するためのアクセス許可がホストにあることを確認する
AWS 管理ポリシーの CloudWatchAgentServerPolicy および CloudWatchAgentAdminPolicy は統合 CloudWatch エージェントをデプロイするのに役立ちます。これらのポリシーは、正しいアクセス許可があることを確認するのにも役立ちます。これらのポリシーを参考として活用し、ホストに正しいアクセス許可があることを確認します。
これらの例における AWS CLI の出力は、アクセス許可が不十分であることを示しています。
次の AWS CLI config コマンドは、EC2 インスタンスにアタッチされた AWS Identity and Access Management (IAM) ロールがないことを示しています。
$ /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl -a fetch-config -m ec2 -c ssm:CWT-Web-Server -s ****** processing amazon-cloudwatch-agent ****** /opt/aws/amazon-cloudwatch-agent/bin/config-downloader --output-dir /opt/aws/amazon-cloudwatch-agent/etc/amazon-cloudwatch-agent.d --download-source ssm:CWT-Web-Server --mode ec2 --config /opt/aws/amazon-cloudwatch-agent/etc/common-config.toml --multi-config default Region: us-east-1 credsConfig: map[] Error in retrieving parameter store content: NoCredentialProviders: no valid providers in chain. Deprecated. For verbose messaging see aws.Config.CredentialsChainVerboseErrors Fail to fetch/remove json config: NoCredentialProviders: no valid providers in chain. Deprecated. For verbose messaging see aws.Config.CredentialsChainVerboseErrors Fail to fetch the config!
次の AWS CLI config コマンドは、間違った IAM ロールが EC2 インスタンスにアタッチされていることを示しています。
$ /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl -a fetch-config -m ec2 -c ssm:CWT-Web-Server -s ****** processing amazon-cloudwatch-agent ****** /opt/aws/amazon-cloudwatch-agent/bin/config-downloader --output-dir /opt/aws/amazon-cloudwatch-agent/etc/amazon-cloudwatch-agent.d --download-source ssm:CWT-Web-Server --mode ec2 --config /opt/aws/amazon-cloudwatch-agent/etc/common-config.toml --multi-config default Region: us-east-1 credsConfig: map[] Error in retrieving parameter store content: AccessDeniedException: User: arn:aws:sts::123456789012:assumed-role/cwagent/i-0744de7c842d2c2ba is not authorized to perform: ssm:GetParameter on resource: arn:aws:ssm:us-east-1:123456789012:parameter/CWT-Web-Server status code: 400, request id: b85b0a7a-0fb1-47b4-924f-be8cf43a3b4d Fail to fetch/remove json config: AccessDeniedException: User: arn:aws:sts::123456789012:assumed-role/cwagent/i-0744de7c842d2c2ba is not authorized to perform: ssm:GetParameter on resource: arn:aws:ssm:us-east-1:123456789012:parameter/CWT-Web-Server status code: 400, request id: b85b0a7a-0fb1-47b4-924f-be8cf43a3b4d Fail to fetch the config!
次の get-caller-identity コマンドは、インスタンスに関連付けられている IAM ユーザーまたはロールを返します。
$ aws sts get-caller-identity { "UserId": "AROA123456789012ABCDE:i-0744de7c842d2c2ba", "Account": "123456789012", "Arn": "arn:aws:sts::123456789012:assumed-role/CloudWatchAgentServerRole/i-0744de7c842d2c2ba" }
エージェントが正しく起動することを確認する
AWS CLI を引数として渡された設定ファイルと併用すると、エージェントを起動できます。エージェントを起動するには、次の有効な起動コマンドを実行します。
Linux の場合は、次のコマンドを実行します。
- `$ sudo /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl -a fetch-config -m ec2 -s -c file:configuration-file-path` - `$ sudo /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl -a fetch-config -m ec2 -s -c ssm:configuration-parameter-store-name`
Windows の場合は、次のコマンドを実行します。
- `& "C:\Program Files\Amazon\AmazonCloudWatchAgent\amazon-cloudwatch-agent-ctl.ps1" -a fetch-config -m ec2 -s -c file:"C:\Program Files\Amazon\AmazonCloudWatchAgent\config.json"` - `& "C:\Program Files\Amazon\AmazonCloudWatchAgent\amazon-cloudwatch-agent-ctl.ps1" -a fetch-config -m ec2 -s -c ssm:configuration-parameter-store-name`
重要: Windows コントロールパネルからエージェントを起動しないでください。
エージェントが実行されていることを確認する
メトリクスとログを発行するには、エージェントがアクティブである必要があります。CloudWatch エージェントがアクティブであることを確認するには、次のコマンドを実行します。
$ sudo /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl -m ec2 -a status { "status": "running", "starttime": "2021-08-30T02:13:44+00:00", "configstatus": "configured", "cwoc_status": "stopped", "cwoc_starttime": "", "cwoc_configstatus": "not configured", "version": "1.247349.0b251399" }
エージェント設定の更新後にエージェントを再起動する
エージェントは、設定ファイルへの変更を自動的に登録しません。エージェントの設定が更新されて新規または別のメトリクスやログを含むようになる場合は、次のコマンドを使用してエージェントを再起動する必要があります。
$ sudo /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl -m ec2 -a stop ****** processing cwagent-otel-collector ****** cwagent-otel-collector has already been stopped ****** processing amazon-cloudwatch-agent ****** Redirecting to /bin/systemctl stop amazon-cloudwatch-agent.service $ sudo /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl -a fetch-config -m ec2 -s -c file:config.json ****** processing amazon-cloudwatch-agent ****** /opt/aws/amazon-cloudwatch-agent/bin/config-downloader --output-dir /opt/aws/amazon-cloudwatch-agent/etc/amazon-cloudwatch-agent.d --download-source file:config.json --mode ec2 --config /opt/aws/amazon-cloudwatch-agent/etc/common-config.toml --multi-config default Successfully fetched the config and saved in /opt/aws/amazon-cloudwatch-agent/etc/amazon-cloudwatch-agent.d/file_config.json.tmp Start configuration validation... /opt/aws/amazon-cloudwatch-agent/bin/config-translator --input /opt/aws/amazon-cloudwatch-agent/etc/amazon-cloudwatch-agent.json --input-dir /opt/aws/amazon-cloudwatch-agent/etc/amazon-cloudwatch-agent.d --output /opt/aws/amazon-cloudwatch-agent/etc/amazon-cloudwatch-agent.toml --mode ec2 --config /opt/aws/amazon-cloudwatch-agent/etc/common-config.toml --multi-config default 2021/08/31 02:45:37 Reading json config file path: /opt/aws/amazon-cloudwatch-agent/etc/amazon-cloudwatch-agent.d/file_config.json.tmp ... Valid Json input schema. I! Detecting run_as_user... Configuration validation first phase succeeded /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent -schematest -config /opt/aws/amazon-cloudwatch-agent/etc/amazon-cloudwatch-agent.toml Configuration validation second phase succeeded Configuration validation succeeded amazon-cloudwatch-agent has already been stopped Redirecting to /bin/systemctl restart amazon-cloudwatch-agent.service $ sudo /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl -m ec2 -a status { "status": "running", "starttime": "2021-08-31T02:45:37+0000", "configstatus": "configured", "cwoc_status": "stopped", "cwoc_starttime": "", "cwoc_configstatus": "not configured", "version": "1.247349.0b251399" }
関連情報
EC2 インスタンスから CloudWatch にメトリクスとログを送信するために、統合 CloudWatch エージェントをインストールして設定する方法を教えてください
- 言語
- 日本語
