指標の収集を構成する


このドキュメントでは、Cloud Monitoring に指標を送信するように Google Kubernetes Engine(GKE)を構成する方法について説明します。Cloud Monitoring の指標は、カスタム ダッシュボードに取り込み、アラートの生成やサービスレベル目標の設定に使用できます。また、Cloud Monitoring API を使用して、サードパーティのモニタリング サービスから指標を取得することもできます。

GKE にはいくつかの指標のソースが用意されています。

  • システム指標: 重要なシステム コンポーネントの指標。CPU、メモリ、ストレージなどの低レベルのリソースを記述します。
  • Google Cloud Managed Service for Prometheus では、Prometheus を大規模に手動で管理、運用しなくても、Prometheus を使用して Kubernetes のワークロードのモニタリングや、Kubernetes のデプロイに関するアラートの送信を行うことができます。
  • オブザーバビリティ指標のパッケージ:

    • コントロール プレーンの指標: API サーバーやスケジューラなどの特定のコントロール プレーン コンポーネントからエクスポートされた指標。
    • Kube 状態指標: Kube 状態サービスからエクスポートされた厳選された指標のセット。Pod、Deployment などの Kubernetes オブジェクトの状態のモニタリングに使用されます。含まれる指標のセットについては、Kube 状態指標を使用するをご覧ください。

      Kube 状態パッケージはマネージド ソリューションです。追加の指標の収集、スクレイピング間隔の管理、他のリソースのスクレイピングなど、より柔軟な機能が必要な場合は、パッケージを無効にする(有効になっている場合)と、オープンソースの Kube 状態指標サービスの独自のインスタンスをデプロイできます。詳細については、Google Cloud Managed Service for Prometheus エクスポータのドキュメントで Kube 状態指標をご覧ください。

    • cAdvisor / Kubelet: cAdvisor と Kubelet の指標のキュレートされたセット。含まれる指標のセットについては、cAdvisor / Kubelet の指標を使用するをご覧ください。

      cAdvisor / Kubelet パッケージはマネージド ソリューションです。追加の指標の収集、スクレイピング間隔の管理、他のリソースのスクレイピングなど、より柔軟な機能が必要な場合は、パッケージを無効にする(有効になっている場合)と、オープンソースの cAdvisor / Kubelet 指標サービスの独自のインスタンスをデプロイできます。

    • NVIDIA Data Center GPU Manager(DCGM)指標: GPU の正常性、パフォーマンス、使用率を包括的に把握するための DCGM の指標。

システム指標

クラスタが作成されると、GKE では、デフォルトでシステム コンポーネントによって出力された特定の指標が収集されます。

GKE クラスタから Cloud Monitoring に指標を送信するかどうかを選択できます。Cloud Monitoring に指標を送信する場合は、システム指標を送信する必要があります。

すべての GKE システム指標は、接頭辞 kubernetes.io を付けて Cloud Monitoring に取り込まれます。

料金

Cloud Monitoring は、GKE のシステム指標の取り込みに対して課金しません。詳細については、Cloud Monitoring の料金をご覧ください。

システム指標の収集の構成

システム指標の収集を有効にするには、SYSTEM 値を gcloud container clusters create コマンドまたは gcloud container clusters update コマンドの --monitoring フラグに渡します。

システム指標の収集を無効にするには、--monitoring フラグに NONE 値を使用します。システム指標の収集が無効になっている場合、オブザーバビリティ指標を表示する際に、クラスタの CPU 使用率、メモリ使用量、ディスク使用量などの基本情報は表示されません。

GKE Autopilot クラスタでは、システム指標の収集を無効にすることはできません。

Cloud Monitoring と GKE のインテグレーションの詳細については、GKE のオブザーバビリティをご覧ください。

Terraform を使用してシステム指標の収集を構成するには、google_container_cluster の Terraform レジストリmonitoring_config ブロックをご覧ください。Terraform と Google Cloud を使用する場合の一般的な情報については、Google Cloud での Terraform をご覧ください。

システム指標の一覧

システム指標には、Kubernetes にとって重要なシステム コンポーネントの指標が含まれます。これらの指標のリストについては、GKE システム指標をご覧ください。

クラスタで Cloud Monitoring を有効にした場合、システム モニタリング(--monitoring=SYSTEM)を無効にすることはできません。

GKE Enterprise のデフォルトで有効になっている指標

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

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

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

システム指標のトラブルシューティング

Cloud Monitoring でシステム指標が予期したとおりに表示されない場合は、システム指標のトラブルシューティングをご覧ください。

パッケージ: コントロール プレーンの指標

