GKE の Observability 関連の機能についてまとめてみた

GKE の Observability 関連の機能についてまとめてみた

2026.01.03

本ブログの趣旨

GKE の Ovservability 関連の機能が複数あって全体像を掴み辛く感じたため、まとめてみました。
「GKE の Observability 関連の機能」と言うと若干範囲が曖昧ですが、公式ドキュメントの GKE のオブザーバビリティ で言及されている、今回は下記機能について取り扱います。

  • Cloud Monitoring (連携)
  • (Cloud) Logging (連携)
  • Managed Service for Prometheus (マネージドコレクション)
  • Dataplane V2 メトリクス/Observability

Cloud Monitoring (連携)

GKE の各種メトリクスを Cloud Monitoring に送信できる機能です。
大きく「システムメトリクス」と「その他のオブザーバビリティメトリクス」に分かれ、システムメトリクスだけであれば追加コスト不要で利用できます。

Cloud Monitoring は、GKE のシステム指標の取り込みに対して課金しません。
https://cloud.google.com/kubernetes-engine/docs/how-to/configure-metrics?hl=ja#pricing

Autopilot クラスタでは無効にできない、基本の監視機能と言えます。

GKE Autopilot クラスタでは、システム指標の収集を無効にすることはできません。
https://docs.cloud.google.com/kubernetes-engine/docs/how-to/configure-metrics?hl=ja#enable-system-metrics

Standard モードのクラスタにおいても、システムメトリクスを出力しない場合はカスタマーサポートが限定的になることに注意が必要です。

警告: Cloud Logging または Cloud Monitoring を無効にするか、除外フィルタを適用している場合、GKE のカスタマーサポートはベスト エフォートで提供されるため、自社のエンジニアリング チームで別途対応する必要が生じる場合があります。
https://docs.cloud.google.com/kubernetes-engine/docs/how-to/configure-metrics?hl=ja#enable-system-metrics

そのため、システムメトリクスの Cloud Monitoring 連携に関しては有効化しない理由が無いと言えるでしょう。
Managed Service for Prometheus と Node Exporter などで同等の情報を取得できる場合においても、合わせて有効化すべきです。
「その他のオブザーバビリティメトリクス」はシステムメトリクスに留まらないより詳細な情報を取得したい場合に利用します。

その他のオブザーバビリティ指標
1 つ以上のオブザーバビリティ指標パッケージを有効にすると、追加のオブザーバビリティ指標を収集できます。
コントロール プレーンの指標: Kubernetes API サーバー、スケジューラ、コントローラ マネージャーの指標を収集して、Kubernetes コンポーネントの状態をモニタリングします。これらの指標は、サービスレベル目標(SLO)を定義する際にサービスの状態を把握するのに有用なシグナルです。
Kube 状態指標: Deployment、ノード、Pod などの Kubernetes オブジェクトの状態をモニタリングします。
cAdvisor / kubelet 指標: コンテナと kubelet の健全性をモニタリングします。
https://docs.cloud.google.com/kubernetes-engine/docs/concepts/observability?hl=ja#metrics-packages

Kubernetes リソースごとなどでパッケージ化されており、選択して有効化することが可能です。

種別 メトリクス名 内容
Control Plane API Server API Server に関するメトリクス
Control Plane Scheduler Scheduler に関するメトリクス
Control Plane Controller Manager Controller Manager に関するメトリクス
Kube State Metrics Persistent Volume PV, PVC に関する詳細情報 (クレームの状態等)
Kube State Metrics Pods Pod に関する詳細情報 (Pod のフェーズ等)
Kube State Metrics Deployment Deployment に関する詳細情報 (Deployment 内のレプリカ数等)
Kube State Metrics StatefulSet StatefulSet に関する詳細情報 (StatefulSet 内のレプリカ数等)
Kube State Metrics DaemonSet DaemonSet に関する詳細情報 (DaemonSet 内のレプリカ数等)
Kube State Metrics Horizontal Pod Autoscaler Horizontal Pod Autoscaler に関する詳細情報 (Autoscaler が管理している Pod の数等)
Kube State Metrics JobSet JobSet に関する詳細情報 (JobSet 内のレプリカ数等)
cAdvisor and Kubelet Metrics cAdvisor ノード上の cAdvisor に関するメトリクス
cAdvisor and Kubelet Metrics Kubelet ノード上の Kubelet に関するメトリクス
GPUs NVIDIA DCGM NVIDIA Datacenter GPU に特化したメトリクス

