Amazon EKS と Kubernetes のパフォーマンスログイベントの関連フィールド - Amazon CloudWatch

Amazon EKS と Kubernetes のパフォーマンスログイベントの関連フィールド

Amazon EKS および Kubernetes では、コンテナ化された CloudWatch エージェントは、パフォーマンスログイベントとしてデータを出力します。これにより、CloudWatch は高カーディナリティのデータを取り込み、保存することができます。CloudWatch は、パフォーマンスログイベントのデータを使用して、詳細を失うことなく、クラスター、ノード、ポッドレベルで、集計された CloudWatch メトリクスを作成します。

以下の表は、Container Insights メトリクスデータの収集に関連する、これらのパフォーマンスログイベントのフィールドを示しています。CloudWatch Logs Insights を使用して、これらの任意のフィールドをクエリし、データを収集したり、問題を調査したりできます。詳細については、「CloudWatch Logs Insights を使用したログデータの分析」を参照してください。

タイプ ログフィールド 送信元 計算式またはコメント

ポッド

pod_cpu_utilization

計算

計算式: pod_cpu_usage_total / node_cpu_limit

ポッド

pod_cpu_usage_total

pod_cpu_usage_total はミリコア単位で報告されます。

cadvisor

ポッド

pod_cpu_limit

計算

計算式: sum(container_cpu_limit)

sum(container_cpu_limit) には、既に完成したポッドが含まれます。

ポッドのいずれかのコンテナで、定義された CPU 制限がない場合、このフィールドはログイベントに表示されません。これには初期化コンテナが含まれます。

ポッド

pod_cpu_request

計算

計算式: sum(container_cpu_request)

container_cpu_request の設定は保証されません。設定されているもののみが合計に含まれます。

ポッド

pod_cpu_utilization_over_pod_limit

計算

計算式: pod_cpu_usage_total / pod_cpu_limit

ポッド

pod_cpu_reserved_capacity

計算

計算式: pod_cpu_request / node_cpu_limit

ポッド

pod_memory_utilization

計算

計算式: pod_memory_working_set / node_memory_limit

これは、ノードのメモリ制限に対する Pod メモリ使用量の割合です。

ポッド

pod_memory_working_set

cadvisor

ポッド

pod_memory_limit

計算

計算式: sum(container_memory_limit)

ポッドのいずれかのコンテナに、定義されたメモリ制限がない場合、このフィールドはログイベントに表示されません。これには初期化コンテナが含まれます。

ポッド

pod_memory_request

計算

計算式: sum(container_memory_request)

container_memory_request の設定は保証されません。設定されているもののみが合計に含まれます。

ポッド

pod_memory_utilization_over_pod_limit

計算

計算式: pod_memory_working_set / pod_memory_limit

ポッドのいずれかのコンテナに、定義されたメモリ制限がない場合、このフィールドはログイベントに表示されません。これには初期化コンテナが含まれます。

ポッド

pod_memory_reserved_capacity

計算

計算式: pod_memory_request / node_memory_limit

ポッド

pod_network_tx_bytes

計算

計算式: sum(pod_interface_network_tx_bytes)

このデータは、ポッドごとにすべてのネットワークインターフェイスで使用できます。CloudWatch エージェントが合計を計算し、メトリクス抽出ルールを追加します。

ポッド

pod_network_rx_bytes

計算

計算式: sum(pod_interface_network_rx_bytes)

ポッド

pod_network_total_bytes

計算

計算式: pod_network_rx_bytes + pod_network_tx_bytes

PodNet

pod_interface_network_rx_bytes

cadvisor

このデータは、ポッドネットワークインターフェイスの 1 秒あたりのネットワーク rx バイトです。

PodNet

pod_interface_network_tx_bytes

cadvisor

このデータは、ポッドネットワークインターフェイスの 1 秒あたりのネットワーク tx バイトです。

コンテナ

container_cpu_usage_total

cadvisor

コンテナ

container_cpu_limit

cadvisor

設定は保証されていません。設定されていない場合は出力されません。

コンテナ

container_cpu_request

cadvisor

設定は保証されていません。設定されていない場合は出力されません。

コンテナ

container_memory_working_set

cadvisor

コンテナ

container_memory_limit

ポッド

設定は保証されていません。設定されていない場合は出力されません。

コンテナ

container_memory_request

ポッド

