现象描述
在可观测监控 Prometheus 版中添加了ServiceMonitor或PodMonitor之后,并未采集到期望的指标数据。
排查步骤
确认Target是否已经被发现。
- 在左侧导航栏单击实例列表,进入可观测监控 Prometheus 版的实例列表页面。 
- 单击目标Prometheus实例名称,然后在左侧导航栏单击服务发现,然后单击Targets页签,检查相应的Target是否已经被发现。 - 若Target未被发现: - 检查ServiceMonitor或者PodMonitor是否已经启用。 - 您可以在服务发现的配置页签单击ServiceMonitor或者PodMonitor页签,若状态如下图(图标①)所示,表示已启用,则继续执行下一步。  
- 检查定义的ServiceMonitor或者PodMonitor资源是否下发到ACK集群。 - 登录容器服务管理控制台。 
- 在左侧导航栏单击集群,然后在集群列表页面单击目标集群名称。 
- 在左侧导航栏,选择。 
- 在资源定义页签单击名称列的ServiceMonitor或者PodMonitor超链接(图标①),系统会跳转至资源对象浏览器页签,然后您需要选择对应的命名空间,查看上一步骤中启用的ServiceMonitor或者PodMonitor是否在列表中。  - 若不在列表中:您可以尝试在可观测监控 Prometheus 版控制台服务发现页面配置页签的操作列重新开启ServiceMonitor或者PodMonitor。 
- 若在列表中,则执行下一步。 
 
 
- 确认Label Selector是否能选择到期望的Pod或者Service。 - 执行以下命令,观察返回结果,若无返回结果,则需要调整Label Selector或Namespace Selector,即可筛选出期望的Pod或者Service。 - # 如果namespace selector中any设置为true。 kubectl get pod/service -l label_key=label_value -A # 如果指定了namespace, 则使用指定的namespace。 kubectl get pod/service -l label_key=label_value -n xx_namespace_xx
- 检查端口设置。 - 若配置的端口参数为 - port字段,需要指定为- pod定义中- spec.containers[i].ports[i].name字段的值,或- services定义中- spec.ports[i].name字段的值。
- 若配置的端口参数为 - targetPort字段,需要指定为- pod定义中- spec.containers[i].ports[i].containerPort的值,或- services定义中- spec.ports[i].targetPort字段的值。
 - 如图所示:  
 
- 若Target已经被发现,但显示为红色:  - 表示Prometheus抓取失败,这种情况通常是由于Target自身问题导致,此时您需要根据Error列提示的异常原因进行排查。 
- 若Target已经被发现,且State列显示为UP(图标①),但期望的指标依然未被采集到:  - 此时您可以单击对应Target的Endpoint超链接(图标②),系统会直接从Target拉取原始数据,然后您需要确认原始数据中是否存在期望的指标。若存在期望的指标,您可以在服务发现的指标页签中单击右上角的配置废弃指标,然后在弹出的对话框中检查该指标是否在废弃列表中,若在废弃列表中,表示该指标已被人为废弃,您可以删除该指标重新启用即可。具体操作,请参见启用废弃指标。 
 
相关文档
- 手动配置ServiceMonitor或PodMonitor服务发现,可参考管理Kubernetes集群服务发现。 
- 配置ServiceMonitor或PodMonitor服务发现后,您可能需要查看通过服务发现采集到的指标信息,具体操作,请参见配置废弃指标。 
- 配置ServiceMonitor或PodMonitor服务发现后,可能会采集到您相应的指标,进而产生相关费用,更多计费详情,请参见产品计费(新版)和产品计费(旧版)。