LoginSignup
3
0

More than 1 year has passed since last update.

cloudwatch_agentのインストールと設定

Last updated at Posted at 2022-07-05

カスタムメトリクスを取得するために使用していたCloudWatchモニタリングスクリプトがいつの間にか非推奨になっていたため、CloudWatchエージェントを使用する。

  • プラットフォームバージョン:Ruby 3.0 AL2 バージョン 3.4.6
    • 拡張プラットフォームはプラットフォームフックを用いる
    • 取得するメトリクスはメモリ使用量とEBS使用量
  • CloudWatchエージェントが、インスタンスのデータを送信するために必要なPolicy
      - CloudWatchAgentServerPolicy
.platform
├── assets
│   └── cloudwatch-agent.json
└── hooks
    ├── postdeploy
    ├── prebuild
    └── predeploy
        └── 01_cloudwatch_agent.sh
cloudwatch-agent.json
{
    "agent": {
        "metrics_collection_interval": 60,
        "run_as_user": "root"
    },
    "metrics": {
        "append_dimensions": {
             "InstanceId": "${aws:InstanceId}",
	     "AutoScalingGroupName": "${aws:AutoScalingGroupName}"
        },
	"aggregation_dimensions": [["AutoScalingGroupName"]],
        "metrics_collected": {
            "disk": {
                "measurement": [
                    "used_percent"
                ],
                "metrics_collection_interval": 60,
                "resources": [
                    "/"
                ]
            },
            "mem": {
                "measurement": [
                    "mem_used_percent"
                ],
                "metrics_collection_interval": 60
            }
        }
    }
}
01_cloudwatch_agent.sh
#!/bin/bash
set -eu

cp -f .platform/assets/cloudwatch-agent.json /opt/aws/amazon-cloudwatch-agent/etc/amazon-cloudwatch-agent.json
/opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl -a fetch-config -m ec2 -s -c file:/opt/aws/amazon-cloudwatch-agent/etc/amazon-cloudwatch-agent.json
  • 注意点

エージェント設定ファイルをデプロイすると下記のように書き換えが発生します。また、-a fetch-configの実行によりファイル名の先頭にfile_が付与されます。

/opt/aws/amazon-cloudwatch-agent/etc/amazon-cloudwatch-agent.json
↓
/opt/aws/amazon-cloudwatch-agent/etc/amazon-cloudwatch-agent.d/file_amazon-cloudwatch-agent.json

そして、サーバ内でagentを停止し起動させる場合、/opt/aws/amazon-cloudwatch-agent/etc/amazon-cloudwatch-agent.d/file_amazon-cloudwatch-agent.jsonを引数として指定しないと当然エラーとなります。

/opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl -a fetch-config -m ec2 -s -c file:/opt/aws/amazon-cloudwatch-agent/etc/amazon-cloudwatch-agent.json
↓
/opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl -a fetch-config -m ec2 -s -c file://opt/aws/amazon-cloudwatch-agent/etc/amazon-cloudwatch-agent.d/file_amazon-cloudwatch-agent.json

さらに、サーバ内でagentを停止し起動させると-a fetch-configの実行によりファイル名の先頭に再度file_が付与されます。/opt/aws/amazon-cloudwatch-agent/etc/amazon-cloudwatch-agent.d/file_file_amazon-cloudwatch-agent.json

なお、-a fetch-config -cで指定可能なファイル名の最大長は251バイトであり、それを超過するとCloudWatchエージェントの起動は失敗します。
例:253バイト
file_file_file_file_file_file_file_file_file_file_file_file_file_file_file_file_file_file_file_file_file_file_file_file_file_file_file_file_file_file_file_file_file_file_file_file_file_file_file_file_file_file_file_file_file_amazon-cloudwatch-agent.json

  • 冪等性について
    -a fetch-config -cオプションを付与して amazon-cloudwatch-agent-ctlコマンドを実行すると、amazon-cloudwatch-agent.d配下に置かれた設定ファイルは削除されます。そのため、file_amazon-cloudwatch-agent.jsonがある状態でも動作に問題は発生しません。
3
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
0