AnsibleでAmazon Linux2にamazon-cloudwatch-agentを入れてデータを取得する基本設定です。
設定ファイル
ここではウィザードで作ったBasicなEC2 Linuxの監視設定を利用します。
sudo /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-config-wizard
ファイルは以下の通りです。
ansible/roles/amazon-cloudwatch-agent/files/amazon-cloudwatch-agent.json
{
"agent": {
"metrics_collection_interval": 60,
"run_as_user": "cwagent"
},
"metrics": {
"append_dimensions": {
"AutoScalingGroupName": "${aws:AutoScalingGroupName}",
"ImageId": "${aws:ImageId}",
"InstanceId": "${aws:InstanceId}",
"InstanceType": "${aws:InstanceType}"
},
"metrics_collected": {
"collectd": {
"metrics_aggregation_interval": 60
},
"disk": {
"measurement": [
"used_percent"
],
"metrics_collection_interval": 60,
"resources": [
"*"
]
},
"mem": {
"measurement": [
"mem_used_percent"
],
"metrics_collection_interval": 60
},
"statsd": {
"metrics_aggregation_interval": 60,
"metrics_collection_interval": 10,
"service_address": ":8125"
}
}
}
}
Ansibleタスク
collectdを使うためにepelを最初に有効化しています。
ansible/roles/amazon-cloudwatch-agent/tasks/main.yaml
---
collectd.html
- name: Enable epel repo
shell: amazon-linux-extras install epel -y
- name: Install collectd
yum:
name: collectd
state: latest
- name: Install amazon-cloudwatch-agent
yum:
name: amazon-cloudwatch-agent
state: latest
- name: Copy amazon-cloudwatch-agent config
copy:
src: amazon-cloudwatch-agent.json
dest: /opt/aws/amazon-cloudwatch-agent/etc/amazon-cloudwatch-agent.json
mode: '0644'
- name: Fetch amazon-cloudwatch-agent config
shell: |
/opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl \
-a fetch-config \
-m ec2 \
-c file:/opt/aws/amazon-cloudwatch-agent/etc/amazon-cloudwatch-agent.json \
-s
- name: Restart amazon-cloudwatch-agent
systemd:
name: amazon-cloudwatch-agent.service
state: restarted
IAM権限あるAmazon Linux2のEC2サーバーならこれを適用するだけで、CloudWatch AgentによるOS上からの情報取得が動くはずです。