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

Google Kubernetes Engine(GKE)には、Google Cloud Managed Service for Prometheus など、Cloud Logging や Cloud Monitoring との統合が含まれています。この統合により、高度なプロファイリング機能とトレース機能を使用して、稼働中の GKE クラスタのモニタリング、システムログとデバッグログの管理、システムのパフォーマンス分析を行うことができます。この統合では、クラスタをモニタリングするための高度な GKE ダッシュボードも提供されます。

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

  • 新しいクラスタを作成し、Cloud Logging、Cloud Monitoring、Prometheus 向けのマネージド サービスを構成する。

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

  • クラスタの Cloud Logging、Cloud Monitoring、Prometheus 向けのマネージド サービスを無効にする。

始める前に

  • クラスタが含まれているプロジェクトのオーナーであることを確認します。

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

使用可能なログ

GKE クラスタから Cloud Logging にログを送信するかどうかを選択できます。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 によって生成されたすべてのログ。

利用可能な指標

GKE クラスタから Cloud Monitoring に指標を送信するかどうかを選択できます。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 kube-state-metrics からのデプロイメント指標。デプロイメント指標の一覧をご覧ください。
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 を手動で管理したり、大規模な環境で運用する必要はありません。

新しいクラスタを対象としたモニタリングとロギングのサポートの構成

このセクションのクラスタ作成手順は、Cloud Logging と Cloud Monitoring に関連するオプションだけを対象としています。GKE クラスタの詳しい作成手順については、クラスタの作成をご覧ください。

コンソール

  1. Google Cloud コンソールで [Kubernetes Engine] を選択し、[クラスタ] を選択するか、次のボタンをクリックします。

    Kubernetes クラスタに移動

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

  3. Standard モードの [構成] をクリックします。

  4. ナビゲーション パネルの [クラスタ] の下の [機能] をクリックします。

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

    • 新しいクラスタの場合、Cloud Logging と Cloud Monitoring がデフォルトで有効になっています。

    • 収集するログを変更するには、Cloud Logging の [コンポーネント] メニューをクリックして、ログを収集するコンポーネントを選択します。

    • 収集する指標を変更するには、Cloud Monitoring の [コンポーネント] メニューをクリックして、指標を収集するコンポーネントを選択します。

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

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

    • Managed Service for Prometheus を有効にするには、[Prometheus 向けのマネージド サービスの有効化] チェックボックスをオンにします(1.21.4-gke.300 以降が必要です)。このチェックボックスをオンにすると、マネージド コレクタが有効になります。これは構成が必要です。

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

gcloud

gcloud を使用してクラスタを作成します。

  1. Google Cloud CLI がインストールされているデバイスで、ターミナル ウィンドウを開きます。たとえば、Cloud Shell を使用してこの操作を行います。

  2. Google Cloud コンソールで、「Cloud Shell をアクティブにする」をクリックします。

    Cloud Shell をアクティブにする

    Google Cloud コンソールの下部で Cloud Shell セッションが開始し、コマンドライン プロンプトが表示されます。Cloud Shell はシェル環境です。Google Cloud CLI がすでにインストールされており、現在のプロジェクトの値もすでに設定されています。セッションが初期化されるまで数秒かかることがあります。

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

    gcloud container clusters create CLUSTER_NAME \
      --region=REGION \
      --project=PROJECT_ID
    

    前の式では、CLUSTER_NAME はクラスタ名、[ZONE] はクラスタのコンピューティング ゾーンです。PROJECT_ID はプロジェクト名ではなく、Google Cloud のプロジェクト ID です。

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

      gcloud container clusters create CLUSTER_NAME \
        --region=REGION \
        --project=PROJECT_ID \
        --logging=SYSTEM,WORKLOAD
      
    2. 同様に、値のカンマ区切りリストを create コマンドの --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 \
        --region=REGION \
        --project=PROJECT_ID \
        --monitoring=SYSTEM,API_SERVER,SCHEDULER,CONTROLLER_MANAGER,STORAGE,POD,DEPLOYMENT,STATEFULSET,DAEMONSET,HPA
      
    3. これとは別に、--enable-managed-prometheus フラグを使用して Managed Service for Prometheus を有効にできます。例:

      gcloud container clusters create CLUSTER_NAME \
        --region=REGION \
        --project=PROJECT_ID \
        --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 の統合を変更する方法について説明します。

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

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

  1. Google Cloud コンソールで [Kubernetes Engine] を選択し、[クラスタ] を選択するか、次のボタンをクリックします。

    Kubernetes クラスタに移動

  2. クラスタの [詳細] パネルで、Cloud LoggingCloud MonitoringPrometheus 向けのマネージド サービスのステータスを確認します。

クラスタを変更する

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

コンソール

  1. Google Cloud コンソールで [Kubernetes Engine] を選択し、[クラスタ] を選択するか、次のボタンをクリックします。

    Kubernetes クラスタに移動

    }

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

  3. Cloud Logging に送信されるログ、Cloud Monitoring に送信される指標、Prometheus 向けのマネージド サービスを有効にするかどうかを変更するには、Cloud Logging、Cloud Monitoring、Prometheus 向けのマネージド サービスの横にある [編集 ] をクリックします。

  4. Cloud Logging、Cloud Monitoring、または Managed Service for Prometheus の構成を変更したら、[保存] をクリックします。

gcloud

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

  1. gcloud CLI がインストールされているデバイスで、ターミナル ウィンドウを開きます。たとえば、Cloud Shell を使用してこの操作を行います。

  2. Google Cloud コンソールで、「Cloud Shell をアクティブにする」をクリックします。

    Cloud Shell をアクティブにする

    Google Cloud コンソールの下部で Cloud Shell セッションが開始し、コマンドライン プロンプトが表示されます。Cloud Shell はシェル環境です。Google Cloud CLI がすでにインストールされており、現在のプロジェクトの値もすでに設定されています。セッションが初期化されるまで数秒かかることがあります。

  3. まだ行っていない場合は、gcloud CLI でクラスタのデフォルト値を設定します。

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

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

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

        gcloud container clusters update CLUSTER_NAME \
          --region=REGION \
          --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

次のステップ