Prometheus按标签过滤CPU指标查询在EKS集群返回空结果求助
PromQL查询空结果排查步骤
- 第一步 验证标签筛选的基础指标是否存在
先单独执行kube_pod_labels筛选语句,确认有返回结果:
常见问题点:kube_pod_labels{label_workflow_instance_id="$workflow_instance_id", label_workflow_vertex_id=~"$workflow_vertex_id", pod=~".+"}- 变量
$workflow_instance_id、$workflow_vertex_id取值错误,或标签名拼写有误 - kube-state-metrics未开启自定义Pod标签采集,导致Pod的业务标签没有同步为
label_前缀的指标标签 - 符合筛选条件的Pod不存在,或不在kube-state-metrics的采集范围内
- 变量
- 第二步 验证CPU指标部分是否正常返回
单独执行CPU指标的聚合语句:
常见问题点:sum by(pod) (label_replace(node_namespace_pod_container:container_cpu_usage_seconds_total:sum_irate{namespace="pipeline-worker", container_name!="POD"}, "pod", "$1", "pod_name", "(.+)"))- 录制规则
node_namespace_pod_container:container_cpu_usage_seconds_total:sum_irate未部署或名称拼写错误 - cAdvisor采集的容器指标中,Pod名称的标签本身为
pod而非pod_name,label_replace逻辑无效 pipeline-worker命名空间下无运行中的业务容器,或容器指标未被正常采集
- 录制规则
- 第三步 验证Pod状态指标关联逻辑
单独执行Pod状态筛选语句,确认返回结果的Pod标签名为pod,和前两段的标签一致:kube_pod_status_phase{phase="Running"} - 第四步 修正关联逻辑错误
当前查询使用*乘法做指标关联,任意一段无匹配结果时整体返回值就为空,可先将乘法改为and做临时测试,或逐段增加关联逻辑定位匹配失败的环节。 - EKS集群专属排查点
确认kube-state-metrics、cAdvisor的RBAC权限足够,没有限制pipeline-worker命名空间的指标采集;如果用了AWS Managed Prometheus,还要确认采集任务的命名空间筛选配置没有排除目标工作负载。
内容的提问来源于stack exchange,提问作者Ramesh Mishra
相关产品推荐
相关产品推荐

