GKE のロギングとモニタリングを構成する


Google Kubernetes Engine(GKE)には、Google Cloud Managed Service for Prometheus など、Cloud Logging や Cloud Monitoring とのインテグレーションが含まれています。

このインテグレーションにより、高度なプロファイリング機能とトレース機能を使用して、稼働中の GKE クラスタのモニタリング、システムログとデバッグログの管理、システムのパフォーマンス分析を行うことができます。

このインテグレーションには、GKE クラスタを監視するためのダッシュボードも用意されています。

基本的な監査ログなど、GKE やその他ほとんどの Google Cloud サービスのセキュリティ ログは、Cloud Logging が GKE クラスタに対して有効になっていない場合でも入手できます。詳しくは、Cloud Audit Logs をご覧ください。

このページでは、次の操作を行う方法について説明します。

  • 新しいクラスタを作成し、Cloud Logging、Cloud Monitoring、Google Cloud Managed Service for Prometheus を構成します。

  • 収集するログと指標を選択します。

  • クラスタの Cloud Logging、Cloud Monitoring、Google Cloud Managed Service for Prometheus を無効にします。

GKE Autopilot クラスタの場合、Cloud Logging と Cloud Monitoring のインテグレーションを無効にすることはできません。

始める前に

作業を始める前に、次のことを確認してください。

  • Google Kubernetes Engine API を有効にします。
  • Google Kubernetes Engine API の有効化
  • このタスクに Google Cloud CLI を使用する場合は、gcloud CLI をインストールして初期化します。すでに gcloud CLI をインストールしている場合は、gcloud components update を実行して最新のバージョンを取得します。
  • クラスタが含まれているプロジェクトのオーナーであることを確認します。

  • Cloud Logging API が有効になっていることを確認します。Cloud Logging API のステータスは、概要ページで確認できます。

ログと指標

GKE クラスタから Cloud Logging と Cloud Monitoring にログと指標を送信するかどうかを選択できます。以下の各セクションでは、使用可能なログと指標、クラスタ作成時にデフォルトで有効に設定されるログと指標について説明します。

使用可能なログ

Cloud Logging にログを送信する場合は、システムログを送信する必要があります。必要に応じて、追加のソースからログを送信することもできます。

Cloud Logging の料金についてご覧ください。

次の表に、create コマンドと update コマンドの --logging フラグでサポートされる値を示します。

ログソース --logging 収集されるログ
なし NONE Cloud Logging にログは送信されません。クラスタ内にログ収集エージェントがインストールされていません。この値は、GKE Autopilot クラスタではサポートされていません。
システム SYSTEM 以下からログを収集します。
  • 名前空間 kube-systemistio-systemknative-servinggke-systemconfig-management-system で実行中のすべての Pod。
  • コンテナ化されていない重要なサービス: docker/containerd ランタイム、kubeletkubelet-monitornode-problem-detectorkube-container-runtime-monitor
  • ノードのシリアルポート出力(VM インスタンスのメタデータ serial-port-logging-enable が true に設定されている場合)。

さらに、Kubernetes イベントを収集します。この値は、すべてのクラスタタイプで必要です。

ワークロード WORKLOAD ユーザーノードで実行されているシステム以外のコンテナによって生成されたすべてのログ。この値はデフォルトでオンになっていますが、すべてのクラスタタイプで省略可能です。
API サーバー API_SERVER kube-apiserver によって生成されたすべてのログ。この値は、すべてのクラスタタイプで省略可能です。
スケジューラ SCHEDULER kube-scheduler によって生成されたすべてのログ。この値は、すべてのクラスタタイプで省略可能です。
コントローラ マネージャー CONTROLLER_MANAGER kube-controller-manager によって生成されたすべてのログ。この値は、すべてのクラスタタイプで省略可能です。

利用可能な指標

Cloud Monitoring に指標を送信する場合は、システム指標を送信する必要があります。必要に応じて指標を追加で送信することもできます。

Cloud Monitoring の料金で、課金対象外の指標などの詳細をご確認ください。

次の表に、create コマンドと update コマンドの --monitoring フラグでサポートされる値を示します。

