GKE ログを表示する

このページでは、Google Kubernetes Engine(GKE)ログを検索して使用する方法の概要について説明します。

ログへのアクセス

GKE のログにはさまざまな方法でアクセスできます。

  • Google Cloud コンソールで、次のページからログを表示できます。

    • Kubernetes Engine:

      • [クラスタ] ページでクラスタを選択し、[ログ] タブを選択します。このタブには、クラスタログに対する推奨クエリも表示されます。
      • [ワークロード] ページでワークロードを選択します。その後、[概要] タブの [コンテナログ] または [監査ログ] リンクをクリックして、ログ エクスプローラでログを表示できます。コンテキストでログを表示するには、[ログ] タブを選択します。
    • Logging: [ログ エクスプローラ] を選択し、ロギング フィルタを使用して、クラスタ、ノード、Namespace、Pod、コンテナログなどの Kubernetes リソースを選択します。初めて利用する際に役立つサンプルクエリについては、Kubernetes 関連のクエリをご覧ください。

    • Monitoring: GKE ダッシュボードには、クラスタ、ノード、Pod などの GKE リソースの指標とログが表示されます。詳細については、オブザーバビリティ指標を表示するをご覧ください。

  • Google Cloud CLI から: gcloud logging read コマンドを使用して、クラスタ、ノード、Pod、コンテナからログをクエリします。

カスタムログ集計、ログ分析、サードパーティ システムとの統合を行う場合は、ロギングシンク機能を使用して BigQuery、Cloud Storage、Pub/Sub にログをエクスポートすることも可能です。

ログについて

Cloud Logging のログはログエントリを集めたもので、各ログエントリは特定の種類のロギング リソースに適用されます。

リソースタイプ

GKE クラスタに固有のリソースタイプは次のとおりです。

ログのリソースタイプ
gke_cluster GKE クラスタのオペレーション ログ
gke_nodepool GKE ノードプール オペレーション ログ
k8s_cluster Kubernetes クラスタのログ
k8s_node Kubernetes ノードのログ
k8s_pod Kubernetes Pod のログ
k8s_container Kubernetes コンテナのログ
k8s_control_plane_component Kubernetes コントロール プレーン コンポーネントのログ

GKE がクラスタのログを書き込むと、各ログエントリにはリソースタイプが入ります。ログが出力される場所を知っていれば、必要なときにログを簡単に見つけることができます。

システムログ

システムログには、次のソースのログが含まれます。

  • Namespace kube-systemistio-systemknative-servinggke-systemconfig-management-system で実行中のすべての Pod。

  • コンテナ化されていない重要なサービス: docker/containerd ランタイム、kubeletkubelet-monitornode-problem-detectorkube-container-runtime-monitor

  • ノードのシリアルポート出力(VM インスタンスのメタデータ serial-port-logging-enable が true に設定されている場合)。GKE 1.16-13-gke.400 以降では、ノードのシリアルポート出力は Logging エージェントによって収集されます。シリアルポート出力のロギングを無効にするには、クラスタの作成時に --metadata serial-port-logging-enable=false を設定します。シリアルポート出力は、GKE ノードでのクラッシュ、ブートの失敗、起動の問題、シャットダウンの問題のトラブルシューティングに役立ちます。これらのログを無効にすると、トラブルシューティングが制限されることがあります。

  • クラスタ内のコンポーネントからのすべての Kubernetes イベント。詳細については、Kubernetes のイベントログをご覧ください。

システム監査ログは Cloud Logging に次の名前で表示されます。

  • projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Fdata_access - データアクセス ログ
  • projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Factivity - 管理アクティビティ ログ
  • projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Fsystem_event - システム イベント ログ
  • projects/PROJECT_ID/logs/events - Kubernetes イベントログ

Kubernetes クラスタに適用されるログエントリと GKE クラスタ オペレーションのリソースタイプに関する詳細は、監査ロギング ドキュメントをご覧ください。

kube-system のログなど、追加のシステムログもあります。詳細は、アプリケーション ログの収集の制御をご覧ください。

Kubernetes イベントログ

Kubernetes では、イベントは、状態の変更、ノードエラー、Pod エラー、スケジューリングの失敗などのリソースに関する情報を提供するオブジェクトです。kubelet やワークロード コントローラなどのさまざまな Kubernetes コンポーネントは、オブジェクトの変更を報告するイベントを作成します。たとえば、StatefulSet コントローラは、StatefulSet のレプリカ数が変更されたときに Event を作成することがあります。イベントの詳細については、イベント API リファレンス ページイベントの Kubernetes 用語集エントリをご覧ください。

Kubernetes イベントのログは、projects/PROJECT_ID/logs/events ログ名で Logging で確認できます。イベントのログエントリは、Kubernetes API でイベントを作成したコンポーネントに応じて、次のいずれかのリソースタイプを使用します。

  • k8s_pod: Pod イベント
  • k8s_node: ノードイベント
  • k8s_cluster: Pod イベントまたはノードイベント以外のすべてのイベント

