Kube 状態指標を使用する


Google Cloud Managed Service for Prometheus を使用すると、Pod や Deployment などの指標を含む、厳選された Kube 状態指標セットを Cloud Monitoring に送信するように Google Kubernetes Engine(GKE)クラスタを構成できます。このドキュメントでは、Cloud Monitoring に書き込まれる際の指標の形式とクエリの方法について説明します。このドキュメントでは、各セットの指標の一覧表と、指標の使用方法についても説明します。

kube 状態指標を使用するには、コレクションを有効にする必要があります。

指標の形式

Cloud Monitoring に書き込まれる Kubernetes kube 状態指標はすべてリソースタイプ prometheus_target を使用します。各指標名には接頭辞 prometheus.googleapis.com/ が使用され、Prometheus 指標タイプ(/gauge/histogram/counter など)を示す接尾辞が付いています。それ以外の場合、各指標名はオープンソースの Kubernetes によって公開される指標名と同一です。

Cloud Monitoring からのエクスポート

Kube 状態指標は、Cloud Monitoring API を使用して Cloud Monitoring からエクスポートできます。すべての kube 状態指標は Google Cloud Managed Service for Prometheus を使用して取り込まれるため、kube 状態指標は Prometheus Query Language(PromQL)を使用してクエリできます。Monitoring Query Language(MQL)を使用してクエリすることもできます。

指標のクエリ

kube 状態指標のクエリで使用する名前は、PromQL と Cloud Monitoring ベースの機能(MQL、Metrics Explorer のメニュー形式のインターフェースなど)のどちらを使用するかによって異なります。

次の kube 状態指標の表では、指標名を次の 2 つのバージョンで示しています。

  • PromQL の指標名: Google Cloud コンソールの Cloud Monitoring ページまたは Cloud Monitoring API の PromQL フィールドで PromQL を使用する場合は、PromQL の指標名を使用します。
  • Cloud Monitoring の指標名: 他の Monitoring 機能を使用する場合は、以下の表の Cloud Monitoring の指標名を使用します。この名前には prometheus.googleapis.com/ を付ける必要があります(表中の項目では省略されています)。

ストレージ指標

この表の Cloud Monitoring の指標名には、prometheus.googleapis.com/ という接頭辞を付ける必要があります。この接頭辞は、表中の項目では省略されています。

PromQL の指標名
Cloud Monitoring の指標名
種類、タイプ、単位
モニタリング対象リソース
必要な GKE バージョン
説明
ラベル
kube_persistentvolume_capacity_bytes
kube_persistentvolume_capacity_bytes/gauge
GAUGEDOUBLEBy
prometheus_target
1.27.2-gke.1200
Persistentvolume の容量(バイト単位)。30 秒ごとにサンプリングされます。

persistentvolume: persistentvolume.
kube_persistentvolume_claim_ref
kube_persistentvolume_claim_ref/gauge
GAUGEDOUBLE1
prometheus_target
1.27.2-gke.1200
永続ボリュームのクレーム参照に関する情報。30 秒ごとにサンプリングされます。

claim_name: claim_name.
name: name.
persistentvolume: persistentvolume.
kube_persistentvolume_info
kube_persistentvolume_info/gauge
GAUGEDOUBLE1
prometheus_target
1.27.2-gke.1200
persistentvolume に関する情報。30 秒ごとにサンプリングされます。

csi_driver: csi_driver.
csi_volume_handle: csi_volume_handle.
local_fs: local_fs.
local_path: local_path.
persistentvolume: persistentvolume.
storageclass: storageclass.
kube_persistentvolume_status_phase
kube_persistentvolume_status_phase/gauge
GAUGEDOUBLE1
prometheus_target
1.27.2-gke.1200
フェーズは、ボリュームが使用可能か、クレームにバインドされているか、クレームによってリリースされているかを示します。30 秒ごとにサンプリングされます。

