You need to enable JavaScript to run this app.
导航
无法正确查看到预期的指标?
最近更新时间:2024.03.01 11:23:08首次发布时间:2023.05.15 15:53:28

托管 Prometheus 服务支持通过 ServiceMonitor 或 PodMonitor 来进行服务发现。但是,有时候当您完成配置后,却无法正确查看到采集到的指标。本文为您介绍如何进行服务发现配置的故障排除。

故障现象

在托管 Prometheus 服务中配置了 ServiceMonitor 或 PodMonitor 后,并未采集到期望的指标数据。

原因分析

造成您无法查看到期望指标的可能原因有:

  1. 查询语句错误,导致无法查询出正确的结果。
  2. 服务发现配置错误,导致 Target 未被正确发现。
  3. 确认 Target 被发现且正常采集。
  4. 查询的指标有误。

整体排障流程如下图所示。其中,Target、Exporter 端口均为示例。
alt

排障步骤

步骤一:确认查询语句正确

查询指标时,请首先确认您使用的查询语句正确。错误的查询语句会导致查询出的指标错误,或者干脆查询不出任何结果。

查询语句的使用方法,请参见 PromQL 基本用法

步骤二:检查服务发现配置是否正确

说明

请确保您已经正确配置了 ServiceMonitor 或 PodMonitor,配置的详细步骤,请参见 服务发现

  1. 登录 容器服务控制台
  2. 在左侧菜单栏中选择 集群,并在右侧集群列表中选择采集器所在集群。
  3. 单击集群名称,进入集群配置页面。
  4. 在左侧菜单栏中选择 工作负载 > 对象浏览器。在 分类 下拉菜单中选择 CRD,找到 PodMonitor 或 ServiceMonitor,单击名称,进入对应的 CRD 列表。
    alt
  5. 确认您配置的 PodMonitor 或 ServiceMonitor 是否在列表中。
    • 如果您的配置 在列表中,表明配置已经下发,请执行下一步。
    • 如果您的配置 不在列表中,表明配置未成功下发,请重新下发配置。
  6. 选择目标配置项,在 操作 列中选择 ... > 编辑 Yaml,检查 PodMonitor 或 ServiceMonitor 的配置是否正确。
    请重点检查配置中的 namespaceSelector 字段选择的命名空间和 selector 字段选择的标签,与 Service 或 Pod 的配置是否相同。
namespaceSelector:
    matchNames:
    - kube-system # 重点检查此处配置的命名空间,是否与 Service/Pod 所在的命名空间一致
  selector:
    matchLabels:
      app.kubernetes.io/name: dcgm-exporter # 重点检查此处配置的 Label 名和值,是否与 Service/Pod 配置的一致

步骤三:确认 Target 被发现且正常采集

您可以采用如下步骤,确定采集器是否正确发现 Target 且正常采集:

  1. 登录 VMP 服务控制台
  2. 在顶部导航栏,选择目标地域。
  3. 单击左侧导航栏的 Explore,进入 Explore 页面。
  4. 在右上角的配置项中,配置需要查询指标的 工作区,并在 指标检索 文本框内,输入 up{job="xxxx"},查看对应的服务是否被正确发现。
    alt

步骤四:检查采集对象中的指标

您可以采用如下步骤,确认 Target 中确实存在您需要的指标:

  1. 在本地环境中,使用 kubectl 连接采集器所在集群。
  2. 执行以下命令,将采集对象(例如 Exporter)的端口映射到本地。
kubectl port-forward pod/rabbitmq-exporter-5fxxxx 9419:9419 -n volcano-metrics

说明

  • 采集对象可能部署在集群中,也可能部署在集群外部(例如部署在 ECS 主机上),本例以采集对象部署在集群中举例。如果采集对象部署在集群外部,您可以直接使用 curl http://target-ip:port/metrics 的方式访问到采集对象。
  • rabbitmq-exporter-5fxxxx 为采集对象的实例名称,本例中以 RabbitMQ-Exporter 为例,您需要在实际操作中替换成您的采集对象的实例名称。
  • 9419 为该采集对象暴露指标的端口号。不同采集对象的端口号不同,您需要在实际操作中替换成正确的端口号。
  • -n volcano-metrics 为采集对象所在的命名空间,您需要在实际操作中替换成采集对象所在的命名空间。
  1. 在本地环境(Linux/Mac)中打开浏览器,在地址栏中输入 localhost:9419,进入采集对象页面,直接查看您查询的指标是否被正常采集到。
    alt
  2. 如果您的查询指标依然没有被正确采集到,有如下几种可能:
    • 您所查询的指标已被废弃,请您查看该采集对象的官方文档,进行确认。
    • 您还没有完成指标对应的配置。例如:在 Kafka 中,如果您没有配置 Topic,则无法查询 kafka_topic_partitions 等关于 Topic 的指标项。