Amazon ECS サービスの使用率メトリクス
サービス使用率メトリクスは CPU、メモリのほか、タスクに EBS ボリュームがアタッチされている場合は EBS ファイルシステムの使用率にも使用できます。サービスレベルのメトリクスは、Amazon EC2 インスタンスと Fargate の両方でタスクをホストするサービスでサポートされています。
サービスレベルの CPU とメモリの使用率
CPU とメモリの使用率は、サービスのタスク定義で指定された CPU とメモリに対する、クラスターのサービスに属する Amazon ECS タスクによって使用されている CPU とメモリの割合で測定されます。
CloudWatch でこれらのメトリクスを表示する場合、次のさまざまな統計を選択できます。
-
Average: サービス内のすべてのタスクの平均使用率です。これは以下の式を使用して計算されます。
-
Minimum: サービス内のリソース使用量が最も少ないタスクの使用率です。これは、タスク定義で指定されたものと比較して、最もリソースを消費しないタスクで使用される CPU またはメモリのパーセンテージを表します。
-
Maximum: サービス内のリソース使用量が最も多いタスクの使用率です。これは、タスク定義で指定されたものと比較して、最もリソースを消費するタスクで使用される CPU またはメモリのパーセンテージを表します。
次の式は、統計 Average の計算方法を示しています。
(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)
注記
上記の式は、統計 Average にのみ適用されます。統計 Minimum と Maximum は、すべてのタスクの集計計算ではなく、リソース使用率が最も低い個々のタスクと最も高い個々のタスクを表します。
Amazon ECS は 20 秒ごとにメトリクスを収集します。Amazon ECS コンテナエージェントは毎分、サービスが所有する実行タスクのそれぞれで現在使用されている CPU ユニット数とメモリの MiB を計算します。この情報は Amazon ECS に報告されます。クラスターで実行中のサービスが所有するすべてのタスクで使用されている CPU とメモリの合計が計算され、その数字がサービスのタスク定義でサービス用に指定されたリソースの合計に対する比率として CloudWatch にレポートされます。最小値と最大値は、20 秒のメトリクスの最小値と最大値です。平均は 3 つの値の集計です。
ソフト制限 (memoryReservation
) を指定した場合、予約メモリの容量を計算するためにその制限が使用されます。それ以外の場合は、ハード制限 (memory
) が使用されます。ハードリミットとソフトリミットの詳細については、「タスクサイズ」を参照してください。
例えば、サービスのタスク定義で 512 CPU ユニットおよび 1,024 MiB のメモリを (ハードリミットの memory
パラメータとともに) コンテナ全体で指定しているとします。サービスの実行タスクの必要数は 1 であり、1 つの c4.large
コンテナインスタンス (2,048 CPU ユニット、3,768 MiB の合計メモリ) を使用してクラスターで実行されます。また、クラスターで実行されている他のタスクはありません。タスクは 512 CPU ユニットを指定していますが、2,048 CPU ユニットを搭載したコンテナインスタンスで唯一実行されているタスクであるため、指定した量の 4 倍 (2,048/512) まで使用できます。ただし、指定した 1,024 MiB のメモリはハード制限であり、それを超えることはできません。したがってこの場合、サービスのメモリ使用率は 100% を超えることはできません。
前の例で、ハードリミットの memory
パラメータの代わりにソフト制限の memoryReservation
を使用した場合、サービスのタスクでは、必要に応じて指定された 1,024 MiB を超えるメモリを使用できます。この場合、サービスのメモリ使用率が 100% を超える可能性があります。
アプリケーションのメモリ使用率が短時間で突然急上昇した場合、Amazon ECS は毎分複数のデータポイントを収集し、CloudWatch に送信される 1 つのデータポイントに集約するため、サービスメモリ使用率の増加を見ることがありません。
このタスクが一定期間中に CPU 負荷の高い作業を実行し、使用可能な 2,048 CPU ユニットすべてと 512 MiB のメモリを使用している場合、サービスからは CPU 使用率 400%、メモリ使用率 50% としてレポートされます。タスクがアイドル状態で 128 CPU ユニットおよび 128 MiB のメモリを使用している場合、サービスからは CPU 使用率 25%、メモリ使用率 12.5% としてレポートされます。
注記
この例では、CPU 単位がコンテナレベルで定義されている場合に、CPU 使用率が 100% を超えるだけです。タスク・レベルで CPU ユニットを定義した場合、使用率は定義されたタスク・レベルの制限を超えません。
サービスレベルの EBS ファイルシステム使用率
サービスレベルの EBS ファイルシステムの使用率は、サービスに属するタスクによって使用されている EBS ファイルシステムの合計を、サービスに属するすべてのタスクに割り当てられている EBS ファイルシステムストレージの合計で割った値で測定されます。
(Total GB of EBS filesystem used by tasks in the service x 100)
Service EBS filesystem utilization = -----------------------------------------------------------------
(Total GB of EBS filesystem allocated to tasks in the service)
サービスの RUNNING
タスク数
CloudWatch メトリクスを使用して、RUNNING
状態のサービス内のタスク数を表示できます。例えば、このメトリクスに CloudWatch アラームを設定して、サービスで実行中のタスクの数が指定された値を下回った場合にアラートを送信できます。
Amazon ECS CloudWatch Container Insights のサービス RUNNING
タスク数
Amazon ECS CloudWatch Container Insights を使用すると、[Number of Running Tasks] (実行中のタスクの数) (RunningTaskCount
) メトリクスがクラスターごとおよびサービスごとに利用できます。Container Insights は、containerInsights
アカウント設定にオプトインして作成された新しいすべてのクラスターで、またはクラスター作成時にクラスター設定を有効にすることで個々のクラスターで、または UpdateClusterSettings API を使用して既存のクラスターで、使用できます。CloudWatch Container インサイトによって収集されたメトリクスは、カスタムメトリクスとして課金されます。CloudWatch の料金の詳細については、 CloudWatch の料金
このメトリクスを表示するには、「Amazon CloudWatch ユーザーガイド」の「Amazon ECS Container Insights のメトリクス」を参照してください。