gke-observability について
GKE クラスタとワークロードの運用担当者向けに、ログ、メトリクス、トレース、プロファイリングの設定や確認方法を案内します。
主な機能
- 01Cloud Logging と Monitoring の確認
- 02Managed Service for Prometheus の有効化
- 03ワークロードログの確認
- 04ダッシュボードとアラートの設定
- 05トレースと継続的プロファイリングの有効化
- 06ログとコントロールプレーンメトリクスの検索
活用シーン
- 01本番クラスタのログと監視設定の監査
- 02アプリケーションのカスタムメトリクス収集
- 03LQL によるエラーログの検索
- 04マイクロサービスの遅延追跡と性能分析
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ googlecloudplatform/ gke-mcp --skill gke-observabilityインストール後、Claude Code で/gke-observabilityを入力して読み込まれたか確認します。
詳細
GKE の可観測性スキル
このスキルでは、GKE クラスターとワークロードが本番環境で使用するために十分な可観測性を備えていることを確認するためのワークフローを紹介します。
ワークフロー
1. クラスターの可観測性を監査する
クラスターで Cloud Logging と Cloud Monitoring が有効になっているかを確認します。
コマンド:
gcloud container clusters describe <cluster-name> --region <region> --project <project-id> --format="json(loggingConfig, monitoringConfig)"
loggingService と monitoringService が none 以外(通常は logging.googleapis.com/kubernetes と monitoring.googleapis.com/kubernetes)に設定されていることを確認します。
2. Managed Service for Prometheus を有効にする
Google Cloud Managed Service for Prometheus は、アプリケーションからメトリクスを収集するための推奨方法です。
有効にするコマンド:
gcloud container clusters update <cluster-name> \
--enable-managed-prometheus \
--region <region>
インストールを確認する:
kubectl get pods -n gmp-system
3. ワークロードのログを確認する
Cloud Logging が自動的に収集できるように、ワークロードが標準出力にログを出力していることを確認します。
ワークロードのログを確認する:
kubectl logs <pod-name> -n <namespace>
可能であれば、クエリを簡単にするために、ログが構造化形式(JSON など)であることを確認します。
4. ダッシュボードとアラート
次の主要なメトリクスについて、Cloud Monitoring でダッシュボードを作成することを推奨します。
- CPU 使用率
- メモリ使用率
- リクエストのレイテンシ
- エラー率
重要なしきい値に対するアラートポリシーを設定します。
5. 分散トレーシング
分散トレーシングを有効にして、マイクロサービス間のリクエストを追跡します。
- アクション:アプリケーションで OpenTelemetry を使用し、トレースを Cloud Trace に送信することを推奨します。
- メリット:分散システムにおけるレイテンシのボトルネックの特定に役立ちます。
6. 継続的プロファイリング
オーバーヘッドを抑えながら、本番環境でアプリケーションのパフォーマンスを分析するには、継続的プロファイリングを使用します。
- アクション:アプリケーションコードに Cloud Profiler エージェントを組み込むことを推奨します。
- メリット:本番環境で CPU とメモリを消費する関数の特定に役立ちます。
7. LQL でログをクエリする
Cloud Logging で Logging Query Language(LQL)を使用して、特定のログを検索します。
LQL クエリの例:
- 特定のコンテナのエラーログを検索する:
resource.type="k8s_container" resource.labels.container_name="my-app" severity>=ERROR - 特定のメッセージを含むログを検索する:
resource.type="k8s_container" textPayload:"connection refused"
8. コントロールプレーンのメトリクスを有効にする
Standard クラスターでは、Kubernetes API サーバー、スケジューラー、コントローラーマネージャーからのメトリクス収集を有効にできます。
コマンド:
gcloud container clusters update <cluster-name> \
--monitoring=SYSTEM,API_SERVER,SCHEDULER,CONTROLLER_MANAGER \
--region <region>
9. Dataplane V2 の可観測性を有効にする
GKE Dataplane V2 を使用している場合、高度な L4 可観測性を有効にできます。
コマンド:
gcloud container clusters update <cluster-name> \
--enable-dataplane-v2-observability \
--region <region>
これにより、トラフィックフローとネットワークメトリクスを確認できます。
ベストプラクティス
- 構造化ログ:Cloud Logging でログを検索、分析しやすくするため、アプリケーションで JSON ログを使用します。
- カスタムメトリクス:Managed Service for Prometheus を使用して、カスタムアプリケーションメトリクスを公開、収集します。
- 可観測性の全要素:全体を把握できるように、ログとメトリクスに加えてトレーシングとプロファイリングを実装します。
- コントロールプレーンのメトリクス:API サーバーとスケジューラーの健全性を監視するため、(Standard を使用している場合は)コントロールプレーンのメトリクスを有効にします。