OSはAmazon Linux 2を想定して説明します
SSMのrun commandからも一部操作できますが、今回はすべてEC2のコマンド操作のみで完結させています
目次
EC2にIAMロールを割り当てる
対象のEC2に下記2つのIAMポリシーを付与したIAMロールを割り当てましょう
- CloudWatchAgentAdminPolicy
- AmazonSSMManagedInstanceCore
SSM Agentインストール確認
EC2にssh接続後、デフォルトでインストールされているはずですが念の為確認しておきましょう
$ sudo systemctl status amazon-ssm-agent
● amazon-ssm-agent.service - amazon-ssm-agent
Loaded: loaded (/etc/systemd/system/amazon-ssm-agent.service; enabled; vendor preset: enabled)
Active: active (running) since 水 2022-04-06 04:07:40 UTC; 1h 49min ago
Main PID: 3660 (amazon-ssm-agen)
CGroup: /system.slice/amazon-ssm-agent.service
├─3660 /usr/bin/amazon-ssm-agent
└─3713 /usr/bin/ssm-agent-worker
CloudWatchエージェントインストール確認
こちらもインストールされているはずですが念の為確認しておきましょう
$ sudo systemctl status amazon-cloudwatch-agent
● amazon-cloudwatch-agent.service - Amazon CloudWatch Agent
Loaded: loaded (/etc/systemd/system/amazon-cloudwatch-agent.service; enabled; vendor preset: disabled)
Active: active (running) since 水 2022-04-06 04:25:13 UTC; 1h 35min ago
Main PID: 4139 (amazon-cloudwat)
CGroup: /system.slice/amazon-cloudwatch-agent.service
└─4139 /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent -config /opt/aws/amazon-cloudwatch-agent/etc/amazon-cloudwatch-agent....
もしインストールされていない場合はインストールしましょう
$ sudo yum install amazon-cloudwatch-agent
CloudWatchエージェントファイル作成
設問に答えていきファイルを作成していきます
$ sudo /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-config-wizard
以下質問以外はすべてデフォルトの値で作成しました
Do you want to monitor cpu metrics per core?
1. yes
2. no
default choice: [1]:
2
collectdのインストール
LoadAverageを取得するためにcollecedをインストールしましょう
$ sudo yum install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
$ sudo yum install -y collectd
collectdファイル設定
collectdの設定ファイルを2つ新規作成しましょう
collected.confの作成
$ cd /etc
$ sudo cp collectd.conf collectd_default.conf
$ sudo vim collectd.conf
以下のように記入しましょう
LoadPlugin load
LoadPlugin network
<Plugin load>
ReportRelative true
</Plugin>
<Plugin network>
<Server "127.0.0.1" "25826">
SecurityLevel "Encrypt"
Username "user"
Password "secret"
</Server>
</Plugin>
Include "/etc/collectd.d"
auth_fileの作成
$ cd /etc/collectd.d
$ sudo vim auth_file
以下のように記入しましょう
user: secret
CloudWatchエージェントファイルの編集
$ sudo vim /opt/aws/amazon-cloudwatch-agent/bin/config.json
該当箇所(collectdの部分)を編集しましょう
....
"collectd": {
"collectd_security_level":"encrypt", //追記する
"collectd_auth_file":"/etc/collectd.d/auth_file", //追記する
"metrics_aggregation_interval": 60
},
....
CloudWatchエージェント起動
$ sudo /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl -a fetch-config -m ec2 -s -c file:/opt/aws/amazon-cloudwatch-agent/bin/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:/opt/aws/amazon-cloudwatch-agent/bin/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
2022/04/06 06:29:22 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...
No csm configuration found.
No log configuration found.
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
Redirecting to /bin/systemctl stop amazon-cloudwatch-agent.service
Redirecting to /bin/systemctl restart amazon-cloudwatch-agent.service
collectdとCloudAgentの動作確認
各コマンドを記入した時にそれぞれレスポンスが返ってくることを確認しましょう
$ sudo netstat -lanput | grep 25826
udp 0 0 127.0.0.1:25826 0.0.0.0:* 4139/amazon-cloudwa
$ sudo /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl -m ec2 -a status
{
"status": "running",
"starttime": "2022-04-06T04:25:13+0000",
"configstatus": "configured",
"cwoc_status": "stopped",
"cwoc_starttime": "",
"cwoc_configstatus": "not configured",
"version": "1.247350.0b251780"
}
collected有効化
$ sudo systemctl enable collectd.service
$ sudo systemctl start collectd
$ sudo systemctl status collectd
● collectd.service - Collectd statistics daemon
Loaded: loaded (/usr/lib/systemd/system/collectd.service; enabled; vendor preset: disabled)
Active: active (running) since 水 2022-04-06 04:26:57 UTC; 1h 43min ago
Docs: man:collectd(1)
man:collectd.conf(5)
Main PID: 4207 (collectd)
CGroup: /system.slice/collectd.service
└─4207 /usr/sbin/collectd
CloudWatchから確認
AWSコンソール画面からCloudWatch→すべてのメトリクス→CWAgent→ImageId,InstanceId,InstanceType,type,type_instanceに遷移して表示されていたら成功です!