Container Insights でメトリクスが欠損している原因と対処法を教えてください

2023.02.01

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

困っていた内容

ECS の監視に Container Insights の利用を検討しています。
タスクの稼働監視にRunningTaskCountメトリクスを使用するつもりでしたが、タスク数が0の場合はメトリクスが欠損しました。
監視システムの都合でタスク数が0のときは、0のメトリクスを記録してほしいのですが、どうしたら良いでしょうか。

どう対応すればいいの?

Metric MathのFILL関数をご利用ください。

Container Insights で作成されるメトリクスは、パフォーマンスログイベントから作成されます。パフォーマンスイベントは Container Insights によって収集され、CloudWatch Logs に保管されていますが、タスク数が0の場合などはイベントが記録されないことが期待されます。

そのため、イベントが記録されない状況ではメトリクスも作成されず、欠損が発生します。

回避策としては、メトリクスに0を補完する数式を適用することで、イベントが記録されないタイミングは0が記録されるメトリクスが作成できます。

やってみた

メトリクスを選択した状態で「数式の追加」を選択します。

すべての関数 -> FILL の順にクリックします。

「詳細」の数式を編集し、FILL(m1, 0)に設定します。
m1は選択していたメトリクスのID列の値を使用します。

RunningTaskCountメトリクスのチェックを外すと、欠損部分が0で補完されたメトリクスが表示されます。
必要に応じてCloudWatch アラーム等を設定してください。

参考資料

Container Insights の使用 - Amazon CloudWatch

Container Insights は、埋め込みメトリクス形式を使用して、パフォーマンスログイベントとしてデータを収集します。このパフォーマンスログイベントは、高濃度データを取り込み、大規模に保存することが可能な構造化された JSON スキーマを使用するエントリです。CloudWatch は、このデータから、クラスター、ノード、ポッド、タスク、サービスのレベルで CloudWatch メトリクスとして集約されたメトリクスを作成します。

ECS タスクとコンテナデプロイをモニタリングするように CloudWatch Container Insights を設定する

Container Insights のパフォーマンスメトリクスは、パフォーマンスログイベントを使用してログの形式で自動的に収集されます。CloudWatch Logs インサイトコンソールを開き、次の形式のロググループを選択します。

/aws/ecs/containerinsights/<<CLUSTER_NAME>/performance