cAdvisor / Kubelet

Kubelet は、それ自体に関する指標と、ノード上で実行されているコンテナに関する cAdvisor の指標を公開します。

Cloud Monitoring では、このインテグレーションを構成する代わりに、すぐに使用できる cAdvisor / Kubelet 指標のマネージド コレクションを使用できます。フルマネージド コレクション オプションでは、新しいクラスタに設定される独自の指標セットがデフォルトで提供されます。

このドキュメントで説明するインテグレーションでは cAdvisor のすべての指標が提供されます。これらの指標の多くは不要であり、フィルタリングが必要になることがあります。これは Google Kubernetes Engine やその他の Kubernetes 環境で使用できます。cAdvisor / Kubelet 指標のマネージド セットは、最も有用な指標のみを提供するようにキュレートされています。これは GKE でのみ使用できます。詳細については、パッケージ: cAdvisor / Kubelet の指標をご覧ください。

このドキュメントの説明に従って cAdvisor 指標の収集を設定すると、この構成は GKE マネージド cAdvisor の構成よりも優先されます。このドキュメントで説明する構成により、マネージド cAdvisor 指標のスーパーセットが有効になります。

このドキュメントで説明するアプローチを使用する場合、カスタム PodMonitoring 構成を使用する代わりに、OperatorConfig を編集してマネージド コレクションを構成し、cAdvisor 指標と Kubelet 指標を自動的にスクレイピングできます。マニフェストをインストールするには、マニフェストをローカル ファイルにコピーしてから kubectl apply -f FILE_NAME を実行します。Terraform を使用してマニフェストをインストールすることもできます。

  1. OperatorConfig リソースを開いて編集します。

    kubectl -n gmp-public edit operatorconfig config
    
  2. 次の collection セクション(太字の部分)をリソースに追加します。

    apiVersion: monitoring.googleapis.com/v1
    kind: OperatorConfig
    metadata:
      namespace: gmp-public
      name: config
    collection:
      kubeletScraping:
        interval: 30s
    
  3. ファイルを保存して、エディタを閉じます。

しばらくすると、Kubelet 指標エンドポイントがスクレイピングされ、その指標が Managed Service for Prometheus 内でクエリできるようになります。

Kubelet スクレイピングにはいくつかのデフォルト フィルタが付属しています。次に示すように、OperatorConfig リソースの collection セクションにフィルタを追加できます。filter.matchOneOf 構成セクションのセマンティクスは、Prometheus フェデレーションの match[] パラメータと同じです。

次の例では、container_foo または container_bar で始まる指標を除外しています。

collection:
  filter:
    matchOneOf:
    - '{__name__!~"container_foo.*|container_bar.*"}'

この OperatorConfig 収集フィルタは、デバッグの目的でも使用できます。たとえば、PodMonitoring リソースを変更せずに、クラスタ内の特定の指標の収集を一時的に無効にすることもできます。

cAdvisor の詳細設定のヒント

cAdvisor をセルフデプロイするか、cAdvisor を使用して Kubelet に詳細構成を提供する場合は、cAdvisor の詳細設定を使用して追加のラベルを適用できます。

特に、指標には Kubernetes コンテナのラベルや環境変数を適用しないようにしてください。適用する必要がある場合は、許可リストのパターンを使用して、これらのラベルを厳密に制御してください(たとえば、PodMonitoring metricRelabeling セクションを使用します)。

指標に追加するラベルの数を制御すると、ラベル数の上限を超えないようにすることができます。