Kubernetes API サーバー、スケジューラ、コントローラ マネージャーによって出力された特定の指標を Cloud Monitoring に送信するように GKE クラスタを構成できます。

詳細については、コントロール プレーンの指標の収集と表示をご覧ください。

パッケージ: Kube 状態指標

厳選された Kube 状態指標のセットを Prometheus 形式で Cloud Monitoring に送信するように GKE クラスタを構成できます。この Kube 状態指標のパッケージには、Pod、Deployment、StatefulSet、DaemonSet、HorizontalPodAutoscaler リソース、永続ボリューム、永続ボリューム要求の指標が含まれています。

詳細については、Kube 状態指標の収集と表示をご覧ください。

パッケージ: cAdvisor / Kubelet 指標

厳選された cAdvisor / Kubelet 指標の状態セットを Prometheus 形式で Cloud Monitoring に送信するように GKE クラスタを構成できます。厳選された指標のセットは、すべての Kubernetes Deployment にデフォルトで組み込まれた大規模な cAdvisor / Kubelet 指標セットのサブセットです。厳選された cAdvisor / Kubelet は、最も有用な指標を提供するように設計されています。これにより、取り込み量と関連コストを押させることができます。

詳細については、cAdvisor / kubelet の指標の収集と表示をご覧ください。

パッケージ: NVIDIA Data Center GPU Manager(DCGM)の指標

NVIDIA Data Center GPU Manager(DCGM)の指標を Cloud Monitoring に送信するように GKE を構成すると、GPU の使用率、パフォーマンス、正常性をモニタリングできます。

詳細については、NVIDIA Data Center GPU Manager(DCGM)の指標の収集と表示をご覧ください。

指標パッケージを無効にする

クラスタで指標パッケージの使用を無効にできます。特定のパッケージを無効にしてコストを削減したり、Google Cloud Managed Service for Prometheus やエクスポータなど、指標の収集に代替メカニズムを使用できます。

コンソール

クラスタの [詳細] タブで指標の収集を無効にするには、次の操作を行います。

  1. Google Cloud コンソールで、[Kubernetes クラスタ] ページに移動します。

    [Kubernetes クラスタ] に移動

    検索バーを使用してこのページを検索する場合は、小見出しが [Kubernetes Engine] である結果を選択します。

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

  3. [機能] で「Cloud Monitoring」というラベルの付いた行の編集アイコンをクリックします。

  4. [コンポーネント] プルダウン メニューで、無効にする指標コンポーネントをオフにします。

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

  6. [変更を保存] をクリックします。

gcloud

  1. Google Cloud SDK と Google Cloud CLI がインストールされているデバイスでターミナル ウィンドウを開きます。この操作は Cloud Shell で行うことができます。

  2. In the Google Cloud console, activate Cloud Shell.

    Activate Cloud Shell

    At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.

  3. gcloud container clusters update コマンドを呼び出し、更新された値のセットを --monitoring フラグに渡します。--monitoring フラグに指定された値のセットは、以前の設定をオーバーライドします。

    たとえば、システム指標以外のすべての指標の収集を無効にするには、次のコマンドを実行します。

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

    このコマンドにより、以前に構成された指標パッケージの収集が無効になります。

Terraform

Terraform を使用して指標の収集を構成するには、google_container_cluster の Terraform レジストリmonitoring_config ブロックをご覧ください。Terraform と Google Cloud を使用する場合の一般的な情報については、Google Cloud での Terraform をご覧ください。

Monitoring の料金について

Cloud Monitoring を使用すると、最も多くのサンプルを書き込んでいるコントロール プレーンや Kube 状態指標を特定できます。これらの指標は費用に大きく影響します。最もコストの高い指標を特定したら、取得構成を変更して、それらの指標を適切にフィルタリングできます。

Cloud Monitoring の [指標の管理] ページでは、オブザーバビリティに影響を与えることなく、課金対象の指標に費やす金額を制御するために役立つ情報が提供されます。[指標の管理] ページには、次の情報が表示されます。

  • 指標ドメイン全体と個々の指標での、バイトベースとサンプルベースの両方の課金に対する取り込み量。
  • 指標のラベルとカーディナリティに関するデータ。
  • 各指標の読み取り回数。
  • アラート ポリシーとカスタム ダッシュボードでの指標の使用。
  • 指標書き込みエラーの割合。

また、指標の管理を使用して不要な指標を除外し、取り込みのコストを削減することもできます。

