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"
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 | ゲージ | version | Config Connector の最新バージョン。 |
configconnector_reconcile_workers_total | ゲージ | group_version_kind | リソースの種類ごとに集計された、調整ワーカーの合計数。 |
configconnector_reconcile_occupied_workers_total | ゲージ | group_version_kind | リソースの種類ごとに集計された、占有された調整ワーカーの合計数。 |
リソース名ラベルの有効化
デフォルトでは、指標はリソースの種類(PubSubTopic など)で集計されます。指標を個別のリソースごとに集計できます。
リソース名で集計を有効にするには、次の手順を実行します。
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
配列
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 のクエリ言語のドキュメントと例を確認する。