RHEL8のオンプレミス環境にCloudWatch Agentを導入する際のエラー対応

cloudwatch-agent_エラー AWS
cloudwatch-agent_エラー

エラー対応まとめ

・Please make sure the creds you used have the right permissions configured for SSM access
・Error in putting config to parameter store

解釈:「SSMパラメータストアへのアクセス権限がありません」
原因:アタッチしている「CloudWatchAgentServerPolicyポリシー」では権限が足りない
対応:新しく下記2つのポリシーをアタッチしたロールを用意する(あるいは変更する)
   「CloudWatchAgentAdminPolicy」ポリシー
   「AmazonSSMManagedInstanceCore」ポリシー
理由:json > Statement > Action で「ssm:PutParameter」権限を許可しているため
参考:CloudWatch エージェントで使用する IAM ロールとユーザーを作成する

CloudWatchAgentAdminPolicyポリシー

・unable to determine aws-region
解釈:「リージョンが特定できないです」
原因:以下複数考えられる
 ①「/root/.aws/」直下に「credentials」「config」ファイルが存在しない
 ②「amazon-cloudwatch-agent.toml」ファイルが正しくない
 ③「config.json」ファイルが正しくない
対応:以下対応されているか確認する
 ①【aws configure】コマンドを実行し内容を設定する

>aws configure
AWS Access Key ID [None]: {IAMユーザのアクセスキー}
AWS Secret Access Key [None]: {IAMユーザのシークレットアクセスキー}
Default region name [None]: {対象サーバのリージョン}
Default output format [None]: json

 ②「amazon-cloudwatch-agent.toml」を編集し[credentials]を書き換える

>vi /opt/aws/amazon-cloudwatch-agent/etc/amazon-cloudwatch-agent.toml

# This common-config is used to configure items used for both ssm and cloudwatch access


## Configuration for shared credential.
## Default credential strategy will be used if it is absent here:
##            Instance role is used for EC2 case by default.
##            AmazonCloudWatchAgent profile is used for onPremise case by default.
 [credentials]
    shared_credential_profile = "{/root/.aws/credentials内のセクション名}"
    shared_credential_file= "/root/.aws/credentials"

## Configuration for proxy.
## System-wide environment-variable will be read if it is absent here.
## i.e. HTTP_PROXY/http_proxy; HTTPS_PROXY/https_proxy; NO_PROXY/no_proxy
## Note: system-wide environment-variable is not accessible when using ssm run-command.
## Absent in both here and environment-variable means no proxy will be used.
# [proxy]
#    http_proxy = "{http_url}"
#    https_proxy = "{https_url}"
#    no_proxy = "{domain}"

 ③「config.json」を編集し “region” を追加

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

{
"agent": {
   "region": "{対象サーバのリージョン}"
  }
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
}

理由:以下理由です
 ①構成設定および認証情報を正しく読み込みAWSサービスを利用するため
 ②CloudWatchエージェントが構成設定および認証情報を読み込めるようにするため
 ③CloudWatchエージェントに自分のリージョンを認識させるため
参考:以下参考になりました
設定ファイルと認証情報ファイルの設定
“Unable to determine aws-region” when running on-premises Cloudwatch agent
CloudWatch エージェント設定ファイルを手動で作成または編集する


・retries, going to sleep 1m0s before retrying.
・E! [outputs.cloudwatchlogs] Aws error received when sending logs to ~
・caused by: Post “{~amazonaws.com/} : proxyconnect tcp: dial tcp ~

解釈:「プロキシ設定に問題がありCloudWatchログが送れないです」
原因: 「amazon-cloudwatch-agent.toml」ファイルのプロキシ設定が誤っている
対応: 「amazon-cloudwatch-agent.toml」を編集し[proxy]を書き換える

>vi /opt/aws/amazon-cloudwatch-agent/etc/amazon-cloudwatch-agent.toml

# This common-config is used to configure items used for both ssm and cloudwatch access


## Configuration for shared credential.
## Default credential strategy will be used if it is absent here:
##            Instance role is used for EC2 case by default.
##            AmazonCloudWatchAgent profile is used for onPremise case by default.
 [credentials]
    shared_credential_profile = "{/root/.aws/credentials内のセクション名}"
    shared_credential_file= "/root/.aws/credentials"

## Configuration for proxy.
## System-wide environment-variable will be read if it is absent here.
## i.e. HTTP_PROXY/http_proxy; HTTPS_PROXY/https_proxy; NO_PROXY/no_proxy
## Note: system-wide environment-variable is not accessible when using ssm run-command.
## Absent in both here and environment-variable means no proxy will be used.
 [proxy]
    http_proxy = "{HTTP通信で経由するプロキシのURL:ポート番号}"
    https_proxy = "{HTTPS通信で経由するプロキシのURL:ポート番号}"
#    no_proxy = "{domain}"

理由:経由する中継サーバと通信できるようにするため
   ※場合によっては「no_proxy = “169.254.169.254”」を設定する必要有り
参考:プロキシ使用時に CloudWatch Agent を用いたログの転送に失敗したときの対処方法

こちら関連サイトです。

EC2停止後にCloudWatchアラームがALARM状態に変化してしまうときの解決法

コメント

タイトルとURLをコピーしました