[指標の管理] ページを表示するには、次の操作を行います。

  1. Google Cloud コンソールで、[指標の管理] ページに移動します。

    [指標の管理] に移動

    検索バーを使用してこのページを検索する場合は、小見出しが [Monitoring] の結果を選択します。

  2. ツールバーで時間枠を選択します。デフォルトでは、[指標の管理] ページには、過去 1 日間に収集された指標に関する情報が表示されます。

[指標の管理] ページの詳細については、指標の使用状況の表示と管理をご覧ください。

取り込まれるサンプル数が最も多いコントロール プレーン指標または Kube 状態指標を特定するには、次の操作を行います。

  1. Google Cloud コンソールで、[指標の管理] ページに移動します。

    [指標の管理] に移動

    検索バーを使用してこのページを検索する場合は、小見出しが [モニタリング] である結果を選択します。

  2. [取り込まれた課金対象のサンプル数] スコアカードで、[グラフを表示] をクリックします。

  3. [名前空間ボリュームの取り込み] グラフを探して、 [その他のグラフ オプション] をクリックします。

  4. [指標] フィールドで、次のリソースと指標が選択されていることを確認します。
    Metric Ingestion AttributionSamples written by attribution id

  5. [フィルタ] ページで、次の操作を行います。

    1. [ラベル] フィールドで、値が attribution_dimension であることを確認します。

    2. [比較] フィールドで、値が = (equals) であることを確認します。

    3. [] フィールドで [cluster] を選択します。

  6. [グループ条件] の設定をクリアします。

  7. 必要に応じて、特定の指標のみをフィルタします。たとえば、コントロール プレーンの API サーバー指標はすべて指標名の一部として「apiserver」を含み、Kube 状態の Pod 指標はすべて指標名の一部として「kube_pod」を含むため、これらの文字列を含む指標をフィルタできます。

    • [フィルタを追加] をクリックします。

    • [Label] フィールドで metric_type を選択します。

    • [Comparison] フィールドで [=~ (equals regex)] を選択します。

    • [Value] に「.*apiserver.*」または「.*kube_pod.*」と入力します。

  8. 必要に応じて、取り込まれたサンプル数を GKE リージョンまたはプロジェクトでグループ化します。

    • [Group by] をクリックします。

    • metric_type が選択されていることを確認します。

    • GKE リージョン別にグループ化するには、[location] を選択します。

    • プロジェクトでグループ化するには、[project_id] を選択します。

    • [OK] をクリックします。

  9. 必要に応じて、取り込まれたサンプル数を GKE クラスタ名でグループ化します。

    • [Group by] をクリックします。

    • GKE クラスタ名でグループ化するには、[attribution_dimension] と [attribution_id] の両方が選択されていることを確認します。

    • [OK] をクリックします。

  10. 各指標の取り込み量を確認するには、[グラフテーブルの両方] の切り替えボタンで、[両方] を選択します。このテーブルの [] 列には、各指標の取り込み量が表示されます。

    [] 列のヘッダーを 2 回クリックして、取り込み量の降順で指標を並べ替えます。

以下の手順では、Cloud Monitoring に取り込まれたサンプルレートが最も高い指標について説明しています。オブザーバビリティ パッケージの指標は取り込まれたサンプル数に応じて課金されるため、取り込まれるサンプルが最も多い指標に注意してください。

その他の指標

このドキュメントで説明するシステム指標と指標パッケージに加えて、Istio の指標も GKE クラスタで使用できます。料金については、Cloud Monitoring の料金をご覧ください。

利用可能な指標

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

ソース --monitoring 収集される指標
なし NONE Cloud Monitoring に指標が送信されません。クラスタに指標収集エージェントがインストールされていません。この値は 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 指標。指標の一覧については、デプロイ指標をご覧ください。
StatefulSet STATEFULSET kube-state-metrics からの StatefulSet 指標。指標の一覧については、StatefulSet の指標をご覧ください。
DaemonSet DAEMONSET kube-state-metrics からの DaemonSet 指標。指標の一覧については、DaemonSet の指標をご覧ください。
HorizonalPodAutoscaler HPA kube-state-metrics からの HPA 指標。 HorizonalPodAutoscaler 指標の一覧をご覧ください。
cAdvisor CADVISOR cAdvisor / Kubelet 指標パッケージの cAdvisor 指標。指標の一覧については、cAdvisor の指標をご覧ください。
kubelet KUBELET cAdvisor / kubelet の kubelet 指標。指標の一覧については、kubelet の指標をご覧ください。
NVIDIA Data Center GPU Manager(DCGM)の指標 DCGM NVIDIA Data Center GPU Manager(DCGM)の指標。

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

次のステップ