前回Lightsailで作成した環境に「監視つけて。CPUとメモリとディスク使用量。CloudWatchに実行ログ転送もセットで」とのお達しを受けて、
例によってハイヨロコンデーと作業しまして。
……あとでトラブったのでちょっとそこもコミでメモ。
- やることはだいたいEC2と同じ。
 
⇒CloudWatchエージェント入れて設定して、CloudWatchエージェントを使うためにIAMユーザーを作成してLightsailにロール設定する。
⇒EC2でCloudWatchエージェントを設定した場合と、Lightsailで設定した場合ではメトリクス名と項目の紐づきが異なる。
- CPUはLightsailでアラート設定できる
 
⇒インスタンス→メトリクスからアラートが設定できるようになってるので、そっちで設定するのがラク。
[root@ip-HOG-EH-OG-IP logs]# cat /opt/aws/amazon-cloudwatch-agent/bin/config.json
{
        "agent": {
                "metrics_collection_interval": 60,
                "run_as_user": "root"
        },
        "logs": {
                "logs_collected": {
                        "files": {
                                "collect_list": [
                                        {
                                                "file_path": "/var/log/messages",
                                                "log_group_name": "messages",
                                                "log_stream_name": "{local_hostname}",
                                                "retention_in_days": -1
                                        },
                                        {
                                                "file_path": "/var/www/char.gelgoog.jp/storage/logs/*.log",
                                                "log_group_name": "Lightsail/log/prod/laravel/web",
                                                "log_stream_name": "{local_hostname}",
                                                "retention_in_days": -1
                                        },
                                        {
                                                "file_path": "/var/www/char.gelgoog.jp/storage/logs/form/*.log",
                                                "log_group_name": "Lightsail/log/prod/laravel/web",
                                                "log_stream_name": "{local_hostname}_form",
                                                "retention_in_days": -1
                                        },
                                        {
                                                "file_path": "/var/www/char.gelgoog.jp/storage/logs/form2/*.log",
                                                "log_group_name": "Lightsail/log/prod/laravel/web",
                                                "log_stream_name": "{local_hostname}_form2",
                                                "retention_in_days": -1
                                        },
                                        {
                                                "file_path": "/var/log/httpd/*_log",
                                                "log_group_name": "Lightsail/log/prod/httpd/access",
                                                "log_stream_name": "{local_hostname}",
                                                "retention_in_days": -1
                                        },
                                        {
                                                "file_path": "/var/log/php-fpm/error.log",
                                                "log_group_name": "Lightsail/log/prod/php-fpm/error",
                                                "log_stream_name": "{local_hostname}",
                                                "retention_in_days": -1
                                        }
                                ]
                        }
                }
        },
        "metrics": {
                "metrics_collected": {
                        "cpu": {
                                "measurement": [
                                        "cpu_usage_idle",
                                        "cpu_usage_iowait",
                                        "cpu_usage_steal",
                                        "cpu_usage_guest",
                                        "cpu_usage_user",
                                        "cpu_usage_system"
                                ],
                                "metrics_collection_interval": 60,
                                "resources": [
                                        "*"
                                ],
                                "totalcpu": true
                        },
                        "disk": {
                                "measurement": [
                                        "used_percent"
                                ],
                                "metrics_collection_interval": 60,
                                "resources": [
                                        "*"
                                ]
                        },
                        "diskio": {
                                "measurement": [
                                        "io_time",
                                        "write_bytes",
                                        "read_bytes",
                                        "writes",
                                        "reads"
                                ],
                                "metrics_collection_interval": 60,
                                "resources": [
                                        "*"
                                ]
                        },
                        "mem": {
                                "measurement": [
                                        "mem_used_percent"
                                ],
                                "metrics_collection_interval": 60
                        },
                        "net": {
                                "measurement": [
                                        "bytes_sent",
                                        "bytes_recv",
                                        "packets_sent",
                                        "packets_recv"
                                ],
                                "metrics_collection_interval": 60,
                                "resources": [
                                        "*"
                                ]
                        },
                        "netstat": {
                                "measurement": [
                                        "tcp_established",
                                        "tcp_time_wait"
                                ],
                                "metrics_collection_interval": 60
                        },
                        "swap": {
                                "measurement": [
                                        "swap_used_percent"
                                ],
                                "metrics_collection_interval": 60
                        }
                }
        }
}
log_stream_nameが{hostname}でなく{local_hostname}なのは、EC2ではなくLightsailのため。
{hostname} はEC2メタデータからホスト名を取得するため、Lightsailでは動作しないのです。
……これが原因でトラブル発生。
ログ転送は動いているものの、CloudWatchのアラームにメモリとディスクの使用率が届かなくなりました。
データ不足の表示になってアラートがブガーブガー。
(゜々。)<あれー、おっかしーなー?
ここでミソなのが、 上記の『EC2でCloudWatchエージェントを設定した場合と、Lightsailで設定した場合ではメトリクス名と項目の紐づきが異なる』ってとこ。
- EC2はインスタンスIDでCloudWatchアラームと紐づけする
 - LightsailはEC2ではないのでインスタンスIDは無い
 - LightsailのCloudWatchアラームはインスタンスIDで紐づけられていない
 - LightsailのCloudWatchアラームはhostnameで紐づけられている
 
(੭ ᐕ)<おまえログ転送設定直すついでに何やった?
……はい、hostname変更しましたね……。
CloudWatchのメトリクスを見てみると、実際変更したhostnameでメモリとディスク使用率を送ってきてました。
で、あれば、と当該CloudWatchアラームのhostnameを変更するとデータ不足表示は解消されてアラートも鳴り止みました。
『LightsailだとCloudWatchアラームとインスタンスIDでの紐づけがない』
ので
『LightsailではCloudWatchアラームを設定後にhostnameを変更するとダメ』
という失敗談でございました。
……誰かのせいにしたいが自分の顔しか思い浮かばない。