ソース --monitoring 収集される指標
なし NONE Cloud Monitoring に指標が送信されません。クラスタに指標収集エージェントがインストールされていません。この値は、GKE Autopilot クラスタではサポートされていません。
システム SYSTEM Kubernetes に不可欠なシステム コンポーネントの指標。指標の詳細については、Kubernetes 指標をご覧ください。
API サーバー API_SERVER kube-apiserver からの指標。API サーバーの指標の一覧をご覧ください。
スケジューラ SCHEDULER kube-scheduler からの指標。スケジューラの指標の一覧をご覧ください。
コントローラ マネージャー CONTROLLER_MANAGER kube-controller-manager からの指標。コントローラ マネージャーの指標の一覧をご覧ください。
永続ボリューム(ストレージ) STORAGE kube-state-metrics からのストレージ指標。永続ボリュームの永続ボリューム要求の指標が含まれます。ストレージ指標の一覧をご覧ください。
Pod POD kube-state-metrics からの Pod 指標。Pod 指標の一覧をご覧ください。
Deployment DEPLOYMENT kube-state-metrics からの Deployment 指標。Deployment 指標の一覧をご覧ください。
StatefulSet STATEFULSET kube-state-metrics からの StatefulSet 指標。StatefulSet 指標の一覧をご覧ください。
DaemonSet DAEMONSET kube-state-metrics からの DaemonSet 指標。DaemonSet 指標の一覧をご覧ください。
HorizonalPodAutoscaler HPA kube-state-metrics からの HPA 指標。HorizonalPodAutoscaler 指標の一覧をご覧ください。

さらに、Google Cloud Managed Service for Prometheus を使用して、GKE ワークロードによって公開される Prometheus スタイルの指標を収集することもできます。この方法では、Prometheus を使用してワークロードを監視し、アラートを設定できます。Prometheus を手動で管理したり、大規模な環境で運用する必要はありません。

ログと指標がデフォルトで有効

Google Cloud で新しい GKE クラスタを作成すると、クラスタの作成時に一部のログと指標がデフォルトで有効になります。

  • システムログと指標は、すべてのタイプのクラスタで有効になっており、無効にすることはできません。
  • ワークロード ログは、すべての Autopilot クラスタでデフォルトで有効になっていますが、無効にすることもできます。サポート性に影響するため、ワークロード ログを無効にすることはおすすめしません。
  • GKE Enterprise エディション プロジェクトの場合は、クラスタの作成時にフリートに登録すると、追加の有用なログと指標がデフォルトで有効になります。クラスタの作成後にこれらのログと指標を有効にする場合は、クラスタを変更するをご覧ください。

次の表のチェックマーク()は、GKE Enterprise が有効になっているプロジェクトで新しいクラスタを作成して登録するときに、デフォルトで有効になるログと指標を示しています。

ログ

ログ名 Autopilot スタンダード
システム
ワークロード -
API サーバー
スケジューラ
コントローラ マネージャー

コントロール プレーンのログ(API サーバー、スケジューラ、コントローラ マネージャー)には Cloud Logging の料金が発生します。

指標

指標名 Autopilot スタンダード
システム
API サーバー
スケジューラ
コントローラ マネージャー
永続ボリューム(ストレージ)
Pod
デプロイ
StatefulState
DaemonSet
HorizonalPodAutoscaler

GKE Enterprise が有効になっているプロジェクト内のすべての登録済みクラスタでは、追加料金なしでコントロール プレーン指標Kube 状態指標を使用できます。それ以外の場合、これらの指標には Cloud Monitoring の料金が発生します。

デフォルトのログと指標は、クラスタの作成中またはクラスタの作成後に無効にできます。

新しいクラスタのモニタリングとロギングを構成する

このセクションで説明するクラスタの作成手順は、Cloud Logging と Cloud Monitoring に関連するオプションだけを対象としています。GKE クラスタを作成する詳細な手順については、Standard または Autopilot クラスタの作成に関するドキュメントをご覧ください。

GKE クラスタを作成するときに、ロギングとモニタリングを手動で構成する手順は次のとおりです。

コンソール

Autopilot クラスタの場合:

  1. Autopilot クラスタの作成ページのナビゲーション パネルで、[詳細設定] をクリックします。

    Autopilot クラスタを作成する

  2. [オペレーション] リストで、収集するログと指標を選択します。

    • Cloud Logging の [コンポーネント] リストで、ログを収集するコンポーネントを選択します。

    • Cloud Monitoring の [コンポーネント] リストで、指標を収集するコンポーネントを選択します。

    Autopilot クラスタは、Google のベスト プラクティスに従ってテレメトリーを収集します。つまり、システムとワークロードのロギングは常に有効で、システムのモニタリングも常時有効になっています。

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

