现象描述
在可观测监控 Prometheus 版中添加了ServiceMonitor或PodMonitor之后,并未采集到期望的指标数据。
排查步骤
确认Target是否已经被发现。
登录ARMS控制台。
在左侧导航栏选择 ,进入可观测监控 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服务发现后,可能会采集到您相应的指标,进而产生相关费用,更多计费详情,请参见产品计费(新版)和产品计费(旧版)。