首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Prometheus监控Container CPU利用率

使用Prometheus监控Container CPU利用率
EN

Stack Overflow用户
提问于 2021-08-25 20:51:15
回答 1查看 63关注 0票数 1

在Prometheus UI上,当我运行以下查询时,它按预期工作

代码语言:javascript
复制
(sum ( rate (container_cpu_usage_seconds_total{namespace="nginx-enabled", container="nginx"}[30s])) * 100000) /  110000
Output Returned: 23.34


container_spec_cpu_quota{namespace="nginx-enabled", container="nginx"}
Output Returned: 110000

但当我尝试下面的查询时,我没有看到任何输出,也没有与查询字符串相关的错误消息。

代码语言:javascript
复制
(sum ( rate (container_cpu_usage_seconds_total{namespace="nginx-enabled", container="nginx"}[30s])) * 100000) / (container_spec_cpu_quota{namespace="nginx-enabled", container="nginx"})

有没有人能帮我一下,我对普罗米修斯的查询非常非常陌生

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-08-26 11:04:47

PromQL确实很棘手,例如,如果有人碰巧使用了错误的数据类型,它就会默默地失败。您遇到的问题似乎是组合查询的左侧,即(sum(rate(container_cpu_usage_seconds_total...部件返回一个标量值(因此,恰好是一个值),而右侧(container_spec_cpu_quota{...})是一个向量,其最近的值只显示出来。

我尝试在PromLens中重新创建组合查询,这为调试查询提供了一种很好的方法。不幸的是,它没有在数据中提供container_spec_cpu_quota,所以我用附近可用的东西(container_spec_cpu_shares)代替了它。

现在,如果您将以下查询插入到PromLens中,模拟您的查询,您将看到它也失败了(当您单击Explain选项卡时,您将看到原因):

代码语言:javascript
复制
(sum ( rate (container_cpu_usage_seconds_total[30s])) * 100000)
/
container_spec_cpu_shares

然而,当您也聚合右侧,将其转换为标量时(由于它是一个量表,一个简单的sum就可以做到),您会得到一个结果:

代码语言:javascript
复制
(sum ( rate (container_cpu_usage_seconds_total[30s])) * 100000)
/
sum(container_spec_cpu_shares)

可以通过Vector matching部分中的文档获得更多处理数据类型左右不对齐的选项,例如使用onignoring关键字。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68929722

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档