Standard クラスタの場合:

  1. Standard クラスタの作成ページのナビゲーション パネルで、[クラスタ] の下の [機能] をクリックします。

    Kubernetes クラスタを作成する

  2. [オペレーション] リストで、収集するログと指標を選択します。

    • Cloud Logging の [コンポーネント] リストで、ログを収集するコンポーネントを選択します。

    • Cloud Monitoring の [コンポーネント] リストで、指標を収集するコンポーネントを選択します。

    • Cloud Logging(監査ログを除く)を無効にするには、[Cloud Logging を有効にする] チェックボックスをオフにします。

    • Cloud Monitoring を無効にするには、[Cloud Monitoring を有効にする] チェックボックスをオフにします。

    • Google Cloud Managed Service for Prometheus を無効にするには、[Google Cloud Managed Service for Prometheus を有効にする] チェックボックスをオフにします。

gcloud

  1. 新しいクラスタの場合、Cloud Logging と Cloud Monitoring がデフォルトで有効になっています。クラスタを作成するには、次のコマンドを実行します。

    gcloud container clusters create CLUSTER_NAME \
        --location=COMPUTE_LOCATION
    

    次のように置き換えます。

    1. また、値のカンマ区切りリストを create コマンドの --logging フラグに渡して、Cloud Logging に送信するログを構成することもできます。ログを収集しない場合は、--logging=NONE を渡します。システム、API サーバー、スケジューラ、コントローラ マネージャーのログを収集するには、--logging=SYSTEM,API_SERVER,SCHEDULER,CONTROLLER_MANAGER を渡します。システムログとワークロード ログの両方を収集するには、--logging=SYSTEM,WORKLOAD を渡します。例:

      gcloud container clusters create CLUSTER_NAME \
          --location=COMPUTE_LOCATION \
          --logging=SYSTEM,WORKLOAD
      
    2. 同様に、値のカンマ区切りリストを --monitoring フラグに渡すことで、Cloud Monitoring に送信する指標を構成できます。指標を収集しない場合は、--monitoring=NONE を渡します。システム指標を収集するには、--monitoring=SYSTEM を渡します。すべての指標を収集するには、--monitoring=SYSTEM,API_SERVER,SCHEDULER,CONTROLLER_MANAGER,STORAGE,POD,DEPLOYMENT,STATEFULSET, DAEMONSET,HPA を渡します。

      gcloud container clusters create CLUSTER_NAME \
          --location=COMPUTE_LOCATION \
          --monitoring=SYSTEM,API_SERVER,SCHEDULER,CONTROLLER_MANAGER,STORAGE,POD,DEPLOYMENT,STATEFULSET,DAEMONSET,HPA
      
    3. これとは別に、--enable-managed-prometheus フラグを使用して Google Cloud Managed Service for Prometheus を有効にできます。例:

      gcloud container clusters create CLUSTER_NAME \
          --location=COMPUTE_LOCATION \
          --enable-managed-prometheus
      

      --enable-managed-prometheus フラグを使用すると、マネージド コレクタが有効になります。このコレクタは構成されている必要があります。

Terraform

  • Terraform を使用してログと指標の収集を構成するには、google_container_cluster の Terraform レジストリlogging_configmonitoring_config のブロックをご覧ください。API サーバー、スケジューラ、コントローラ マネージャーからのログの収集を有効にするには、Terraform Google Cloud プロバイダ バージョン 4.44.0 以降が必要です。

  • Terraform と Google Cloud を使用する場合の一般的な情報については、Google Cloud での Terraform をご覧ください。

既存のクラスタのモニタリングとロギングを構成する

次のセクションでは、既存の GKE クラスタの Cloud Logging と Cloud Monitoring の統合を変更する方法について説明します。

モニタリングとロギングのサポートの変更と、クラスタの Kubernetes バージョンの変更は別個の操作です。クラスタの Kubernetes バージョンを変更しても、構成済みのモニタリングとロギングのサポートは変更されません。

クラスタで使用しているモニタリングとロギングのサポートを確認する

クラスタの Cloud Logging と Cloud Monitoring のインテグレーションの設定を表示する手順は次のとおりです。

  1. Google Cloud コンソールのナビゲーション パネルで [Kubernetes Engine] を選択して、[クラスタ] を選択します。

    [Kubernetes クラスタ] に移動

  2. クラスタの [詳細] パネルで、Cloud LoggingCloud MonitoringGoogle Cloud Managed Service for Prometheus のステータスを確認します。

