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 |
以下からログを収集します。
さらに、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 クラスタの場合:
Autopilot クラスタの作成ページのナビゲーション パネルで、[詳細設定] をクリックします。
[オペレーション] リストで、収集するログと指標を選択します。
Cloud Logging の [コンポーネント] リストで、ログを収集するコンポーネントを選択します。
Cloud Monitoring の [コンポーネント] リストで、指標を収集するコンポーネントを選択します。
Autopilot クラスタは、Google のベスト プラクティスに従ってテレメトリーを収集します。つまり、システムとワークロードのロギングは常に有効で、システムのモニタリングも常時有効になっています。
[作成] をクリックします。
Standard クラスタの場合:
Standard クラスタの作成ページのナビゲーション パネルで、[クラスタ] の下の [機能] をクリックします。
[オペレーション] リストで、収集するログと指標を選択します。
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
新しいクラスタの場合、Cloud Logging と Cloud Monitoring がデフォルトで有効になっています。クラスタを作成するには、次のコマンドを実行します。
gcloud container clusters create CLUSTER_NAME \ --location=COMPUTE_LOCATION
次のように置き換えます。
CLUSTER_NAME
: クラスタの名前。COMPUTE_LOCATION
: クラスタの Compute Engine のロケーション。
また、値のカンマ区切りリストを
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
同様に、値のカンマ区切りリストを
--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
これとは別に、
--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_config
とmonitoring_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 のインテグレーションの設定を表示する手順は次のとおりです。
-
Google Cloud コンソールのナビゲーション パネルで [Kubernetes Engine] を選択して、[クラスタ] を選択します。
クラスタの [詳細] パネルで、Cloud Logging、Cloud Monitoring、Google Cloud Managed Service for Prometheus のステータスを確認します。
クラスタを変更する
既存のクラスタの Cloud Logging または Cloud Monitoring の統合設定を変更するには、次の操作を行います。
コンソール
-
Google Cloud コンソールのナビゲーション パネルで [Kubernetes Engine] を選択して、[クラスタ] を選択します。
クラスタの名前をクリックします。
Cloud Logging に送信されるログ、Cloud Monitoring に送信される指標、Google Cloud Managed Service for Prometheus を有効にするかどうかを変更するには、Cloud Logging、Cloud Monitoring、Google Cloud Managed Service for Prometheus の横にある編集アイコン edit をクリックします。
[保存] をクリックします。
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_config
とmonitoring_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 に関連する費用を確認する。
- Cloud Logging で GKE ログを表示する方法を学習する。