persistentvolume: persistentvolume.
phase: phase.
kube_persistentvolumeclaim_info
kube_persistentvolumeclaim_info/gauge
GAUGEDOUBLE1
prometheus_target
1.27.2-gke.1200
永続ボリュームのクレームに関する情報。30 秒ごとにサンプリングされます。

persistentvolumeclaim: persistentvolumeclaim.
storageclass: storageclass.
volumename: volumename.
kube_persistentvolumeclaim_resource_requests_storage_bytes
kube_persistentvolumeclaim_resource_requests_storage_bytes/gauge
GAUGEDOUBLEBy
prometheus_target
1.27.2-gke.1200
永続ボリュームのクレームでリクエストされたストレージ容量。30 秒ごとにサンプリングされます。

persistentvolumeclaim: persistentvolumeclaim.
kube_persistentvolumeclaim_status_phase
kube_persistentvolumeclaim_status_phase/gauge
GAUGEDOUBLE1
prometheus_target
1.27.2-gke.1200
永続ボリュームのクレームの現在のフェーズ。30 秒ごとにサンプリングされます。

persistentvolumeclaim: persistentvolumeclaim.
phase: phase.

詳細については、PersistentVolume 指標PersistentVolumeClaim 指標をご覧ください。

Pod の指標

Pod とは、ストレージとネットワーク リソースを共有するコンテナの実行方法の仕様を備えた 1 つ以上のコンテナのグループです。

Pod の指標の表

Pod の指標を使用すると、Pod の動作のモニタリングとアラートの作成を行うことができます。次の表に、Kube 状態指標パッケージで使用可能な指標を示します。

この表の Cloud Monitoring の指標名には、prometheus.googleapis.com/ という接頭辞を付ける必要があります。この接頭辞は、表中の項目では省略されています。

PromQL の指標名
Cloud Monitoring の指標名
種類、タイプ、単位
モニタリング対象リソース
必要な GKE バージョン
説明
ラベル
kube_pod_container_status_ready
kube_pod_container_status_ready/gauge
GAUGEDOUBLE1
prometheus_target
1.27.2-gke.1200
コンテナ readiness チェックが成功したかどうかを示します。30 秒ごとにサンプリングされます。

container: container.
pod: pod.
uid: uid.
kube_pod_container_status_waiting_reason
kube_pod_status_container_status_waiting_reason/gauge
GAUGEDOUBLE1
prometheus_target
1.27.2-gke.1200
コンテナが待機状態になっている理由を示します。30 秒ごとにサンプリングされます。

container: container.
pod: pod.
reason: reason.
uid: uid.
kube_pod_status_phase
kube_pod_status_phase/gauge
GAUGEDOUBLE1
prometheus_target
1.27.2-gke.1200
Pod の現在のフェーズ。30 秒ごとにサンプリングされます。

phase: phase.
pod: pod.
uid: uid.
kube_pod_status_unschedulable
kube_pod_status_unschedulable/gauge
GAUGEDOUBLE1
prometheus_target
1.27.2-gke.1200
Pod のスケジューリング不可ステータスを示します。30 秒ごとにサンプリングされます。

pod: pod.
uid: uid.

詳細については、Pod の指標をご覧ください。

Pod の指標のサンプルクエリ

スケジュール不可の Pod があるかどうかを確認するには、次の PromQL 式を使用します。

sum(kube_pod_status_unschedulable{cluster="CLUSTER", namespace="NAMESPACE"})

Namespace 内のスケジュール不可の Pod の数に対してアラートを出すには、次の PromQL 式を使用します。

sum(kube_pod_status_unschedulable{cluster="CLUSTER", namespace="NAMESPACE"}) > LIMIT

kube_pod_container_status_waiting_reason 指標で、次のような PromQL 式を使用して、特定の待機状態で停止しているコンテナに対するアラートを作成できます。