クラスタを変更する

既存のクラスタの Cloud Logging または Cloud Monitoring の統合設定を変更するには、次の操作を行います。

コンソール

  1. Google Cloud コンソールのナビゲーション パネルで [Kubernetes Engine] を選択して、[クラスタ] を選択します。

    [Kubernetes クラスタ] に移動

  2. クラスタの名前をクリックします。

  3. Cloud Logging に送信されるログ、Cloud Monitoring に送信される指標、Google Cloud Managed Service for Prometheus を有効にするかどうかを変更するには、Cloud Logging、Cloud Monitoring、Google Cloud Managed Service for Prometheus の横にある編集アイコン をクリックします。

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

gcloud

次の gcloud 手順では、gcloud container clusters update コマンドを使用してクラスタのモニタリングとロギングのサポートをアップグレードする方法を説明します。upgrade コマンドではなく、update コマンドを使用している点に注意してください。

  • 値のカンマ区切りリストを gcloud container clusters update コマンドの --logging フラグに渡すことで、Cloud Logging に送信するログを構成します。完全なリストについては、利用可能なログソースをご覧ください。たとえば、システムログとワークロード ログの両方を収集するには、--logging=SYSTEM,WORKLOAD を渡します。システムログのみを収集するには、--logging=SYSTEM を渡します。ログを収集しない場合は、--logging=NONE を渡します。

    gcloud container clusters update CLUSTER_NAME \
        --location=COMPUTE_LOCATION \
        --logging=NONE
    
  • 値のカンマ区切りリストを gcloud container clusters update コマンドの --monitoring フラグに渡すことで、Cloud Monitoring に送信される指標を構成します。完全なリストについては、利用可能な指標ソースをご覧ください。たとえば、システム指標を収集するには、--monitoring=SYSTEM を渡します。指標を収集しない場合は、--monitoring=NONE を渡します。

    gcloud container clusters update CLUSTER_NAME \
        --location=COMPUTE_LOCATION \
        --monitoring=NONE
    
  • --enable-managed-prometheus フラグまたは --disable-managed-prometheus フラグを使用して、Google Cloud Managed Service for Prometheus を有効にするかどうかを構成します。例:

    gcloud container clusters update CLUSTER_NAME \
        --location=COMPUTE_LOCATION \
        --enable-managed-prometheus
    

Terraform

  • Terraform を使用してログと指標の収集を構成するには、google_container_cluster の Terraform レジストリlogging_configmonitoring_config のブロックをご覧ください。API サーバー、スケジューラ、コントローラ マネージャーからのログの収集を有効にするには、Terraform Google Cloud プロバイダ バージョン 4.44.0 以降が必要です。

  • Terraform と Google Cloud を使用する場合の一般的な情報については、Google Cloud での Terraform をご覧ください。

非推奨の構成パラメータ

以前の構成パラメータを使用して GKE クラスタのロギングとモニタリングのサポートを構成していた場合、これらのパラメータは非推奨になっています。次の表に、非推奨のフラグの代わりとなる同等の構成パラメータを示します。

以前の構成 古い create の引数 古い update の引数 新しい create 引数と update 引数
無効 --no-enable-stackdriver-kubernetes --no-enable-stackdriver-kubernetes --logging=NONE
--monitoring=NONE
システム モニタリングのみ(Logging が無効になっている) --enable-stackdriver-kubernetes
--no-enable-cloud-logging
--logging-service=none
--monitoring-service=monitoring.googleapis.com/kubernetes
--logging=NONE
--monitoring=SYSTEM
システムとワークロードのロギングのみ(Monitoring が無効になっている) --enable-stackdriver-kubernetes
--no-enable-cloud-monitoring
--logging-service=logging.googleapis.com/kubernetes
--monitoring-service=none
--logging=SYSTEM,WORKLOAD
--monitoring=NONE
システムのロギングとモニタリングのみ(ベータ版) --enable-logging-monitoring-system-only --enable-logging-monitoring-system-only --logging=SYSTEM
--monitoring=SYSTEM
システムとワークロードのロギングとモニタリング --enable-stackdriver-kubernetes --enable-stackdriver-kubernetes --logging=SYSTEM,WORKLOAD
--monitoring=SYSTEM

次のステップ

  • 料金ページで、Cloud Logging、Cloud Monitoring、Google Cloud Managed Service for Prometheus に関連する費用を確認する。