このページでは、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-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 ノードでのクラッシュ、ブートの失敗、起動の問題、シャットダウンの問題のトラブルシューティングに役立ちます。これらのログを無効にすると、トラブルシューティングが制限されることがあります。
システムログで取得されるリソースタイプは、次のとおりです。
k8s_cluster
を含むクラスタログk8s_node
を含むノードログk8s_pod
を含む Podk8s_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 コンテナは、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
Logging ユーザー インターフェースでログを検索する
Logging ユーザー インターフェースでは、ログ エクスプローラを使用してログを表示できます。
ログ エクスプローラ
クエリビルダーを使用すると、プルダウンからフィールドを選択するか、クエリ パラメータを手動で追加することでクエリを作成できます。たとえば、GKE クラスタのログを確認する場合は、Kubernetes クラスタ リソースタイプを選択または検索してから、ロケーションとクラスタ名を選択します。その後、[ログ名] セレクタでアクティビティ ログを選択して、検索を絞り込むことができます。
ログ エクスプローラでは、ログフィールド エクスプローラを使用して検索クエリを作成できます。ここには、指定したログフィールドでログエントリ数が大きなものから順に表示されます。ログ フィールド エクスプローラは GKE ログの場合に特に役立ちます。ログ フィールド エクスプローラでリソースに Kubernetes 値を選択してクエリを作成できます。たとえば、ログ フィールド エクスプローラを使用すると、特定のクラスタ、Namespace、Pod 名、コンテナ名のログを選択できます。
ログ エクスプローラの使用方法の詳細については、Logging のドキュメントをご覧ください。
サンプルクエリ
特定のログを探している場合は、次のサンプルクエリを使用して GKE ログを見つけます。
Kubernetes 関連のログクエリの例
Kubernetes Engine コントロール プレーンのログクエリのサンプル
ログのトラブルシューティング
GKE クラスタから大量のログを書き込む場合、それらのログの多くが継続的に Cloud Logging に表示されないことがあります。ロギングの量が、GKE でサポートされているロギング スループットを超えている可能性があります。
Logging は、ノードあたり最大 100 KB/秒のロギング スループットをサポートしています。GKE クラスタ内のいずれかのノードに、より多くのロギング スループットが必要な場合は、ロギング エージェントのスループットを向上させることをおすすめします。