Container Insights でメトリクスが欠損している原因と対処法を教えてください
困っていた内容
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
- CloudWatch Alarm で、アラーム状態になったまましばらくOK状態に戻りません。原因と対処法を教えてください | DevelopersIO
- Metric Math を使用する - Amazon CloudWatch
- Container Insights を使用して Amazon ECS コンテナをモニタリングする - Amazon Elastic Container Service
CloudWatch Container Insights のメトリクスは、指定した期間中にタスクが実行されているリソースのみを反映します。例えば、クラスターに 1 つのサービスがあるが、このサービスに RUNNING 状態のタスクがない場合、CloudWatch に送信されるメトリクスはありません。