このページでは、Cloud Logging を使用して Google Kubernetes Engine(GKE)クラスタ内にあるログの収集とクエリを行う方法を説明します。
概要
クラスタで Logging が有効になっている場合、専用の永続データストア内にログが保存されます。Google Cloud プロジェクトには、GKE クラスタに関連するいくつかのログがあります。具体的には、管理アクティビティ ログ、データアクセス ログ、イベントログです。
ログはログエントリのコレクションであり、各ログエントリは特定の種類のリソースに該当します。GKE クラスタと最も関連性の高いリソースの種類は、次のとおりです。
リソースの種類 | 表示名 |
---|---|
k8s_cluster | Kubernetes クラスタ |
gke_cluster | GKE クラスタ オペレーション |
gke_container | GKE コンテナ |
gke_nodepool | GKE ノードプール オペレーション |
Kubernetes クラスタに適用されるログエントリと GKE クラスタ オペレーションのリソースの種類について詳しくは、監査ロギングをご覧ください。
GKE 自体もログを保存しますが、これらのログは永続的に保存されません。たとえば、GKE のコンテナログは、ホストポッドが削除されたとき、保存先ディスクの容量が不足したとき、または新しいログに置き換えられたときに削除されます。システムログは、新しいログの領域を確保するために定期的に削除されます。クラスタ イベントは、1 時間後に削除されます。
コンテナログとシステムログに対応するために、GKE はコンテナログを読み取り、有用なメタデータを追加して保存する、ノード単位の Logging エージェントをデプロイしています。このロギング エージェントは、次のソースのコンテナログをチェックします。
- コンテナ化されたプロセスの標準出力ログと標準エラーログ
kubelet
とコンテナのランタイムログ- VM 起動スクリプトなどのシステム コンポーネントのログ
イベントについては、GKE は kube-system
名前空間内の Deployment を使用します。この Deployment で、イベントを自動的に収集して Logging に送信します。
Logging は JSON 形式との互換性があります。ログは最大 30 日間保存されます。
始める前に
このタスクの準備として、次の手順を行います。
- Google Kubernetes Engine API が有効になっていることを確認します。 Google Kubernetes Engine API を有効にする
- Cloud SDK がインストール済みであることを確認します。
- デフォルトのプロジェクト ID を設定します。
gcloud config set project [PROJECT_ID]
- ゾーンクラスタを使用する場合は、デフォルトのコンピューティング ゾーンを設定します。
gcloud config set compute/zone [COMPUTE_ZONE]
- リージョン クラスタを使用する場合は、デフォルトのコンピューティング リージョンを設定します。
gcloud config set compute/region [COMPUTE_REGION]
gcloud
を最新バージョンに更新します。gcloud components update
- Cloud Logging のクイックスタートの手順に沿って操作します。
Logging を有効にする
Logging を有効にしたクラスタを新規に作成するか、既存のクラスタで Logging を有効にできます。
Logging を有効にしたクラスタを作成する
gcloud
クラスタを作成する際に、--enable-cloud-logging
フラグが自動的に設定されます。これにより、クラスタで Logging が有効になります。
このデフォルト動作を無効にするには、--no-enable-cloud-logging
フラグを設定します。
コンソール
Google Cloud コンソールで、[Kubernetes Engine] > [Kubernetes クラスタ] ページに移動します。
[クラスタを作成] をクリックします。
必要に応じてクラスタを構成します。
[詳細オプション] をクリックします。[その他の機能] セクションで、[Stackdriver Logging サービスを有効にする] をオンにします。
[作成] をクリックします。
既存のクラスタに対して Logging を有効にする
gcloud
既存のクラスタに対して Logging を有効にするには、次のコマンドを実行します。ここで、[CLUSTER_NAME] はクラスタの名前です。
gcloud container clusters update [CLUSTER_NAME] --logging-service logging.googleapis.com
コンソール
Google Cloud コンソールで、[Kubernetes Engine] > [Kubernetes クラスタ] ページに移動します。
[編集] edit をクリックします。
[Stackdriver Logging] プルダウンの値を [有効] に設定します。
[保存] をクリックします。
ログの表示
ログは、Google Cloud Console のログ エクスプローラで確認できます。
基本的なクエリと高度なクエリの作成方法など、ログの表示について詳しくは、Logging のドキュメントでログの表示をご覧ください。
クエリの例
nginx-deployment
とラベル付けされたポッドからのログをクエリする場合:resource.type="container" resource.labels.pod_id:"nginx-deployment-"
重大度が
WARNING
以上のprod
名前空間のログをクエリする場合:resource.type="container" resource.labels.namespace_id="prod" severity>WARNING
重大度についての詳細は、
Log Severity
をご覧ください。特定のポッド(
my-pod
)の特定のコンテナ(my-container
)の、あるテキスト ペイロードを含むログをクエリする場合:resource.type="container" resource.labels.container_name="my_container" resource.labels.pod_id="my_pod" textPayload:"abracadabra"
制限事項
複数行のエントリ(改行文字を含むエントリ)は正しく処理されないことがあります。この問題を回避するには、ログを単一行の JSON 文字列でラップします。
ロギングを無効にする
gcloud
既存のクラスタの従来の Logging と Monitoring を無効にするには、次のコマンドを実行します。ここで [CLUSTER_NAME]
はクラスタの名前です。
gcloud beta container clusters update [CLUSTER_NAME] --logging-service none
クラスタで Cloud Operations for GKE を実行している場合は、gcloud beta
を使用してクラスタに次のフラグを設定することで、モニタリングとロギングを両方とも無効にする必要があります。
gcloud beta container clusters update [CLUSTER_NAME] --logging-service none --monitoring-service none
コンソール
Google Cloud コンソールで、[Kubernetes Engine] > [Kubernetes クラスタ] ページに移動します。
変更するクラスタの [編集] editをクリックします。
[Stackdriver Logging] プルダウンの値を [無効] に設定します。
[保存] をクリックします。
次のステップ
- Google Cloud のオペレーション スイートの料金の詳細については、料金をご覧ください。
- Cloud Logging の詳細は、Cloud Logging のドキュメントをご覧ください。
- Google Cloud のオペレーション スイートのリソースとサービスについては、モニタリング対象リソースとサービスをご覧ください。