max_over_time(kube_pod_container_status_waiting_reason{reason="REASON", cluster="CLUSTER", namespace="NAMESPACE"}[5m]) >= 1

REASON の値は、コンテナの待機状態を指定します。次に例を示します。

  • CrashLoopBackOff
  • ImagePullBackOff
  • ContainerCreating

いずれかの待機状態で停止したコンテナのアラートを作成するには、次の PromQL 式を使用します。

max_over_time(kube_pod_container_status_waiting_reason{cluster="CLUSTER", namespace="NAMESPACE"}[5m]) >= 1

readiness チェックに失敗したコンテナの数を確認するには、次の PromQL 式を使用します。

sum(kube_pod_container_status_ready) by (pod, container) == 0

このセクションのクエリとアラートの式の一部は、GitHub の Prometheus コミュニティ Kubernetes Helm チャート リポジトリの kubernetes-apps.yaml ファイルから使用されています。

インタラクティブ ハンドブック

Kube 状態指標は、スケジュール不可の Pod またはクラッシュ ループの Pod のトラブルシューティングに、GKE インタラクティブ ハンドブックでも使用されます。これらの障害モードの詳細については、次のトラブルシューティングのドキュメントをご覧ください。

Kube 状態指標パッケージが有効になっていない場合、Pod のスケジューリングの問題を検出する主な方法は、「Failed Scheduling」ログイベントのクエリを行うことです。Kube 状態指標パッケージを有効にすると、kube_pod_status_unschedulable 指標を使用できます。これは同じ目的を果たしますが、集計とグラフ化が簡単になります。この指標を使用すると、スケジュールできない Pod の数と、問題が発生した日時を確認できます。

同様に、GKE システム指標 kubernetes.io/container/restart_count を使用して、クラッシュ ループの Pod を検出できます。kube_pod_container_status_waiting_reason 指標でもクラッシュループの Pod を列挙して、Pod が CrashLookBackOff 以外の待機状態(ImagePullBackOffContainerCreating など)で停止しているかどうかを判断することもできます。

インタラクティブ ハンドブックを探すには、次の操作を行います。

  1. Google Cloud コンソールのナビゲーション パネルで、[Monitoring] を選択してから、[ダッシュボード] を選択します。

    [ダッシュボード] に移動

  2. [GCP] カテゴリをクリックして、ダッシュボード リストをフィルタリングします。
  3. リスト内の「GKE Interactive Playbook」ダッシュボードの名前をクリックします。

Deployment の指標

Deployment は、Pod などのリソースの状態を更新して、ロールアウトや停止といったイベントを管理するコントローラです。

Deployment の指標の表

Deployment の指標を使用すると、コントローラの動作のモニタリングとアラートの作成を行うことができます。次の表に、Kube 状態指標パッケージで使用可能な指標を示します。

この表の Cloud Monitoring の指標名には、prometheus.googleapis.com/ という接頭辞を付ける必要があります。この接頭辞は、表中の項目では省略されています。

PromQL の指標名
Cloud Monitoring の指標名
種類、タイプ、単位
モニタリング対象リソース
必要な GKE バージョン
説明
ラベル
kube_deployment_spec_replicas
kube_deployment_spec_replicas/gauge
GAUGEDOUBLE1
prometheus_target
1.27.2-gke.1200
Deployment に必要な Pod の数。30 秒ごとにサンプリングされます。

deployment: deployment.
kube_deployment_status_replicas_available
kube_deployment_status_replicas_available/gauge
GAUGEDOUBLE1
prometheus_target
1.27.2-gke.1200
Deployment ごとの使用可能なレプリカの数。30 秒ごとにサンプリングされます。

deployment: deployment.
kube_deployment_status_replicas_updated
kube_deployment_status_replicas_updated/gauge
GAUGEDOUBLE1
prometheus_target
1.27.2-gke.1200
Deployment ごとの更新されたレプリカの数。30 秒ごとにサンプリングされます。

deployment: deployment.

