また、以前こちらの記事で紹介した方法でもprocstat のカスタムメトリクスが取得できます。しかし、こちらの記事の場合、procstat のカスタムメトリクスはインスタンス単位で取得が行われるため、スケーリングポリシーのトリガには不向きです。理由は、Auto Scaling Group で起動するインスタンスは入れ替わるためインスタンス単位にアラームを設定する方法では実現が難しい(アラームを設定したインスタンスが入れ替わってしまうため)。かつ、仮にAuto Scaling Group の全インスタンスに設定した場合、Auto Scaling Group に所属するインスタンスの台数分、スケールアウトのトリガがキックされます(過剰にキックされ制御できない)
そのため、インスタンス単位でカスタムメトリクスを取得するのではなく、収集されたCloudWatch のメトリクスをAuto Scaling Group で集約(ロールアップ)することにします。副次効果として、カスタムメトリクスが減ることは、コストの削減にも貢献します。
[ec2-user@niikawa-test-webserver ~]$ cd /opt/aws/amazon-cloudwatch-agent/etc
[ec2-user@niikawa-test-webserver etc]$ sudo vi amazon-cloudwatch-agent.json
CloudWatch Agent のサービスを起動します。
[ec2-user@niikawa-test-webserver etc]$ sudo systemctl status amazon-cloudwatch-agent
● amazon-cloudwatch-agent.service - Amazon CloudWatch Agent
Loaded: loaded (/etc/systemd/system/amazon-cloudwatch-agent.service; disabled; vendor preset: disabled)
Active: inactive (dead)
[ec2-user@niikawa-test-webserver etc]$ sudo systemctl enable amazon-cloudwatch-agent
Created symlink from /etc/systemd/system/multi-user.target.wants/amazon-cloudwatch-agent.service to /etc/systemd/system/amazon-cloudwatch-agent.service.
[ec2-user@niikawa-test-webserver etc]$ sudo systemctl start amazon-cloudwatch-agent
[ec2-user@niikawa-test-webserver etc]$ 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 Sun 2023-07-09 05:30:04 UTC; 2s ago
Main PID: 6862 (amazon-cloudwat)
Memory: 82.9M
CGroup: /system.slice/amazon-cloudwatch-agent.service
mq6862 /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agen...
Jul 09 05:30:04 niikawa-test-webserver systemd[1]: Started Amazon CloudWatch ...
Jul 09 05:30:04 niikawa-test-webserver start-amazon-cloudwatch-agent[6862]: I...
Hint: Some lines were ellipsized, use -l to show in full.