如何在Prometheus中按namespace和application标签过滤求和Pod CPU使用率?
解决Prometheus按Namespace+Pod标签过滤计算CPU使用率总和的问题
你之前的写法错误在于直接把另一个指标kube_pod_labels嵌套到CPU使用率指标的标签过滤器中,PromQL不支持这种语法。要实现按application=my-app标签过滤,有两种可行方案:
方案一:如果CPU指标本身带有目标标签
如果你的node_namespace_pod_container:container_cpu_usage_seconds_total:sum_irate指标已经继承了Pod的application标签(部分采集配置会自动同步Pod标签到容器监控指标),直接添加标签过滤即可:
sum(node_namespace_pod_container:container_cpu_usage_seconds_total:sum_irate{namespace='my-namespace', application='my-app'}) by (pod)
方案二:通过kube-state-metrics指标关联过滤
如果CPU指标本身没有application标签,需要借助kube_pod_labels(由kube-state-metrics提供)指标,通过共同的pod和namespace标签关联过滤:
sum( node_namespace_pod_container:container_cpu_usage_seconds_total:sum_irate{namespace='my-namespace'} and on(pod, namespace) kube_pod_labels{namespace='my-namespace', label_application='my-app'} ) by (pod)
这里的and on(pod, namespace)表示只保留在两个指标中pod和namespace标签完全匹配的样本,从而实现按Pod的application标签过滤的效果。
内容的提问来源于stack exchange,提问作者Jerry Seutter
相关产品推荐
相关产品推荐

