使用 Prometheus 监控 Config Connector

您可以使用 Prometheus 从 Config Connector 中收集和显示指标。

准备工作

要完成本文档中的步骤,需要在您的集群上安装 Prometheus。为此,您可以执行以下操作:

抓取指标

Prometheus 通过抓取 HTTP 端点来收集指标。本部分介绍了 Config Connector 如何抓取端点和配置 Prometheus。

Config Connector 抓取端点

对于 Config Connector,服务端点位于 cnrm-controller-manager-servicecnrm-resource-stats-recorder-service 的端口 8888 上。这些服务具有 prometheus.io/scrape: "true"prometheus.io/port: "8888" 注释。服务还包括标签 cnrm.cloud.google.com/monitored: "true"cnrm.cloud.google.com/system: "true"。您可以配置 Prometheus,以从这些注释和标签中抓取 Config Connector 组件。

配置 Prometheus

在抓取指标之前,您可能需要为 Kubernetes Service Discovery (SD) 配置 Prometheus,才能从 Kubernetes REST API 发现抓取目标。

配置 Prometheus 以从 Config Connector 抓取指标的方法取决于 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 查询示例。您可以配置 Prometheus 以从任何有效的 PromQL 查询中生成警报

按资源种类和状态来查询协调请求

您可以按资源种类和状态查看协调失败的请求计数。

例如,要检查 PubSubTopic 资源的错误总数,请使用以下查询。

configconnector_reconcile_requests_total{group_version_kind="PubSubTopic.pubsub.cnrm.cloud.google.com", status="ERROR"}

按种类和命名空间来检查资源的汇总状态

您可以查看命名空间中的资源数量。

例如,如需检查 default 命名空间中 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 计数器 命名空间
group_version_kind
状态
协调请求总数。
configconnector_reconcile_request_duration_seconds 直方图 命名空间
group_version_kind
状态
完成协调请求所需的时间分配。
configconnector_applied_resources_total 采样平均值 命名空间
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_NAME] 替换为您的命名空间。

    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 查询语言文档示例