アプリケーション ログ

Kubernetes コンテナは、STDOUTSTDERR に書き込まれたワークロードのログを収集します。ワークロード アプリケーションのログは、k8s_container リソースタイプを使用して検索できます。ログは、以下の名前で Logging に表示されます。

  • projects/PROJECT_ID/logs/stderr - 標準エラーに書き込まれたログ

  • projects/PROJECT_ID/logs/stdout - 標準出力に書き込まれたログ

コントロール プレーン コンポーネントのログ

GKE クラスタでコントロール プレーン ログが有効になっている場合、特定の Kubernetes コントロール プレーン コンポーネント(API サーバー、Scheduler、Controller Manager など)によって出力されたログは Cloud Logging にエクスポートされます。

これらのログは k8s_control_plane_component リソースタイプを使用し、次の名前で Cloud Logging に表示されます。

  • projects/PROJECT_ID/logs/container.googleapis.com%2Fapiserver

  • projects/PROJECT_ID/logs/container.googleapis.com%2Fscheduler

  • projects/PROJECT_ID/logs/container.googleapis.com%2Fcontroller-manager

コントロール プレーン アクセス ログ

GKE control plane authority を使用する場合は、コントロール プレーン インスタンスへのすべての受信ネットワーク接続と、コントロール プレーン インスタンスでの SSH イベントに対するオプションのログを有効にできます。これらのコントロール プレーン アクセス ログを、アクセスの透明性からのログと Kubernetes API サーバーからのログと関連付けると、必要に応じて、コントロール プレーン インスタンスへの接続が Google 社員による承認済みの管理者権限の結果であることを確認できます。詳細については、クラスタ コントロール プレーンへの Google 接続を確認するをご覧ください。

これらのログは gke_cluster リソースタイプを使用し、次の名前で Cloud Logging に表示されます。

  • projects/PROJECT_ID/logs/container.googleapis.com%2Fkcp_connection
  • projects/PROJECT_ID/logs/container.googleapis.com%2Fkcp_ssh

クラスタ ID 発行ログ

GKE control plane authority を使用して独自の認証局(CA)とクラスタの署名鍵を実行する場合、GKE は、これらの CA と鍵を使用して、クラスタで X.509 証明書または JSON Web Token(JWT)が発行されたときに監査ログを生成します。これらの ID 発行ログを、Kubernetes API サーバー、Certificate Authority Service、Cloud Key Management Service のログと関連付けて、クラスタ内の証明書と JWT の使用状況を追跡できます。詳しくは、ID の発行と使用を確認するをご覧ください。

これらのログはシステム イベント監査ログであり、gke_cluster リソースタイプを使用し、次の名前で Cloud Logging に表示されます。

  • projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Fsystem_event

Logging ユーザー インターフェースでログを検索する

Logging ユーザー インターフェースでは、ログ エクスプローラを使用してログを表示できます。

ログ エクスプローラ

クエリビルダーを使用すると、プルダウンからフィールドを選択するか、クエリ パラメータを手動で追加することでクエリを作成できます。たとえば、GKE クラスタのログを確認する場合は、Kubernetes クラスタ リソースタイプを選択または検索してから、ロケーションとクラスタ名を選択します。その後、[ログ名] セレクタでアクティビティ ログを選択して、検索を絞り込むことができます。

ログ エクスプローラでは、ログフィールド エクスプローラを使用して検索クエリを作成できます。ここには、指定したログフィールドでログエントリ数が大きなものから順に表示されます。ログ フィールド エクスプローラは GKE ログの場合に特に役立ちます。ログ フィールド エクスプローラでリソースに Kubernetes 値を選択してクエリを作成できます。たとえば、ログ フィールド エクスプローラを使用すると、特定のクラスタ、Namespace、Pod 名、コンテナ名のログを選択できます。

ログ エクスプローラの使用方法の詳細については、Logging のドキュメントをご覧ください。

サンプルクエリ

特定のログを探している場合は、次のサンプルクエリを使用して GKE ログを見つけます。

ログに関する一般的な問題のトラブルシューティング

GKE クラスタから大量のログを書き込む場合、それらのログの多くが継続的に Cloud Logging に表示されないことがあります。ロギングの量が、GKE でサポートされているロギング スループットを超えている可能性があります。

Logging は、ノードあたり最大 100 KB/秒のロギング スループットをサポートしています。GKE クラスタ内のいずれかのノードに、より多くのロギング スループットが必要な場合は、ロギング エージェントのスループットを向上させることをおすすめします。

インスタンスを調査する際に、Gemini Cloud Assist Investigations を使用して、ログに関する追加の分析情報を取得し、問題を解決できます。ログ エクスプローラを使用して調査を開始するさまざまな方法については、Gemini ドキュメントの Gemini Cloud Assist Investigations を使用したトラブルシューティングをご覧ください。

次のステップ