Prometheus による Config Connector のモニタリング
Prometheus を使用して、Config Connector から指標を収集して表示できます。
始める前に
このページの手順を完了するには、クラスタに Prometheus をインストールする必要があります。方法は以下のとおりです。
- CoreOS によって提供されている Prometheus Operator を使用する、または 
- Prometheus のドキュメントに従って、クラスタをスクレイピング用に構成する。 
指標の取得
Prometheus は、HTTP エンドポイントをスクレイピングすることで指標を収集します。このセクションでは、Config Connector のスクレイピング エンドポイントと Prometheus の構成について説明します。
Config Connector スクレイピング エンドポイント
Config Connector の場合、サービス エンドポイントはポート 8888 の cnrm-controller-manager-service と cnrm-resource-stats-recorder-service にあります。これらのサービスには、prometheus.io/scrape: "true" アノテーションと prometheus.io/port: "8888" アノテーションがあります。サービスには、ラベル cnrm.cloud.google.com/monitored: "true" と cnrm.cloud.google.com/system: "true" も含まれます。これらのアノテーションとラベルから Config Connector コンポーネントを取得するように Prometheus を構成します。
Prometheus の構成
指標を取得するには、Kubernetes REST API からの取得対象を検出するために、Prometheus を Kubernetes の Service Discovery(SD)用に構成する必要がある場合があります。
Config Connector から指標を取得するために Prometheus を構成する方法は、Prometheus のインストール方法によって異なります。構成を更新する方法については、Prometheus のインストールのドキュメントをご覧ください。
たとえば、Prometheus Operator を使用していて、それを ServiceMonitor で構成している場合、次の構成を適用して、Config Connector から指標を取得できます。
  spec:
    endpoints:
    - interval: 10s
      port: metrics
    namespaceSelector:
      matchNames:
      - cnrm-system
    selector:
      matchLabels:
        cnrm.cloud.google.com/monitored: "true"
        cnrm.cloud.google.com/system: "true"
クエリの例
Prometheus は、PromQL と呼ばれるクエリ言語を使用します。このセクションでは、Config Connector の指標に対する PromQL クエリの例を示します。任意の有効な PromQL クエリからアラートを生成するように Prometheus を構成できます。
リソースの種類とステータスごとの調整リクエストのクエリ
失敗した調整リクエストの数は、リソースの種類とステータスで確認できます。
たとえば、PubSubTopic リソースのエラーの総数を確認するには、次のクエリを使用します。
configconnector_reconcile_requests_total{group_version_kind="PubSubTopic.pubsub.cnrm.cloud.google.com", status="ERROR"}
種類と Namespace ごとにリソースの集計状況を確認する
Namespace にあるリソースの数を確認できます。
たとえば、default Namespace の PubSubTopic リソースの合計数を確認するには、次のクエリを使用します。
configconnector_applied_resources_total{group_version_kind="PubSubTopic.pubsub.cnrm.cloud.google.com", Namespace="default"}
リソースの種類ごとの調整ワーカーの使用状況のクエリ
(configconnector_reconcile_occupied_workers_total / configconnector_reconcile_workers_total)
利用可能な指標
Config Connector は以下の指標を収集して、使用可能にします。
| 名前 | タイプ | ラベル | 説明 | 
|---|---|---|---|
| configconnector_reconcile_requests_total | カウンタ | Namespace group_version_kind ステータス | 調整リクエストの総数。 | 
| configconnector_reconcile_request_duration_seconds | ヒストグラム | Namespace group_version_kind ステータス | 調整リクエストを完了するための時間の配分。 | 
| configconnector_applied_resources_total | ゲージ | Namespace group_version_kind ステータス | 管理下のリソースの総数。 | 
| configconnector_build_info | ゲージ | version | Config Connector の最新バージョン。 | 
| configconnector_reconcile_workers_total | ゲージ | group_version_kind | リソースの種類ごとに集計された、調整ワーカーの合計数。 | 
| configconnector_reconcile_occupied_workers_total | ゲージ | group_version_kind | リソースの種類ごとに集計された、占有された調整ワーカーの合計数。 | 
リソース名ラベルの有効化
デフォルトでは、指標はリソースの種類(PubSubTopic など)で集計されます。指標を個別のリソースごとに集計できます。
リソース名で集計を有効にするには、次の手順を実行します。
- cnrm-controller-managerStatefulSet オブジェクトの編集- kubectl edit statefulset cnrm-controller-manager -n cnrm-system - Namespace モードを使用している場合は、 - NAMESPACE_NAMEを Namespace に置き換えます。- kubectl edit statefulset cnrm-controller-manager -n NAMESPACE_NAME 
- 配列 - spec.argsを見つけて、- --resource-name-label=trueを追加します。- apiVersion: apps/v1 kind: StatefulSet name: cnrm-controller-manager spec: template: spec: containers: - name: manager args: - --resource-name-label=true
次のステップ
クエリの作成の詳細については、Prometheus のクエリ言語のドキュメントと例をご覧ください。