読者です 読者をやめる 読者になる 読者になる

EC2インスタンスがCloundWatchにカスタムメトリクスの情報を送信してくれなかった

CloudWatchでEC2インスタンスのメモリ情報とかをモニタリングしたいと思った時にうまく行かなかった時のメモ。

流れとしてはこのような感じです。

  1. 必要な情報(メモリ使用率とか)をCloudWatchに送信する設定が完了したインスタンスを作成
  2. 作成したインスタンスをAMIに
  3. 作成したAMIから新しいインスタンスを起動

これだけで新しく作成したインスタンスも自身の情報を送信してくれるようになると思ったのですが、作成したインスタンスのパフォーマンスがCloudWatchに反映されず。
1で作成、設定したインスタンスは正常にパフォーマンス情報の送信が出来ている状態です。

原因

情報の送信に必要なCloudWatchClient.pmモジュールが、インスタンスメタデータをローカルでキャッシュしていて、新しく作成したインスタンスの方でもそのキャッシュを使用して情報の送信を行っていました。
結果として、1で作成したインスタンスインスタンスIDでメトリクスを出力していたということになります。
つまり情報を送信してなかったのではなく、送信元情報が間違っていた、ということです。

解決策

次のコマンドで、送信元インスタンスIDのキャッシュを削除します。

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

ちなみに、デフォルトではこのキャッシュの生存時間は6時間らしいので、6時間経てば正しい情報を送ってくれるようになります。