詳細については、Deployment の指標をご覧ください。

Deployment の指標のサンプルクエリ

Deployment の指標をクラスタ、Namespace、Deployment の名前でフィルタすることで、個々の Deployment のグラフとアラート ポリシーを作成できます。

たとえば、使用可能なレプリカの数と 1 つの Deployment で想定されるレプリカの数を比較する場合は、次の PromQL クエリを使用すると両方の指標を 1 つのグラフにプロットできます。

kube_deployment_spec_replicas{cluster="CLUSTER", namespace="NAMESPACE", deployment=DEPLOYMENT"}
および
kube_deployment_status_replicas_available{cluster="CLUSTER", namespace="NAMESPACE", deployment=DEPLOYMENT"}

失敗した Deployment または停滞している Deployment に対してアラートを出すには、次の PromQL 式を使用します。

(
  kube_deployment_spec_replicas{cluster="CLUSTER", namespace="NAMESPACE", deployment="DEPLOYMENT"}
    >
  kube_deployment_status_replicas_available{cluster="CLUSTER", namespace="NAMESPACE", deployment="DEPLOYMENT"}
) and (
  changes(kube_deployment_status_replicas_updated{cluster="CLUSTER", namespace="NAMESPACE", deployment="DEPLOYMENT"}[10m])
    ==
  0
)

このセクションのクエリとアラートの式の一部は、GitHub の Prometheus コミュニティ Kubernetes Helm チャート リポジトリの kubernetes-apps.yaml ファイルから使用されています。

StatefulSet の指標

StatefulSet は、ステートフル アプリケーションで一連の Pod のデプロイとスケーリングを管理するコントローラです。このコントローラは、Pod の順序と一意性を管理します。

StatefulSet の指標の表

StatefulSet の指標を使用すると、コントローラの動作のモニタリングとアラートの作成を行うことができます。次の表に、Kube 状態指標パッケージで使用可能な指標を示します。

この表の Cloud Monitoring の指標名には、prometheus.googleapis.com/ という接頭辞を付ける必要があります。この接頭辞は、表中の項目では省略されています。

PromQL の指標名
Cloud Monitoring の指標名
種類、タイプ、単位
モニタリング対象リソース
必要な GKE バージョン
説明
ラベル
kube_statefulset_replicas
kube_statefulset_replicas/gauge
GAUGEDOUBLE1
prometheus_target
1.27.2-gke.1200
StatefulSet に必要な Pod の数。30 秒ごとにサンプリングされます。

statefulset: statefulset.
kube_statefulset_status_replicas_ready
kube_statefulset_status_replicas_ready/gauge
GAUGEDOUBLE1
prometheus_target
1.27.2-gke.1200
StatefulSet ごとの準備完了レプリカの数。30 秒ごとにサンプリングされます。

statefulset: statefulset.
kube_statefulset_status_replicas_updated
kube_statefulset_status_replicas_updated/gauge
GAUGEDOUBLE1
prometheus_target
1.27.2-gke.1200
StatefulSet ごとの更新されたレプリカの数。30 秒ごとにサンプリングされます。

statefulset: statefulset.

詳細については、StatefulSet の指標をご覧ください。

StatefulSet の指標のサンプルクエリ

StatefulSet の指標をクラスタ、Namespace、StatefulSet の名前でフィルタリングすることで、個々の StatefulSet のグラフとアラート ポリシーを作成できます。

たとえば、使用可能なレプリカの数と 1 つの StatefulSet で想定されるレプリカの数を比較する場合は、次の PromQL クエリを使用すると両方の指標を 1 つのグラフにプロットできます。

kube_statefulset_replicas{cluster="CLUSTER", namespace="NAMESPACE", statefulset="STATEFULSET"}
および
kube_statefulset_status_replicas_ready{cluster="CLUSTER", namespace="NAMESPACE", statefulset="STATEFULSET"}

失敗した StatefulSet または停滞している StatefulSet に対してアラートを出すには、次の PromQL 式を使用します。

(
  kube_statefulset_replicas{cluster="CLUSTER", namespace="NAMESPACE", statefulset="STATEFULSET"}
    >
  kube_statefulset_status_replicas_ready{cluster="CLUSTER", namespace="NAMESPACE", statefulset="STATEFULSET"}
) and (
  changes(kube_statefulset_status_replicas_updated{cluster="CLUSTER", namespace="NAMESPACE", statefulset="STATEFULSET"}[10m])
    ==
  0
)

このセクションのクエリとアラートの式の一部は、GitHub の Prometheus コミュニティ Kubernetes Helm チャート リポジトリの kubernetes-apps.yaml ファイルから使用されています。

DaemonSet の指標

DaemonSet は、いくつかのノードのセットが Pod のコピーを実行するようにするコントローラです。たとえば、ノードがクラスタに追加されると、DaemonSet はそのノードに Pod を追加します。このコントローラは、特定のプロセスがすべてのノードで実行されるようにする場合に便利です。

DaemonSet の指標の表

DaemonSet の指標を使用すると、コントローラの動作のモニタリングとアラートの作成を行うことができます。次の表に、Kube 状態指標パッケージで使用可能な指標を示します。

この表の Cloud Monitoring の指標名には、prometheus.googleapis.com/ という接頭辞を付ける必要があります。この接頭辞は、表中の項目では省略されています。

PromQL の指標名
Cloud Monitoring の指標名
種類、タイプ、単位
モニタリング対象リソース
必要な GKE バージョン
説明
ラベル
kube_daemonset_status_desired_number_scheduled
kube_daemonset_status_desired_number_scheduled/gauge
GAUGEDOUBLE1
prometheus_target
1.27.2-gke.1200
デーモン Pod を実行するノードの数。30 秒ごとにサンプリングされます。

daemonset: daemonset.
kube_daemonset_status_number_misscheduled
kube_daemonset_status_number_misscheduled/gauge
GAUGEDOUBLE1
prometheus_target
1.27.2-gke.1200
想定外でデーモン Pod を実行しているノードの数。30 秒ごとにサンプリングされます。

daemonset: daemonset.
kube_daemonset_status_number_ready
kube_daemonset_status_number_ready/gauge
GAUGEDOUBLE1
prometheus_target
1.27.2-gke.1200
デーモン Pod を実行するノードで、1 つ以上のデーモン Pod が実行可能な状態になっているノードの数。30 秒ごとにサンプリングされます。

daemonset: daemonset.
kube_daemonset_status_updated_number_scheduled
kube_daemonset_status_updated_number_scheduled/gauge
GAUGEDOUBLE1
prometheus_target
1.27.2-gke.1200
更新されたデーモン Pod を実行しているノードの数。30 秒ごとにサンプリングされます。

daemonset: daemonset.

詳細については、DaemonSet の指標をご覧ください。

DaemonSet の指標のサンプルクエリ

DaemonSet の指標を、クラスタ、Namespace、DaemonSet の名前でフィルタすることで、個々の DaemonSet のグラフとアラート ポリシーを作成できます。

たとえば、使用可能なレプリカの数と 1 つの DaemonSet で想定されるレプリカの数を比較する場合は、次の PromQL クエリを使用すると両方の指標を 1 つのグラフにプロットできます。

kube_daemonset_status_updated_number_scheduled{cluster="CLUSTER", namespace="NAMESPACE", daemonsetset=DAEMONSET"}
および
kube_daemonset_status_desired_number_scheduled{cluster="CLUSTER", namespace="NAMESPACE", daemonset=DAEMONSET"}

失敗した DaemonSet または停滞している DaemonSet に対してアラートを出すには、次の PromQL 式を使用します。

(
  (
    kube_daemonset_status_number_misscheduled{cluster="CLUSTER", namespace="NAMESPACE", daemonset="DAEMONSET"}
      !=
    0
  ) or (
    kube_daemonset_status_updated_number_scheduled{cluster="CLUSTER", namespace="NAMESPACE", daemonset="DAEMONSET"}
      !=
    kube_daemonset_status_desired_number_scheduled{cluster="CLUSTER", namespace="NAMESPACE", daemonset="DAEMONSET"}
  )
) and (
  changes(kube_daemonset_status_updated_number_scheduled{cluster="CLUSTER", namespace="NAMESPACE", daemonset="DAEMONSET"}[5m])
    ==
  0
)

このセクションのクエリとアラートの式の一部は、GitHub の Prometheus コミュニティ Kubernetes Helm チャート リポジトリの kubernetes-apps.yaml ファイルから使用されています。

HorizontalPodAutoscaler の指標

HorizontalPodAutoscaler(HPA)は、CPU やメモリ使用率などの指標に応じて、ワークロード(Deployment や StatefulSet など)の Pod の数を定期的に変更するコントローラです。ワークロードで使用できる Pod の数を変更すると、ワークロードの応答性を維持しながら効率性を確保できます。

HPA の詳細については、HorizontalPodAutoscaler の詳細表示をご覧ください。

HPA の指標の表

HorizontalPodAutoscaler の指標を使用すると、コントローラの動作のモニタリングとアラートの作成を行うことができます。次の表に、Kube 状態指標パッケージで使用可能な指標を示します。

この表の Cloud Monitoring の指標名には、prometheus.googleapis.com/ という接頭辞を付ける必要があります。この接頭辞は、表中の項目では省略されています。

PromQL の指標名
Cloud Monitoring の指標名
種類、タイプ、単位
モニタリング対象リソース
必要な GKE バージョン
説明
ラベル
kube_horizontalpodautoscaler_spec_max_replicas
kube_horizontalpodautoscaler_spec_max_replicas/gauge
GAUGEDOUBLE1
prometheus_target
1.27.2-gke.1200
オートスケーラーが設定できる Pod 数の上限(MinReplicas より小さい値にはできません)。30 秒ごとにサンプリングされます。

horizontalpodautoscaler: horizontalpodautoscaler.
kube_horizontalpodautoscaler_spec_min_replicas
kube_horizontalpodautoscaler_spec_min_replicas/gauge
GAUGEDOUBLE1
prometheus_target
1.27.2-gke.1200
オートスケーラーが設定できる Pod 数の下限(デフォルトは 1)。30 秒ごとにサンプリングされます。

horizontalpodautoscaler: horizontalpodautoscaler.
kube_horizontalpodautoscaler_spec_target_metric
kube_horizontalpodautoscaler_spec_target_metric/gauge
GAUGEDOUBLE1
prometheus_target
1.27.2-gke.1200
目的のレプリカ数を計算するときに、このオートスケーラーが使用する指標の仕様。30 秒ごとにサンプリングされます。

horizontalpodautoscaler: horizontalpodautoscaler.
metric_name: metric_name.
metric_target_type: metric_target_type.
kube_horizontalpodautoscaler_status_condition
kube_horizontalpodautoscaler_status_condition/gauge
GAUGEDOUBLE1
prometheus_target
1.27.2-gke.1200
このオートスケーラーの条件。30 秒ごとにサンプリングされます。

condition: condition.
horizontalpodautoscaler: horizontalpodautoscaler.
namespace: namespace.
status: status.
kube_horizontalpodautoscaler_status_current_replicas
kube_horizontalpodautoscaler_status_status_current_replicas/gauge
GAUGEDOUBLE1
prometheus_target
1.27.2-gke.1200
このオートスケーラーによって管理される Pod の現在のレプリカの数。30 秒ごとにサンプリングされます。

horizontalpodautoscaler: horizontalpodautoscaler.
kube_horizontalpodautoscaler_status_desired_replicas
kube_horizontalpodautoscaler_status_desired_replicas/gauge
GAUGEDOUBLE1
prometheus_target
1.27.2-gke.1200
このオートスケーラーによって管理される Pod の目的のレプリカの数。30 秒ごとにサンプリングされます。

horizontalpodautoscaler: horizontalpodautoscaler.

詳細については、HorizontalPodAutoscaler の指標をご覧ください。

HPA の指標のサンプルクエリ

たとえば、HPA がレプリカの最大数に近づいているかどうかを判断する場合は、次の比率をプロットします。

kube_horizontalpodautoscaler_status_current_replicas{cluster="CLUSTER", namespace="NAMESPACE", horizontalpodautoscaler="HPA"} /
kube_horizontalpodautoscaler_spec_max_replicas{cluster="CLUSTER", namespace="NAMESPACE", horizontalpodautoscaler="HPA"}

最大数のレプリカで HPA を実行している場合は、Pod の最大数の仕様を増やすことをおすすめします。次の PromQL 式を使用すると、このケースを通知するアラートを作成できます。

kube_horizontalpodautoscaler_status_current_replicas{cluster="CLUSTER", namespace="NAMESPACE", horizontalpodautoscaler="HPA"}
  ==
kube_horizontalpodautoscaler_spec_max_replicas{cluster="CLUSTER", namespace="NAMESPACE", horizontalpodautoscaler="HPA"}

kube_horizontalpodautoscaler_status_current_replicaskube_horizontalpodautoscaler_status_desired_replicas の指標の値を比較して、現在のレプリカ数と必要なレプリカ数の間に差異があるかどうかを判断することもできます。この差異は、クラスタ内のリソースの制約を示している可能性があります。次の PromQL 式は、現在のレプリカ数と必要なレプリカ数、最小レプリカ数、最大レプリカ数との差異、現在のレプリカ数の変化を調べます。

(kube_horizontalpodautoscaler_status_desired_replicas{job="kube-state-metrics", namespace=~"NAMESPACE"}
  !=
kube_horizontalpodautoscaler_status_current_replicas{job="kube-state-metrics", namespace=~"NAMESPACE"})
  and
(kube_horizontalpodautoscaler_status_current_replicas{job="kube-state-metrics", namespace=~"NAMESPACE"}
  >
kube_horizontalpodautoscaler_spec_min_replicas{job="kube-state-metrics", namespace=~"NAMESPACE"})
  and
(kube_horizontalpodautoscaler_status_current_replicas{job="kube-state-metrics", namespace=~"NAMESPACE"}
  <
kube_horizontalpodautoscaler_spec_max_replicas{job="kube-state-metrics", namespace=~"NAMESPACE"})
  and
changes(kube_horizontalpodautoscaler_status_current_replicas{job="kube-state-metrics", namespace=~"NAMESPACE"}[15m]) == 0

kube_horizontalpodautoscaler_status_condition 指標の condition ラベルと status ラベルは、HPA がさまざまな障害モードに陥ったタイミングを検出する場合にも役立ちます。次に例を示します。

  • 条件 ScalingLimited とステータス true は、HPA がレプリカの最小数と最大数のいずれかでバインドされていることを示します。
    kube_horizontalpodautoscaler_status_condition{status="true", condition="ScalingLimited"} == 1
  • 条件 AbleToScale とステータス false は、HPA でスケールの取得または更新に関する問題が発生していることを示します。

    kube_horizontalpodautoscaler_status_condition{status="false", condition="AbleToScale"} == 1

  • 条件 ScalingActive とステータス false は、HPA が無効になっているか、新しいスケールを計算できないことを示しています。

    kube_horizontalpodautoscaler_status_condition{status="false", condition="ScalingActive"} == 1

このセクションのクエリとアラートの式の一部は、GitHub の Prometheus コミュニティ Kubernetes Helm チャート リポジトリの kubernetes-apps.yaml ファイルから使用されています。