このサイトを動かしているWordPressをAmazon Linux 2ベースのインスタンスに引っ越しました。
ついでにLightSailインスタンスをCloudWatchで監視するようにした、というお話です。
こんな風にしてメトリクスを見ることができます。

手順は大きく以下。
・IAMでCloudWatch用のユーザーを作る ・作ったユーザーをLightSail内のCloudWatchエージェントに設定する
IAM
まずIAMでCloudWatch用のユーザーを作ります。
理論的なところはいろいろなサイトで解説されているので、ここでは実際の手順だけ。
IAMでUsersを選択。

Add usersを選択。

わかりやすい名前を入れ、Access key – Programmatic accessにチェックを入れて、Next。

Attach existing policies directlyを選び、Filter policiesにCloudWatchAgentServerPolicyを入れてチェックし、Next.

タグは不要ならそのままNext。

問題なさそうならCreate userします。

無事に作られました。
Access key IDとSecret access keyはメモしておきましょう。

LightSail側の作業
基本的にはここの手順に従います。

↑の記事には載っていませんが、自分はこれらも入れました。
不要かも。
sudo yum install amazon-cloudwatch-agent sudo amazon-linux-extras install collectd
LightSailインスタンスで作ったユーザー情報を入れます。
東京リージョンにしました。
こちらの記事を参考にさせていただきました。感謝です。
sudo aws configure --profile AmazonCloudWatchAgent AWS Access Key ID [None]: YourAccessKeyID AWS Secret Access Key [None]: YourSecretAccessKey Default region name [None]: ap-northeast-1 Default output format [None]: (Enter) (以降は基本Enter連打でOK)
途中で「他にほしいログはあるか?」と言われたので、/var/log/syslogを入れておきました。
> Log file path: /var/log/syslog Log group name: default choice: [syslog]
最後に「設定は/opt/aws/amazon-cloudwatch-agent/bin/config.jsonに保存してあるよ」とのこと。
自分はCPU使用率とTCPコネクション数を追加してみました。
取得できるメトリクスは公式ページを参照。
2022/10/08更新
syslogのパスが間違っていたので、修正しました。
{
"agent": {
"metrics_collection_interval": 60,
"run_as_user": "root"
},
"logs": {
"logs_collected": {
"files": {
"collect_list": [
{
"file_path": "/var/log/messages",
"log_group_name": "syslog",
"log_stream_name": "{instance_id}",
"retention_in_days": -1
}
]
}
}
},
"metrics": {
"aggregation_dimensions": [
[
"InstanceId"
]
],
"append_dimensions": {
"AutoScalingGroupName": "${aws:AutoScalingGroupName}",
"ImageId": "${aws:ImageId}",
"InstanceId": "${aws:InstanceId}",
"InstanceType": "${aws:InstanceType}"
},
"metrics_collected": {
"collectd": {
"metrics_aggregation_interval": 60
},
"cpu": {
"measurement": [
"cpu_usage_idle",
"cpu_usage_iowait",
"cpu_usage_user",
"cpu_usage_system"
],
"metrics_collection_interval": 60,
"resources": [
"*"
],
"totalcpu": false
},
"disk": {
"measurement": [
"used_percent"
],
"metrics_collection_interval": 60,
"resources": [
"*"
]
},
"mem": {
"measurement": [
"mem_used_percent"
],
"metrics_collection_interval": 60
},
"netstat": {
"measurement": [
"tcp_established",
"tcp_time_wait"
],
"metrics_collection_interval": 60
},
"statsd": {
"metrics_aggregation_interval": 60,
"metrics_collection_interval": 10,
"service_address": ":8125"
}
}
}
}
ただ、このconfig.jsonではなくなぜか別のamazon-cloudwatch-agent.jsonを参照していました。
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 Thu 2022-09-29 14:36:42 UTC; 36s ago
Main PID: 19055 (amazon-cloudwat)
Tasks: 7
Memory: 19.1M
CGroup: /system.slice/amazon-cloudwatch-agent.service
└─19055 /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...
Sep 29 14:36:42 ip-172-26-0-182.ap-northeast-1.compute.internal systemd[1]: Stopped Amazon CloudWatch Agent.
Sep 29 14:36:42 ip-172-26-0-182.ap-northeast-1.compute.internal systemd[1]: Started Amazon CloudWatch Agent.
Sep 29 14:36:42 ip-172-26-0-182.ap-northeast-1.compute.internal start-amazon-cloudwatch-agent[19055]: /opt/aws/amazon-cloudwatch-agent/etc/amazon-cloudwatch-agent.json does not exist or cann...ing it.
Sep 29 14:36:42 ip-172-26-0-182.ap-northeast-1.compute.internal start-amazon-cloudwatch-agent[19055]: I! Detecting run_as_user...
Hint: Some lines were ellipsized, use -l to show in full.
そのため、シンボリックリンクを作って対処します。
cd /opt/aws/amazon-cloudwatch-agent/etc/ sudo ln -s ../bin/config.json amazon-cloudwatch-agent.json ls -l /opt/aws/amazon-cloudwatch-agent/etc/ total 16 drwxr-xr-x 2 root root 30 Sep 29 13:55 amazon-cloudwatch-agent.d lrwxrwxrwx 1 root root 18 Sep 29 14:38 amazon-cloudwatch-agent.json -> ../bin/config.json -rw-rw-r-- 1 root root 3054 Sep 29 14:38 amazon-cloudwatch-agent.toml -rw-r--r-- 1 root root 991 Sep 26 15:31 common-config.toml -rw-r--r-- 1 root root 2 Sep 29 14:38 env-config.json -rw-r--r-- 1 root root 85 Sep 29 14:38 log-config.json
設定の反映にはプロセス再起動が必要です。
sudo amazon-cloudwatch-agent-ctl -a stop sudo amazon-cloudwatch-agent-ctl -a start
ここまでうまく設定できていればCloudWatchコンソールで見えていると思います!
↓はこのサイトでの取得結果です。

終わりに
いかがでしたか。
わざわざSSHログインしなくてもメモリやCPU使用率を確認でき、一定値を超えたらアラートを出すなどのアクションにもつながるので、とても便利です!



Comments