このサイトを動かしている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