【发布时间】:2021-12-30 10:32:23
【问题描述】:
我很难理解为什么我在 Prometheus/Grafana 中为同一个 pod 获得多个结果。
我正在尝试通过 rate(container_cpu_usage_seconds_total{namespace=~".+-test", pod=~"my-server-.+", image!~"|.*pause.*", container!="POD"}[5m]) 获取 cpu 使用率。
container 标签排除了带有POD 字符串的结果。我发现那些指的是 pause 容器,它在容器启动之前保存命名空间和其他东西。
但是,我在 image 标签中获得了暂停容器。所以我把他们排除在那个标签之外。
然后我发现一些没有image 标签的容器,我在image 标签中插入或(|)排除了它们。
在某些情况下,没有image 标签的容器的 CPU 使用率低于“正确”容器之一(带有正确 image 和 container 标签的容器),而在其他情况下,它是非常相似,但绝不相同。
例子:
我想了解这些容器是什么以及它们指的是什么。
PS。指标来自cadvisor。
【问题讨论】:
-
试试这个查询:
rate(container_cpu_usage_seconds_total{namespace=~".+-test", pod=~"my-server-.+", container!="POD", container=~".+"}[5m])。 Tl;dr:CPU 使用率可用于多种分辨率(容器、pod、QoS 类),并且此查询有效地消除了除您明确定义的容器之外的所有内容。!="POD"删除暂停容器,container=~".+"表示“非空”。除了每个容器之外,没有任何分辨率具有此标签。 -
谢谢。是的,您的查询按预期工作。 QoS 等级是什么意思?
-
其中有three,这只是cgroups树中的另一个级别。
标签: kubernetes containers prometheus promql cadvisor