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

托管 Prometheus 支持监控容器服务等云服务,也支持通过 ServiceMonitor、PodMonitor、Service/Pod annotation 进行服务发现。但是,有时候当您完成配置后,却无法正确检索到预期指标。本文为您介绍如何进行此类故障的排除。

故障现象

使用托管 Prometheus 进行容器服务集群监控时,开启资源监控或配置 ServiceMonitor 或 PodMonitor 后,并未采集到期望的指标数据。

原因分析

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

  1. 查询语句错误,导致无法查询出正确的结果。
  2. 确认 Target 被发现且正常采集。
    • 服务发现配置错误,导致 Target 未被正确发现。
    • 业务 Pod 自身和采集端点异常。
  3. 查询的指标有误。

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

alt

排障步骤

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

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

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

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

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

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

alt

查看结果可能原因排障步骤

无 up 数据

Target 未被正确发现,服务发现配置有误。

  1. 登录 容器服务控制台
  2. 在左侧菜单栏中选择 集群,并在右侧集群列表中选择采集器所在集群。
  3. 单击集群名称,进入集群配置页面。
  4. 对于集群基础资源的指标,请确认集群是否正确开启了云原生观测和对应资源的观测功能。详情请参见 开启观测基础观测
  5. 对于自定义应用的指标,请确认服务发现配置是否正确。
    1. 在左侧导航栏中选择 工作负载 > 对象浏览器。在 分类 下拉菜单中选择 CRD,找到 PodMonitor 或 ServiceMonitor,单击名称,进入对应的 CRD 列表。
      alt
    2. 确认您配置的 PodMonitor 或 ServiceMonitor 是否在列表中。
      1. 如果您的配置 在列表中,表明配置已经下发,请执行下一步。
      2. 如果您的配置 不在列表中,表明配置未成功下发,请重新下发配置。
    3. 选择目标配置项,在 操作 列中选择 ... > 编辑 Yaml,检查 PodMonitor 或 ServiceMonitor 的配置是否正确。 请重点检查配置中的 namespaceSelector 字段选择的命名空间和 selector 字段选择的标签,与 Service 或 Pod 的配置是否相同。
      1. 如果您的配置有误,请修改配置后再观察。
      2. 如果您的配置无误,请执行下一步。
up = 0服务发现配置正常,但 Pod 或端点异常。登录 容器服务控制台,确认业务 Pod 自身及其采集端点是否正常。
up = 1服务发现配置正常,也存在对应的 Pod。Target 被发现且正常采集,请执行下一步。

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

您可以采用如下步骤,确认 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 的指标项。

步骤四:检查采集器状态

  1. 登录 容器服务控制台
  2. 在左侧菜单栏中选择 集群,并在右侧集群列表中选择采集器所在集群。
  3. 单击集群名称,进入集群配置页面。
  4. 在左导航栏中选择 工作负载 > 有状态负载,在 kube-system 命名空间下,查看采集器 vmagent-prometheus-agnet 的 Pod 状态和日志。

alt