「その他のオブザーバビリティメトリクス」を Cloud Monitoring へ連携する際は取り込んだサンプル数に応じた追加コストが発生します。

https://cloud.google.com/stackdriver/pricing?hl=ja&_gl=1*oz6tel*_ga*MTc5MjMxMTQ0OS4xNzQxNzU2MjA2*_ga_WH2QY8WWF5*czE3NjczNTc5ODAkbzExMyRnMSR0MTc2NzM2MTA4OSRqMzUkbDAkaDA.#monitoring-pricing-summary

また、Pod や Node、名前空間ごとの CPU/メモリ利用率程度であればシステムメトリクスで十分閲覧可能です。

スクリーンショット 2026-01-03 16.44.06.png

コントロールプレーン側のメトリクスや各 Kubernetes の状態なども踏まえた詳細なメトリクスを確認したい際に有効化すると良いです。
特に、コントロールプレーン側のメトリクスについてはこちらの機能を利用しないと取得できないことに注意が必要です。
コントロールプレーンは Google Cloud 管理ではあるものの、トラブルシューティング時に役立つ場面はあるかもしれません。

https://docs.cloud.google.com/kubernetes-engine/docs/how-to/control-plane-metrics?hl=ja

取得できるメトリクス一覧は下記から確認できます。

システムメトリクス
https://cloud.google.com/monitoring/api/metrics_kubernetes

Control Plane
https://cloud.google.com/kubernetes-engine/docs/how-to/control-plane-metrics

Kube State
https://cloud.google.com/kubernetes-engine/docs/how-to/kube-state-metrics

cAdvisor and Kubelet
https://cloud.google.com/kubernetes-engine/docs/how-to/cadvisor-kubelet-metrics

GPUs
https://docs.cloud.google.com/kubernetes-engine/docs/how-to/dcgm-metrics?hl=ja

(Cloud) Logging (連携)

GKE の各種ログを Cloud Logging に送信できる機能です。
もちろん GKE クラスタ内にもログは出力されますが、Pod の削除時やディスク不足時などに削除されてしまいます。
Cloud Logging に保存しておくことで、Kubernetes リソースのライフサイクルやディスク容量に関係無くログを長期保存することが可能です。
出力可能なログは下記になります。

ログ名 内容
監査ログ Kubernetes API に対しての操作証跡
システムログ kube-system で実行されているコンテナのログなど
アプリケーション ログ システム以外のコンテナで生成されたログ
API サーバーログ kube-apiserver の動作ログ
Scheduler ログ kube-scheduler の動作ログ
Controller Manager ログ kube-controller-manager の動作ログ
Horizontal Pod Autoscaler ログ Horizontal Pod Autoscaler がスケーリングする際の意思決定プロセスに関するログ

Managed Service for Prometheus (マネージドコレクション)

そもそも Managed Service for Prometheus 自体は、Prometheus 形式のメトリクスを保存して PromQL でクエリするためのマネージドサービスです。

スクリーンショット 2026-01-03 16.22.25.png

Google Cloud Managed Service for Prometheus

GKE の Managed Service for Prometheus 機能は、Managed Service for Prometheus に Prometheus ベースのメトリクスを転送する部分をマネージドで行ってくれる機能です。

スクリーンショット 2026-01-03 17.29.18.png

専用リソースである PodMonitoring を作成することで、特定の Pod からメトリクスを収集して、Managed Service for Prometheus に転送することが可能です。

apiVersion: monitoring.googleapis.com/v1
kind: PodMonitoring
metadata:
  name: prom-nginx
spec:
  selector:
    matchLabels:
      app.kubernetes.io/name: nginx
  endpoints:
    - port: metrics
      path: /metrics
      interval: 30s

例えば、上記リソースを作成することで Prometheus エージェント不要で Nginx Exporter 経由のメトリクスを取得できます。

スクリーンショット 2026-01-03 18.01.37.png

