Container Insights メトリクスの表示 - Amazon CloudWatch

Container Insights メトリクスの表示

Container Insights を設定してメトリクスを収集したら、CloudWatch コンソールでそれらのメトリクスを表示できます。

Container Insights のメトリクスがダッシュボードに表示されるようにするには、Container Insights のセットアップを完了する必要があります。詳細については、「Container Insights の設定」を参照してください。

この手順では、収集したログデータから Container Insights が自動的に生成するメトリクスを表示する方法について説明します。このセクションの残りの部分では、データについてさらに詳しく把握し、 CloudWatch Logs Insights を使用して、より詳細なレベルでより多くのメトリクスを表示する方法について説明します。

Container Insights のメトリクスを表示するには

  1. CloudWatch コンソール (https://console.aws.amazon.com/cloudwatch/) を開きます。

  2. ナビゲーションペインで、[パフォーマンスのモニタリング] を選択します。

  3. 上部近くにあるドロップダウンボックスを使用して、表示するリソースのタイプと特定のリソースを選択します。

Container Insights が収集する任意のメトリクスに CloudWatch アラームを設定できます。詳細については、「Amazon CloudWatch アラームを使用する」を参照してください。

寄与度が上位の要素の表示

Container Insights によるパフォーマンスモニタリングの一部のビューでは、メモリまたは CPU、または最近アクティブにされたリソース別に、寄与度が高い要素を表示することもできます。これは、ページの上部近くにあるドロップダウンボックスで、次のいずれかのダッシュボードを選択すると表示されます。

  • ECS サービス

  • ECS タスク

  • EKS 名前空間

  • EKS サービス

  • EKS ポッド

これらのリソースタイプから 1 つを表示すると、初期状態では CPU 使用率でソートされた表がページの下部に表示されます。この表は、メモリの使用量または最近のアクティビティでソートするように変更できます。表内の 1 つの行の詳細を表示するには、その行の横にあるチェックボックスをオンにし、[アクション] をクリックします。その後で、開いた [アクション] メニューからオプションの 1 つを選択します。

CloudWatch Logs Insights を使用して Container Insights データを表示する

Container Insights は、埋め込みメトリクス形式を使用して、パフォーマンスログイベントでメトリクスを収集します。ログは CloudWatch Logs に保存されます。CloudWatch は、CloudWatch コンソールで表示できるログから複数のメトリクスを自動的に生成します。また、CloudWatch Logs Insight クエリを使用して収集されるパフォーマンスデータをより深く分析することもできます。

CloudWatch Logs Insights の詳細については、「CloudWatch Logs Insights を使用したログデータの分析」を参照してください。クエリで使用できるログフィールドの詳細については、「Amazon EKS および Kubernetes の Container Insights パフォーマンスログイベント」を参照してください。

CloudWatch Logs Insights を使用してコンテナメトリクスデータをクエリするには

  1. CloudWatch コンソール (https://console.aws.amazon.com/cloudwatch/) を開きます。

  2. ナビゲーションペインで、[Insights] を選択します。

    画面の上部にクエリエディタがあります。CloudWatch Logs Insights を初めて開くと、このボックスにデフォルトクエリが表示されます。デフォルトでは、最新の 20 件のログイベントが返されます。

  3. クエリエディタの上部にあるボックスで、クエリの対象となるいずれかの Container Insights ロググループを選択します。次の例のクエリが機能するためには、ロググループ名が performance で終わる必要があります。

    ロググループを選択すると、CloudWatch Logs Insights はロググループのデータのフィールドを自動的に検出し、右側のペインの [Discovered fields (検出済みフィールド)] に表示します。また、このロググループのログイベントを時間の経過に従って棒グラフで表示します。この棒グラフは、表に示されるイベントだけでなく、クエリと時間範囲に一致するロググループ内のイベントの分布を示します。

  4. クエリエディタで、デフォルトのクエリを次のクエリで置き換え、[クエリの実行] を選択します。

    STATS avg(node_cpu_utilization) as avg_node_cpu_utilization by NodeName | SORT avg_node_cpu_utilization DESC

    このクエリでは、ノードの平均 CPU 使用率でソートされたノードのリストが表示されます。

  5. 別の例を試すには、このクエリを別のクエリに置き換え、[Run query (クエリの実行)] を選択します。その他のサンプルクエリについては、このページの後半で示します。

    STATS avg(number_of_container_restarts) as avg_number_of_container_restarts by PodName | SORT avg_number_of_container_restarts DESC

    このクエリでは、コンテナ再起動の平均数によってソートされたポッドのリストが表示されます。

  6. 別のクエリを試す場合は、画面の右にあるリストのインクルードフィールドを選択できます。クエリ構文の詳細については、「CloudWatch Logs Insights クエリ構文」を参照してください。

リソースのリストを表示するには

  1. CloudWatch コンソール (https://console.aws.amazon.com/cloudwatch/) を開きます。

  2. ナビゲーションペインで、[Resources (リソース)] を選択します。

  3. デフォルトのビューは、Container Insights によってモニタリングされているリソースと、それらのリソースに対して設定したアラームのリストです。リソースの視覚的なマップを表示するには、[Map view (マップビュー)] を選択します。

  4. マップビューから、マップ内の任意のリソースの上にポインタを置くと、そのリソースに関する基本的なメトリクスを表示できます。任意のリソースを選択して、そのリソースに関するより詳細なグラフを表示できます。

ユースケース: Amazon ECS コンテナでのタスクレベルのメトリクスの表示

次の例は、CloudWatch Logs Insights を使用して Container Insights のログをより詳しく調べる方法を示しています。他の例については、ブログ記事「Amazon ECS 向け Amazon CloudWatch Container Insights のご紹介」をご覧ください。

Container Insights は、タスクレベルの詳細度でメトリクスを自動的に生成しません。次のクエリは、CPU およびメモリ使用量のタスクレベルのメトリクスを表示します。

stats avg(CpuUtilized) as CPU, avg(MemoryUtilized) as Mem by TaskId, ContainerName | sort Mem, CPU desc

Container Insights のその他のサンプルクエリ

コンテナの再起動の平均回数順にソートされるポッドのリスト

STATS avg(number_of_container_restarts) as avg_number_of_container_restarts by PodName | SORT avg_number_of_container_restarts DESC

リクエストされたポッドと実行中のポッドの比較

fields @timestamp, @message | sort @timestamp desc | filter Type="Pod" | stats min(pod_number_of_containers) as requested, min(pod_number_of_running_containers) as running, ceil(avg(pod_number_of_containers-pod_number_of_running_containers)) as pods_missing by kubernetes.pod_name | sort pods_missing desc

クラスターノードの障害数

stats avg(cluster_failed_node_count) as CountOfNodeFailures | filter Type="Cluster" | sort @timestamp desc

コンテナ名別のアプリケーションログエラー

stats count() as countoferrors by kubernetes.container_name | filter stream="stderr" | sort countoferrors desc

コンテナ名別のディスク使用状況

stats floor(avg(container_filesystem_usage/1024)) as container_filesystem_usage_avg_kb by InstanceId, kubernetes.container_name, device | filter Type="ContainerFS" | sort container_filesystem_usage_avg_kb desc

コンテナ名ごとの CPU 使用率

stats pct(container_cpu_usage_total, 50) as CPUPercMedian by kubernetes.container_name | filter Type="Container"