Amazon ECS CloudWatch メトリクス - Amazon ECS

Amazon ECS CloudWatch メトリクス

Amazon CloudWatch を使用して Amazon ECS リソースモニタリングすることで、Amazon ECSからraw データを収集して、リアルタイムに近い読み取り可能なメトリクスに加工することができます。これらの統計情報は 2 週間単位で記録されるため、履歴情報にアクセスしてクラスターやサービスの動作をより的確に把握できます。Amazon ECS のメトリクスデータは 1 分間隔で自動的に CloudWatch に送信されます。CloudWatch の詳細については、Amazon CloudWatch ユーザーガイドを参照してください。

Amazon ECS は、クラスターとサービスの CloudWatch メトリクスを収集します。CPU およびメモリ使用率など、タスクごとのメトリクスに対して Amazon ECS CloudWatch コンテナインサイトを有効にする必要があります。コンテナインサイトの詳細については、「Amazon ECS CloudWatch コンテナインサイト」を参照してください。

CloudWatch メトリクスの有効化

Fargate 起動タイプを使用するどの Amazon ECS サービスでも CloudWatch の CPU とメモリの使用率メトリクスが自動的に有効になっているため、手動で有効にする必要はありません。

使用できるメトリクスとディメンション

以下のセクションでは、 Amazon ECS が Amazon CloudWatchに送信するメトリクスとディメンションを一覧表示しています。

Amazon ECS のメトリクス

Amazon ECS には、リソースをモニタリングするためのメトリクスが用意されています。クラスター全体の CPU とメモリの予約率と使用率、およびクラスター内のサービスの CPU とメモリの使用率を測定できます。GPU のワークロードについては、クラスター全体の GPU 予約率を測定できます。

使用可能になるメトリクスは、クラスター内のタスクとサービスの起動タイプに応じて変化します。サービスに Fargate 起動タイプを使用する場合、サービスのモニタリングを支援するための CPU とメモリの使用率メトリクスが提供されます。EC2 起動タイプの場合、Amazon ECS は CPU、メモリ、GPU の予約率、CPU およびメモリの使用率のメトリクスを、クラスターとサービスレベルで提供します。基盤となるインフラストラクチャを構成する Amazon EC2 インスタンスを個別にモニタリングする必要があります。

Amazon ECSは、以下のメトリクスを 1 分ごとに CloudWatch に送信します。Amazon ECS がメトリクスを収集する際は、1 分ごとに、複数のデータポイントを収集します。次に、それらを 1 つのデータポイントに集計してから、データを CloudWatch に送信します。したがって、 CloudWatch では、1 つのサンプル数は実際には 1 分間の複数のデータポイントの集計になります。

AWS/ECS 名前空間には、次のメトリクスが含まれます。

CPUReservation

クラスターでタスクを実行することで予約されている CPU ユニットの割合。

クラスターの CPU 予約率 (このメトリクスは ClusterName でのみフィルタ処理できます) は、クラスター内の Amazon ECS タスクによって予約されている CPU ユニットの合計を、クラスター内のすべてのコンテナインスタンスに登録されている CPU ユニットの合計で割った数として測定されます。ステータスが ACTIVE または DRAINING であるコンテナインスタンスのみが、CPU 予約メトリクスに影響します。このメトリクスは、EC2 起動タイプを使用するタスクにのみ適用されます。

有効なディメンション: ClusterName

有効な統計: 平均、最小、最大、合計、サンプル数。最も有用な統計は Average です。

単位: パーセント。

CPUUtilization

クラスターやサービスで使用されている CPU の割合。

クラスターの CPU 使用率 (このメトリクスは ServiceName を除く ClusterName でフィルタ処理されます) は、クラスター内の Amazon ECS タスクによって使用されている CPU ユニットの合計を、クラスター内のすべてのコンテナインスタンスに登録されている CPU ユニットの合計で割った数として測定されます。ステータスが ACTIVE または DRAINING であるコンテナインスタンスのみが、CPU 使用率メトリクスに影響します。クラスターの CPU 使用率メトリクスは、EC2 起動タイプを使用するタスクにのみ適用されます。