Managed Service for Prometheus という名称ではありますが、Cloud Monitoring の一機能として扱われており、Cloud Monitoring 連携で取得したメトリクス群と同じように扱うことが可能です。
また、Automatic Application Monitoring という機能も存在しており、特定のワークロードに対して PodMonitoring 不要でメトリクスを収集することが可能です。
現状対応しているリソースは多くないですが、場合に依っては有用かもしれません。

Automatic application monitoring supports the following workloads:
・Apache Airflow
・Istio
・RabbitMQ
・AI model servers:
・JetStream
・NVIDIA Triton
・TensorFlow Serving
・Text Generation Inference
・TorchServe
・vLLM
https://docs.cloud.google.com/kubernetes-engine/docs/how-to/configure-automatic-application-monitoring?hl=en&_gl=1*98gk23*_ga*MTc5MjMxMTQ0OS4xNzQxNzU2MjA2*_ga_WH2QY8WWF5*czE3Njc0MjQ0MDYkbzExMiRnMSR0MTc2NzQyODQ0OSRqMzckbDAkaDA.

Dataplane V2 メトリクス/Observability

前提となる話として、Dataplane V2 は eBPF を活用した GKE のネットワーク制御の仕組みです。
こちらが登場する前は Calico をベースにしたネットワーク制御を行っていましたが、Dataplane V2 では Cilium をベースで実装されています。
kube-proxy や iptables への依存が無くなっていてパフォーマンスの向上が見込める他、ネットワークポリシーロギング (Network Policy による Allow/Deny を記録) を利用できます。

https://docs.cloud.google.com/kubernetes-engine/docs/how-to/network-policy-logging?hl=ja

こちらを利用している際、GKE の機能として「Dataplane V2 メトリクス」を有効化することで、ネットワーク関連のメトリクスを取得できます。
また、Dataplane V2 Observability を有効化すると、下記 2 つのコンポーネントをマネージドな形でインストール可能です。

  • Hubble Relay: ポッドとノードに関するネットワークテレメトリデータを収集するサービス
  • Hubble CLI: クラスタ内のネットワークトラフィックを確認するための CLI ツール

Hubble は Cilium を基盤に構築されたネットワーク監視や Observability 用のツールであり、それらの一部をインストールできることになります。

Hubble is a fully distributed networking and security observability platform. It is built on top of Cilium and eBPF to enable deep visibility into the communication and behavior of services as well as the networking infrastructure in a completely transparent manner.
https://docs.cilium.io/en/stable/overview/intro/#what-is-hubble

つまり、Dataplane V2 メトリクス/Observability を有効化することで、Hubble と Cilium を活用した eBPF ベースのネットワーク監視基盤を簡単にセットアップ可能です。

https://cloud.google.com/blog/ja/products/containers-kubernetes/using-hubble-for-gke-dataplane-v2-observability

ただし、Hubble UI を利用したい場合は別途インストールが必要です。

https://docs.cloud.google.com/kubernetes-engine/docs/how-to/configure-dpv2-observability?hl=en#how_to_deploy_the_hubble_ui_binary_distribution

Hubble UI さえインストールすれば下記のような形で、トラフィックの可視化が可能です(トラフィックが少なくてあまり優位性が分かり辛いですが...)。

スクリーンショット 2026-01-03 18.20.41.png

Hubble CLI はインストールされているため、CLI ベースの分析は追加コンポーネント不要で可能です。

alias hubble="kubectl exec -it deployment/hubble-relay -c hubble-cli -n gke-managed-dpv2-observability -- hubble"
hubble observe -f

スクリーンショット 2026-01-03 18.44.01.png

まとめ

ざっくりとまとめると下記のようになります。

機能 概要
Cloud Monitoring (連携) GKE の各種メトリクスを Cloud Monitoring に連携する
(Cloud) Logging (連携) 各種コンポーネントのログを Cloud Logging に連携する
Managed Service for Prometheus (マネージドコレクション) Prometheus 形式で公開されたメトリクスをマネージドな形で Managed Service for Prometheus に連携する
Dataplane V2 メトリクス/Observability ネットワーク周りのメトリクスを取得したり、分析するためのツールをインストールする

コンソールから見ると単に Cloud Monitoring とか Managed Service for Prometheus とか記載してあって分かり辛かったのでまとめてみました。
この記事がどなたかの参考になれば幸いです。

この記事をシェアする

FacebookHatena blogX

関連記事