Amazon ECS CloudWatch のメトリクス
Amazon CloudWatch を使用して、Amazon ECS リソースをモニタリングすることで Amazon ECS から raw データを収集し、リアルタイムに近い読み取り可能なメトリクスに加工することができます。これらの統計情報は 2 週間記録されるため、履歴情報にアクセスしてクラスターまたはサービスの動作をより的確に把握できます。Amazon ECS メトリクスデータは 1 分間隔で CloudWatch に自動的に送信されます。CloudWatch の詳細については、「Amazon CloudWatch ユーザーガイド」を参照してください。
CloudWatch メトリクスを有効にする
Fargate 起動タイプを使用するどの Amazon ECS サービスでも CloudWatch の CPU とメモリの使用率メトリクスが自動的に有効になっているため、手動で有効にする必要はありません。
使用できるメトリクスとディメンション
以下のセクションでは、Amazon ECS が Amazon CloudWatch に送信するメトリクスとディメンションを一覧表示しています。
Amazon ECS のメトリクス
Amazon ECS には、リソースをモニタリングするためのメトリクスが用意されています。クラスター全体の CPU とメモリの予約率と使用率、およびクラスター内のサービスの CPU とメモリの使用率を測定できます。GPU のワークロードについては、クラスター全体の GPU 予約率を測定できます。
使用可能になるメトリクスは、クラスター内のタスクとサービスの起動タイプに応じて変化します。サービスに Fargate 起動タイプを使用する場合、サービスのモニタリングを支援するための CPU とメモリの使用率メトリクスが提供されます。EC2 起動タイプの場合、基盤となるインフラストラクチャを構成する Amazon EC2 インスタンスの所有者となるため、それらのインスタンスをモニタリングする必要があります。したがって、追加の CPU、メモリ、GPU の予約率、CPU とメモリの使用率メトリクスが、クラスター、サービス、タスクの各レベルで使用可能になっています。
Amazon ECS は以下のメトリクスを 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 使用率 (
ClusterName
とServiceName
の両方でフィルタリングされたメトリクス) は、サービスに属するタスクで使用されている CPU ユニット数を、サービスに属するタスクで予約されている CPU ユニット数で割った値です。サービスの CPU 使用率メトリクスは、Fargate と EC2 の両方の起動タイプを使用するタスクに適用されます。有効なディメンション:
ClusterName
、ServiceName
。有効な統計: 平均、最小、最大、合計、サンプル数。最も有用な統計は Average です。
単位: パーセント。
MemoryReservation
-
クラスターでタスクを実行することで予約されているメモリの割合。
クラスターのメモリ予約率 (このメトリクスは
ClusterName
でのみフィルタ処理できます) は、クラスター内の Amazon ECS タスクによって予約されているメモリの合計を、クラスター内のすべてのコンテナインスタンスに登録されているメモリの合計で割った数として測定されます。ステータスがACTIVE
またはDRAINING
であるコンテナインスタンスのみが、メモリ予約メトリクスに影響します。このメトリクスは、EC2 起動タイプを使用するタスクにのみ適用されます。有効なディメンション:
ClusterName
。有効な統計: 平均、最小、最大、合計、サンプル数。最も有用な統計は Average です。
単位: パーセント。
MemoryUtilization
-
クラスターやサービスで利用されるメモリの割合。
クラスターのメモリ使用率 (このメトリクスは
ServiceName
を除くClusterName
でフィルタ処理されます) は、クラスター内の Amazon ECS タスクによって使用されているメモリの合計を、クラスター内のすべてのコンテナインスタンスに登録されているメモリの合計で割った数として測定されます。ステータスがACTIVE
またはDRAINING
であるコンテナインスタンスのみが、メモリ使用率メトリクスに影響します。クラスターのメモリ使用率メトリクスは、EC2 起動タイプを使用するタスクにのみ適用されます。サービスメモリの使用率は (メトリクスは
ClusterName
とServiceName
出フィルタリングされます)、サービスに付属するタスク数をサービスに属するタスクのためのメモリ総数で割った数で使用中の合計メモリを測定します。サービスのメモリ使用率メトリクスは、Fargate と EC2 の両方の起動タイプを使用するタスクに適用されます。有効なディメンション:
ClusterName
、ServiceName
。有効な統計: 平均、最小、最大、合計、サンプル数。最も有用な統計は Average です。
単位: パーセント。
GPUReservation
-
使用可能な GPU の合計に対する、クラスター内の実行中のタスクによって予約されている GPU の割合。
クラスターの GPU 予約率は、クラスター内の 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
) が使用されます。ハード制限とソフト制限の詳細については、「タスク定義パラメータ」を参照してください。
サービスの RUNNING
タスク数
CloudWatch メトリクスを使用して、RUNNING
状態のサービス内のタスク数を表示できます。たとえば、このメトリクスに CloudWatch アラームを設定して、サービスで実行中のタスクの数が指定された値を下回った場合にアラートを送信できます。
サービスの実行中のタスク数を表示するには
-
https://console.aws.amazon.com/cloudwatch/
にある CloudWatch コンソールを開きます。 -
ナビゲーションペインで [Metrics (メトリクス)] を選択します。
-
[All metrics] タブで、[ECS] を選択します。
-
[ClusterName]、[ServiceName] を選択してから、実行中のタスクを表示するサービスに対応したメトリクス (
CPUUtilization
またはMemoryUtilization
) を選択します。 -
[グラフ化したメトリクス] タブで、[期間] を [1 分] に、[統計] を [サンプル数] に変更します。
グラフに表示された値は、サービスの
RUNNING
タスクの数を示しています。