設定は保証されていません。設定されていない場合は出力されません。

ノード

node_cpu_utilization

計算

計算式: node_cpu_usage_total / node_cpu_limit

ノード

node_cpu_usage_total

cadvisor

ノード

node_cpu_limit

/proc

ノード

node_cpu_request

計算

計算式: sum(pod_cpu_request)

CronJob の場合、node_cpu_request には完了したポッドからのリクエストも含まれます。これにより、node_cpu_reserved_capacity の値が高くなる可能性があります。

ノード

node_cpu_reserved_capacity

計算

計算式: node_cpu_request / node_cpu_limit

ノード

node_memory_utilization

計算

計算式: node_memory_working_set / node_memory_limit

ノード

node_memory_working_set

cadvisor

ノード

node_memory_limit

/proc

ノード

node_memory_request

計算

計算式: sum(pod_memory_request)

ノード

node_memory_reserved_capacity

計算

計算式: node_memory_request / node_memory_limit

ノード

node_network_rx_bytes

計算

計算式: sum(node_interface_network_rx_bytes)

ノード

node_network_tx_bytes

計算

計算式: sum(node_interface_network_tx_bytes)

ノード

node_network_total_bytes

計算

計算式: node_network_rx_bytes + node_network_tx_bytes

ノード

node_number_of_running_pods

ポッドリスト

ノード

node_number_of_running_containers

ポッドリスト

NodeNet

node_interface_network_rx_bytes

cadvisor

このデータは、ワーカーノードネットワークインターフェイスの 1 秒あたりのネットワーク rx バイトです。

NodeNet

node_interface_network_tx_bytes

cadvisor

このデータは、ワーカーノードネットワークインターフェイスの 1 秒あたりのネットワーク tx バイトです。

NodeFS

node_filesystem_capacity

cadvisor

NodeFS

node_filesystem_usage

cadvisor

NodeFS

node_filesystem_utilization

計算

計算式: node_filesystem_usage / node_filesystem_capacity

このデータはデバイス名ごとに使用できます。

クラスター

cluster_failed_node_count

API サーバー

クラスター

cluster_node_count

API サーバー

サービス

service_number_of_running_pods

API サーバー

Namespace

namespace_number_of_running_pods

API サーバー

メトリクスの計算例

このセクションには、前述の表の一部の値を計算する方法を示す例が含まれています。

次の状態のクラスターがあるとします。

Node1 node_cpu_limit = 4 node_cpu_usage_total = 3 Pod1 pod_cpu_usage_total = 2 Container1 container_cpu_limit = 1 container_cpu_request = 1 container_cpu_usage_total = 0.8 Container2 container_cpu_limit = null container_cpu_request = null container_cpu_usage_total = 1.2 Pod2 pod_cpu_usage_total = 0.4 Container3 container_cpu_limit = 1 container_cpu_request = 0.5 container_cpu_usage_total = 0.4 Node2 node_cpu_limit = 8 node_cpu_usage_total = 1.5 Pod3 pod_cpu_usage_total = 1 Container4 container_cpu_limit = 2 container_cpu_request = 2 container_cpu_usage_total = 1

以下の表は、このデータを使用してポッド CPU メトリクスがどのように計算されるかを示しています。

メトリクス 計算式 Pod1 Pod2 Pod3

pod_cpu_utilization

pod_cpu_usage_total / node_cpu_limit

2 / 4 = 50%

0.4 / 4 = 10%

1 / 8 = 12.5%

pod_cpu_utilization_over_pod_limit

pod_cpu_usage_total / sum(container_cpu_limit)

該当なし (Container2 の CPU 制限が定義されていないため)

0.4 / 1 = 40%

1 / 2 = 50%

pod_cpu_reserved_capacity

sum(container_cpu_request) / node_cpu_limit

(1 + 0) / 4 = 25%

0.5 / 4 = 12.5%

2 / 8 = 25%

以下の表は、このデータを使用してノードの CPU メトリクスがどのように計算されるかを示しています。

メトリクス 計算式 Node1 Node2

node_cpu_utilization

node_cpu_usage_total / node_cpu_limit

3 / 4 = 75%

1.5 / 8 = 18.75%

node_cpu_reserved_capacity

sum(pod_cpu_request) / node_cpu_limit

1.5 / 4 = 37.5%

2 / 8 = 25%