サービスの CPU 使用率 ( ClusterNameServiceName の両方でフィルタリングされたメトリクス) は、サービスに属するタスクで使用されている CPU ユニット数を、サービスに属するタスクで予約されている CPU ユニット数で割った値です。サービスの CPU 使用率メトリクスは、Fargate と EC2 の両方の起動タイプを使用するタスクに適用されます。

有効なディメンション: ClusterNameServiceName

有効な統計: 平均、最小、最大、合計、サンプル数。最も有用な統計は Average です。

単位: パーセント。

MemoryReservation

クラスターでタスクを実行することで予約されているメモリの割合。

クラスターのメモリ予約率 (このメトリクスは ClusterName でのみフィルタ処理できます) は、クラスター内の Amazon ECS タスクによって予約されているメモリの合計を、クラスター内のすべてのコンテナインスタンスに登録されているメモリの合計で割った数として測定されます。ステータスが ACTIVE または DRAINING であるコンテナインスタンスのみが、メモリ予約メトリクスに影響します。このメトリクスは、EC2 起動タイプを使用するタスクにのみ適用されます。

有効なディメンション: ClusterName

有効な統計: 平均、最小、最大、合計、サンプル数。最も有用な統計は Average です。

単位: パーセント。

MemoryUtilization

クラスターやサービスで利用されるメモリの割合。

クラスターのメモリ使用率 (このメトリクスは ServiceName を除く ClusterName でフィルタ処理されます) は、クラスター内の Amazon ECS タスクによって使用されているメモリの合計を、クラスター内のすべてのコンテナインスタンスに登録されているメモリの合計で割った数として測定されます。ステータスが ACTIVE または DRAINING であるコンテナインスタンスのみが、メモリ使用率メトリクスに影響します。クラスターのメモリ使用率メトリクスは、EC2 起動タイプを使用するタスクにのみ適用されます。

サービスメモリの使用率は (メトリクスは ClusterNameServiceName 出フィルタリングされます)、サービスに付属するタスク数をサービスに属するタスクのためのメモリ総数で割った数で使用中の合計メモリを測定します。サービスのメモリ使用率メトリクスは、Fargate と EC2 の両方の起動タイプを使用するタスクに適用されます。

有効なディメンション: ClusterNameServiceName

有効な統計: 平均、最小、最大、合計、サンプル数。最も有用な統計は Average です。

単位: パーセント。

GPUReservation

使用可能な GPUs の合計に対する、クラスター内の実行中のタスクによって予約されている GPU の割合。

クラスター GPUs の予約率は、クラスター内の Amazon ECS タスクによって予約されている GPU の合計を、クラスター内のすべての GPU 対応コンテナインスタンスで使用可能だった GPU の合計で割った数として測定されます。ステータスが ACTIVE または DRAINING であるコンテナインスタンスのみが、GPU 予約メトリクスに影響します。

有効なディメンション: ClusterName

有効な統計: 平均、最小、最大、合計、サンプル数。最も有用な統計は Average です。

単位: パーセント。

注記

EC2 起動タイプを使用するタスク、および Linux コンテナインスタンスがある場合、Amazon ECS コンテナエージェントは Docker stats メトリクスを利用して、インスタンスで実行中の各コンテナの CPU およびメモリデータを収集します。バーストパフォーマンスインスタンス (T3、T3a、および T2 インスタンス) の場合、CPU 使用率メトリクスには、インスタンスレベルの CPU メトリクスとは異なるデータが反映される場合があります。

Amazon ECS メトリクスのディメンション

Amazon ECS メトリックスは AWS/ECS 名前空間を使用し、以下のディメンションのメトリックスを提供しています。ディメンションのメトリクスは、期間中にタスクが実行されているリソースのみを反映します。たとえば、クラスターに 1 つのサービスがあるが、このサービスに RUNNING 状態のタスクがない場合、CloudWatch に送信されるメトリクスはありません。2 つのサービスがあり、1 つに実行中のタスクがあるが、別の 1 つに実行中のタスクがない場合、実行中のタスクがあるサービスのメトリクスのみが送信されます。

ClusterName

