身近で結構ハマる人が多かったので書いておきます。
Question
例えばELBだとCloudWatchのELB監視項目 - Qiitaのようなメトリックスが取得できるはずだけど存在しないものがあるのはなぜ?
特にELBだとHTTPCode_ELB_5XXとかHTTPCode_Backend_5XX、SurgeQueueLengthなんかが存在しない場合が多い。
Answer
対象の現象が発生していないのでデータがない。
もしくは、過去には発生していたがCloudWatchの保持期限である2週間立をこえて発生していなかったのでデータが削除されてない。
データがないとメトリックスは存在しない。
例えば、HTTPCode_ELB_5XXやHTTPCode_Backend_5XXだとELBやバックエンドのEC2で5XXのステータスコードが発生していない。
どうやらELBは監視間隔ごとにCloudWatchに5XXの発生回数を送っていているわけではないらしい。
発生していない時は0回というデータを送っているわけではなく、1回以上発生した時にのみデータを送っているらしい。
TIPS
APIなどでCloudWatchのメトリックスを取得する際、そのメトリックスがあるはずなのに存在しないような場合は値を0として扱うようなことが必要。