Stackdriver Logging

このページでは、Stackdriver Logging を使用して Google Kubernetes Engine(GKE)クラスタ内にあるログの収集とクエリを行う方法を説明します。

概要

クラスタで Logging が有効になっている場合、専用の永続データストア内にログが保存されます。GCP プロジェクトが GKE クラスタに関して記録するログには、いくつかの種類があります。具体的には、管理アクティビティ ログ、データアクセス ログ、イベントログです。

ログはログエントリのコレクションであり、各ログエントリは特定の種類のリソースに該当します。GKE クラスタと最も関連性の高いリソースの種類は、次のとおりです。

リソースの種類 表示名
k8s_cluster Kubernetes クラスタ
gke_cluster GKE クラスタ オペレーション
gke_container GKE コンテナ
gke_nodepool GKE ノードプール オペレーション

Kubernetes クラスタに適用されるログエントリと GKE クラスタ オペレーションのリソースの種類について詳しくは、監査ロギングをご覧ください。

GKE 自体もログを保存しますが、これらのログは永続的に保存されません。たとえば、GKE のコンテナログは、ホストポッドが削除されたとき、保存先ディスクの容量が不足したとき、または新しいログに置き換えられたときに削除されます。システムログは、新しいログの領域を確保するために定期的に削除されます。クラスタ イベントは、1 時間後に削除されます。

コンテナログとシステムログに対応するために、GKE はコンテナログを読み取り、有用なメタデータを追加して保存する、ノード単位の Logging エージェントをデプロイしています。この 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

Logging を有効にする

Logging を有効にしたクラスタを新規に作成するか、既存のクラスタで Logging を有効にできます。

Logging を有効にしたクラスタを作成する

gcloud

クラスタを作成する際に、--enable-cloud-logging フラグが自動的に設定されます。これにより、クラスタで Logging が有効になります。

このデフォルト動作を無効にするには、--no-enable-cloud-logging フラグを設定します。

Console

  1. GCP Console で [Kubernetes Engine] メニューにアクセスします。

    [Kubernetes Engine] メニューにアクセス

  2. [クラスタを作成] をクリックします。

  3. 必要に応じてクラスタを構成します。

  4. [詳細オプション] をクリックします。[その他の機能] セクションで、[Stackdriver Logging サービスを有効にする] をオンにします。

  5. [作成] をクリックします。

既存のクラスタに対して Logging を有効にする

gcloud

既存のクラスタに対して Logging を有効にするには、次のコマンドを実行します。ここで、[CLUSTER_NAME] はクラスタの名前です。

gcloud container clusters update [CLUSTER_NAME] --logging-service logging.googleapis.com

Console

  1. GCP Console で [Kubernetes Engine] メニューにアクセスします。

    [Kubernetes Engine] メニューにアクセス

  2. クラスタの編集ボタン(鉛筆の形をしたボタン)をクリックします。

  3. [Stackdriver Logging] プルダウンの値を [有効] に設定します。

  4. [保存] をクリックします。

ログを表示する

Google Cloud Platform Console の Stackdriver ログビューアでログを表示できます。

基本的なクエリと高度なクエリの作成方法など、ログの表示について詳しくは、Logging のドキュメントでログの表示をご覧ください。

クエリの例

nginx-deployment というラベルの付いたポッドのログをクエリする場合:

resource.type="container"
resource.labels.pod_id:"nginx-deployment-"

重大度が WARNING 以上の prod 名前空間のログをクエリする場合:

resource.type="container"
resource.labels.namespace_id="prod"
severity>WARNING

特定のポッド(my-pod)の特定のコンテナ(my-container)の、あるテキスト ペイロードを含むログをクエリする場合:

resource.type="container"
resource.labels.container_name="my_container"
resource.labels.pod_id="my_pod"
textPayload:"abracadabra"

制限事項

複数行のエントリ(改行文字を含むエントリ)は正しく処理されないことがあります。この問題を回避するには、ログを単一行の JSON 文字列でラップします。

ベスト プラクティス

  • 構造化ロギング: 標準出力または標準エラーに書き込まれた単一行の JSON 文字列は、構造化ログエントリとして Stackdriver に読み込まれます。詳細については、構造化ロギングをご覧ください。高度なログフィルタを使用すると、フィールドに基づいてログをフィルタリングできます。
  • 重大度: デフォルトでは、標準出力に書き込まれるログは INFO レベルであり、標準エラーに書き込まれるログは ERROR レベルです。構造化ログには、ログの重大度を定義する severity フィールドを含めることができます。
  • BigQuery へのエクスポート: BigQuery や Cloud Pub/Sub などの外部サービスにログをエクスポートすると、ログをさらに詳しく分析できます。BigQuery にエクスポートされたログでは、その形式と構造が保持されます。詳細については、ログのエクスポートの概要をご覧ください。
  • アラート: ログベースの指標を使用して、Logging が予期しない動作をログに記録した場合のアラート ポリシーを設定できます。例については、カウンタ指標での簡単なアラート ポリシーの作成をご覧ください。ログベースの指標について詳しくは、ログベースの指標の概要をご覧ください。
  • エラーレポート: Stackdriver Error Reporting を使用して、クラスタ内で発生したエラーを収集できます。

ロギングを無効にする

gcloud

既存のクラスタに対して従来の Stackdriver を無効にするには、次のコマンドを実行します。[CLUSTER_NAME] はクラスタの名前です。

gcloud container clusters update [CLUSTER_NAME] --logging-service none

Console

  1. GCP Console で [Kubernetes Engine] メニューにアクセスします。

    [Kubernetes Engine] メニューにアクセス

  2. 変更するクラスタの編集ボタン(鉛筆の形をしたボタン)をクリックします。

  3. [Stackdriver Logging] プルダウンの値を [無効] に設定します。

  4. [保存] をクリックします。

次のステップ

このページは役立ちましたか?評価をお願いいたします。

フィードバックを送信...

ご不明な点がありましたら、Google のサポートページをご覧ください。