このページでは、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 クラスタのオペレーション ログ | |
k8s_cluster |
Kubernetes クラスタのログ | |
k8s_node |
Kubernetes ノードのログ | |
k8s_pod |
Kubernetes Pod のログ | |
k8s_container |
Kubernetes コンテナのログ | |
k8s_control_plane_component |
Kubernetes コントロール プレーン コンポーネントのログ |
GKE がクラスタのログを書き込むと、各ログエントリにはリソースタイプが入ります。ログが出力される場所を知っていれば、必要なときにログを簡単に見つけることができます。
システムログ
システムログには、次のソースのログが含まれます。
Namespace
kube-system
、istio-system
、knative-serving
、gke-system
、config-management-system
で実行中のすべての Pod。コンテナ化されていない重要なサービス:
docker
/containerd
ランタイム、kubelet
、kubelet-monitor
、node-problem-detector
、kube-container-runtime-monitor
。ノードのシリアルポート出力(VM インスタンスのメタデータ
serial-port-logging-enable
が true に設定されている場合)。GKE 1.16-13-gke.400 以降では、ノードのシリアルポート出力は Logging エージェントによって収集されます。シリアルポート出力のロギングを無効にするには、クラスタの作成時に--metadata serial-port-logging-enable=false
を設定します。シリアルポート出力は、GKE ノードでのクラッシュ、ブートの失敗、起動の問題、シャットダウンの問題のトラブルシューティングに役立ちます。これらのログを無効にすると、トラブルシューティングが制限されることがあります。
システム監査ログは 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 クラスタに適用されるログエントリと GKE クラスタ オペレーションのリソースタイプに関する詳細は、監査ロギング ドキュメントをご覧ください。
kube-system のログなど、追加のシステムログもあります。詳細は、アプリケーション ログの収集の制御をご覧ください。アプリケーション ログ
Kubernetes コンテナは、STDOUT
と STDERR
に書き込まれたワークロードのログを収集します。ワークロード アプリケーションのログは、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
コントロール プレーン アクセス ログ
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 ログを見つけます。
Kubernetes 関連のログクエリの例
Kubernetes Engine コントロール プレーンのログクエリのサンプル
ログのトラブルシューティング
GKE クラスタから大量のログを書き込む場合、それらのログの多くが継続的に Cloud Logging に表示されないことがあります。ロギングの量が、GKE でサポートされているロギング スループットを超えている可能性があります。
Logging は、ノードあたり最大 100 KB/秒のロギング スループットをサポートしています。 GKE クラスタ内のいずれかのノードに、より高いロギング スループットが必要な場合は、ロギング エージェントのスループットを向上させることをおすすめします。