このディメンションにより、指定したクラスター内のすべてのリソースから、リクエストしたデータがフィルタ処理されます。すべての Amazon ECS メトリクスは ClusterName でフィルタ処理されます。

ServiceName

このディメンションにより、指定したクラスター内の特定サービスのすべてのリソースから、リクエストしたデータがフィルタ処理されます。

サービス使用率

サービスの使用率は、サービスのタスク定義で指定された CPU およびメモリに対する、クラスターのサービスに属する Amazon ECS タスクによって使用されている CPU とメモリの比率として測定されます。このメトリクスは、Fargate 起動タイプを使用するタスクを含むサービスでサポートされています。

(Total CPU units used by tasks in service) x 100 Service CPU utilization = ---------------------------------------------------------------------------- (Total CPU units specified in task definition) x (number of tasks in service)
(Total MiB of memory used by tasks in service) x 100 Service memory utilization = -------------------------------------------------------------------------------- (Total MiB of memory specified in task definition) x (number of tasks in service)

各タスクに関連付けられている各 の Amazon ECS コンテナエージェントは毎分、のサービスが所有する各タスクで現在使用されている CPU ユニット数とメモリの MiB を計算し、この情報は Amazon ECS にレポートされます。クラスターで実行中のサービスが所有するすべてのタスクで使用されている CPU とメモリの合計が計算され、その数字がサービスのタスク定義でサービス用に指定されたリソースの合計に対する比率として CloudWatch にレポートされます。ソフト制限 (memoryReservation) を指定した場合、予約メモリの容量を計算するためにその制限が使用されます。それ以外の場合は、ハード制限 (memory) が使用されます。ハード制限とソフト制限の詳細については、[Task Definition Parameters] (タスク定義パラメータ) を参照してください。

注記

この例では、CPU 単位がコンテナレベルで定義されている場合に、CPU 使用率が 100% を超えるだけです。タスク・レベルで CPU ユニットを定義した場合、使用率は定義されたタスク・レベルの制限を超えません。

サービスの RUNNING タスク数

CloudWatch メトリクスを使用して、RUNNING 状態のサービス内のタスク数を表示できます。たとえば、このメトリクスに CloudWatch アラームを設定して、サービスで実行中のタスクの数が指定された値を下回った場合にアラートを送信できます。

Amazon ECS CloudWatch Container Insights のサービス RUNNING タスク数

Amazon ECS CloudWatch Container Insights を使用すると、[Number of Running Tasks] (実行中のタスクの数) (RunningTaskCount) メトリクスがクラスターごとおよびサービスごとに利用できます。containerInsights アカウント設定にオプトインして作成されたすべての新しいクラスターのために、クラスター作成時にクラスター設定を使用して有効にすることで個々のクラスターで、または UpdateClusterSettings API を使用して既存のクラスターで、Container Insights を使用できます。CloudWatch Container インサイトによって収集されたメトリクスは、カスタムメトリクスとして課金されます。CloudWatch の料金の詳細については、 CloudWatch の料金をご覧ください。

このメトリクスを表示するには、「Amazon CloudWatch ユーザーガイド」の「Amazon ECS Container Insights のメトリクス」を参照してください。

Amazon ECS が提供するメトリクスからのサービス RUNNING タスク数

ただし、Amazon ECS は、追加コストなしでモニタリングメトリクスを提供します。これらのメトリクスを使用して実行中のタスクをカウントするには、CloudWatch コンソールで以下のステップに従います。

サービスの実行中のタスク数を表示するには

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

  2. ナビゲーションペインで、[Metrics](メトリクス)、[All metrics] (すべてのメトリクス) を選択します。

  3. [Browse] (ブラウズ) タブで、[ECS] (ECS) 名前空間を選択します。

  4. [ClusterName]、[ServiceName] を選択してから、実行中のタスクを表示するサービスに対応したメトリクス (CPUUtilization または MemoryUtilization) を選択します。

  5. [グラフ化したメトリクス] タブで、[期間] を [1 分] に、[統計] を [サンプル数] に変更します。

    グラフに表示された値は、サービスの RUNNING タスクの数を示しています。

    
                                クラスターメトリクスビュー