Prometheus による Config Connector のモニタリング

Prometheus を使用して、Config Connector から指標を収集して表示できます。

始める前に

このドキュメントの手順を完了するには、クラスタに Prometheus をインストールする必要があります。方法は以下のとおりです。

指標の取得

Prometheus は、HTTP エンドポイントをスクレイピングすることで指標を収集します。このセクションでは、Config Connector のスクレイピング エンドポイントと Prometheus の構成について説明します。

Config Connector スクレイピング エンドポイント

Config Connector の場合、サービス エンドポイントはポート 8888 の cnrm-controller-manager-servicecnrm-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"

ServiceMonitor の設定の詳細については、Prometheus Operator のドキュメントのスタートガイドをご覧ください。

クエリの例

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 ゲージ バージョン Config Connector の現在のバージョン。
configconnector_reconcile_workers_total ゲージ group_version_kind リソースの種類ごとに集計された、調整ワーカーの合計数。
configconnector_reconcile_occupied_workers_total ゲージ group_version_kind リソースの種類ごとに集計された、占有された調整ワーカーの合計数。

リソース名ラベルの有効化

デフォルトでは、指標はリソースの種類(PubSubTopic など)で集計されます。指標を個別のリソースごとに集計できます。

リソース名で集計を有効にするには、次の手順を実行します。

  1. cnrm-controller-manager StatefulSet オブジェクトを編集する

    kubectl edit statefulset cnrm-controller-manager -n cnrm-system

    Namespace が指定されたモードを使用している場合は、[NAMESPACE_NAME] を Namespace に置き換えます。

    kubectl edit statefulset cnrm-controller-manager -n [NAMESPACE_NAME]
  2. 配列 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 のクエリ言語のドキュメントをご覧ください。