この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので十分ご注意ください。
カスタムメトリクスとは、EC2インスタンスに対する監視(モニタリング)において、CloudWatchの標準モニタリング(5分間隔/無償)および詳細モニタリング(1分間隔/有償)以外で、独自に設定できる監視項目設定のことです。
今回は、CloudWatch エージェントを利用して、LINUXのカスタムメトリクスを監視する方法を紹介します。
前提
IAMロール作成/アタッチ
IAMロールを下記ポリシーで作成して、対象EC2にアタッチします。
必要なポリシー:
cloudwatch:PutMetricData
ec2:DescribeTags
メトリクス設定ファイル作成
ローカルで下記内容のjsonファイルを作成します。
監視内容例:
CPUユーザ使用率、CPUシステム使用率、SWAP使用率、ディスク使用率、メモリ使用率
amazon-cloudwatch-agent.json
{
"agent": {
"metrics_collection_interval": 300, // 間隔
"run_as_user": "root" // 実行ユーザ
},
"metrics": {
"append_dimensions": {
"AutoScalingGroupName": "${aws:AutoScalingGroupName}",
"ImageId": "${aws:ImageId}",
"InstanceId": "${aws:InstanceId}",
"InstanceType": "${aws:InstanceType}"
},
"metrics_collected": {
"cpu": {
"measurement": [
"cpu_usage_user", // CPUユーザ使用率
"cpu_usage_system" // CPUシステム使用率
],
"metrics_collection_interval": 300,
"resources": [
"*"
],
"totalcpu": false
},
"disk": {
"measurement": [
"used_percent" // ディスク使用率
],
"metrics_collection_interval": 300,
"resources": [
"*"
]
},
"diskio": {
"measurement": [
"io_time" // ディスクio
],
"metrics_collection_interval": 300,
"resources": [
"*"
]
},
"mem": {
"measurement": [
"mem_used_percent" // メモリ使用率
],
"metrics_collection_interval": 300
},
"processes": {
"measurement": [
"processes_blocked" // ブロックされているプロセス数
],
"metrics_collection_interval": 300
},
"swap": {
"measurement": [
"swap_used_percent" // SWAP使用率
],
"metrics_collection_interval": 300
}
}
}
}
CloudWatchエージェント作成
対象EC2の接続、CloudWatchエージェントのインストール
RPMダウンロードURL:
https://s3.amazonaws.com/amazoncloudwatch-agent/redhat/amd64/latest/amazon-cloudwatch-agent.rpm
対象EC2を接続して、rootユーザに変更します。
ダウンロードしたRPMファイルを/tmpディレクトリに格納して、実行します。
[ec2-user@ip-10-0-4-204 ~]$ sudo su -
[root@ip-10-0-4-204 ~]# cd /tmp
[root@ip-10-0-4-204 tmp]# rpm -U ./amazon-cloudwatch-agent.rpm
create group cuagent, result: 0
create user cuagent, result: 0
メトリクス設定ファイルの格納
メトリクス設定ファイルを/tmpに格納します。
設定ファイル権限変更
[root@ip-10-0-4-204 tmp]# chmod 755 amazon-cloudwatch-agent.json
CloudWatchエージェントの起動
[root@ip-10-0-4-204 tmp]# sudo /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl -a fetch-config -m ec2 -c file:/tmp/amazon-cloudwatch-agent.json -s
/opt/aws/amazon-cloudwatch-agent/bin/config-downloader --output-dir /opt/aws/amazon-cloudwatch-agent/etc/amazon-cloudwatch-agent.d --download-source file:/tmp/amazon-cloudwatch-agent.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_amazon-cloudwatch-agent.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
2020/11/09 03:23:32 Reading json config file path: /opt/aws/amazon-cloudwatch-agent/etc/amazon-cloudwatch-agent.d/file_amazon-cloudwatch-agent.json.tmp ...
Valid Json input schema.
I! Detecting runasuser...
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
CloudWatchエージェント状態の確認
[root@ip-10-0-4-204 tmp]# 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 Mon 2020-11-09 01:34:31 UTC; 1min 23s ago
Main PID: 1420 (amazon-cloudwat)
CGroup: /system.slice/amazon-cloudwatch-agent.service
mq1420 /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent -config /opt/aws/amazon-cloudwatch-agent/etc/amazon-cloudwatch-agent.toml -envconfig /opt/aws/amazon-cloudwatch-agent/etc/env-config.json -pidfile /opt/aws...
Nov 09 01:34:31 ip-10-0-4-204.ap-northeast-1.compute.internal systemd[1]: Started Amazon CloudWatch Agent.
Nov 09 01:34:31 ip-10-0-4-204.ap-northeast-1.compute.internal start-amazon-cloudwatch-agent[1420]: /opt/aws/amazon-cloudwatch-agent/etc/amazon-cloudwatch-agent.json does not exist or cannot read. Skipping it.
Nov 09 01:34:31 ip-10-0-4-204.ap-northeast-1.compute.internal start-amazon-cloudwatch-agent[1420]: Valid Json input schema.
Nov 09 01:34:31 ip-10-0-4-204.ap-northeast-1.compute.internal start-amazon-cloudwatch-agent[1420]: I! Detecting runasuser...
CloudWatchエージェントより送信されたカスタムメトリクスのイメージを確認します。
あとがき
以上はLinuxの設定ですが、Windowsの方は下記リンクに記載しています。
https://cloud5.jp/metrics-monitoring-windows/
–