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 クラスタに固有のリソースタイプは次のとおりです。

リソースの種類 表示名
k8s_cluster Kubernetes クラスタのログ
k8s_node GKE ノードプール ログ
k8s_pod GKE Pod のログ
k8s_container GKE コンテナログ
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 ノードでのクラッシュ、ブートの失敗、起動の問題、シャットダウンの問題のトラブルシューティングに役立ちます。これらのログを無効にすると、トラブルシューティングが制限されることがあります。

システムログで取得されるリソースタイプは、次のとおりです。

  • k8s_cluster を含むクラスタログ

  • k8s_node を含むノードログ

  • k8s_pod を含む Pod

  • k8s_container を含むシステムアプリ

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

  • projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Fdata_access - データアクセス ログ

  • projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Factivity - 管理アクティビティ ログ

  • projects/PROJECT_ID/logs/events – イベントログ

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

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

アプリケーション ログ

Kubernetes コンテナは、STDOUTSTDERR に書き込まれたワークロードのログを収集します。ワークロード アプリケーションのログは、k8s_container リソースタイプまたは gke_cluster リソースタイプを使用して検索できます。ログは、以下の名前で 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

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

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

ログ エクスプローラ

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

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

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

サンプルクエリ

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

ログのトラブルシューティング

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

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