このエントリーをはてなブックマークに追加

2016年11月5日土曜日

AWS CloudWatchのカスタムメトリクスでハマったこと

AWSのCloudWatchでEC2インスタンスのメモリやディスク使用率をモニタリングする際に少しハマったことをブログにします。

まず、EC2のインスタンスを作成しただけでは、メモリやディスクの使用率は通常ではCloudWatchでモニタリングすることができません。
そこで、Amazonから提供されているperlスクリプトをcronで定期的に実行することでモニタリングできるようになります。


*/5 * * * * ~/aws-scripts-mon/mon-put-instance-data.pl --mem-util --disk-space-util --disk-path=/ --from-cron
詳細は、Amazonのサイトをご確認ください。非常に簡単です。

ここまでは、特に問題ないのですが、ハマったポイントはこの後です。
上記の設定をしたEC2インスタンスを作成し、AMIを作ったとします。
その後、そのAMIから別のEC2インスタンを作成します、当然cronも設定済みなので新しいEC2インスタンスの
メモリやディスク使用率もモニタリングできていると思いきやできていません!!

実はmon-put-instance-data.plは、CloudWatchに実行されるEC2のインスタンスIDを送信するのですが、
その際に毎回実行されるEC2のインスタンスIDを取得してから、送信するのではなく、一度取得すると下記のファイルに
キャッシュしてしまい、2回目以降はそのインスタンスIDを送信します。
そのため、AMIから作成すると下記のファイルが残っており、新しく作成されたEC2のインスタンスIDではなく、
AMIのもととなったEC2のインスタンスIDを送信してしまうのです。


/var/tmp/aws-mon/instance-id

対応方法は簡単です。単なるキャッシュですので、思い切ってrmで削除してしまいましょう。

0 件のコメント:

コメントを投稿