在Prometheus UI上,当我运行以下查询时,它按预期工作
(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但当我尝试下面的查询时,我没有看到任何输出,也没有与查询字符串相关的错误消息。
(sum ( rate (container_cpu_usage_seconds_total{namespace="nginx-enabled", container="nginx"}[30s])) * 100000) / (container_spec_cpu_quota{namespace="nginx-enabled", container="nginx"})有没有人能帮我一下,我对普罗米修斯的查询非常非常陌生
发布于 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选项卡时,您将看到原因):
(sum ( rate (container_cpu_usage_seconds_total[30s])) * 100000)
/
container_spec_cpu_shares然而,当您也聚合右侧,将其转换为标量时(由于它是一个量表,一个简单的sum就可以做到),您会得到一个结果:
(sum ( rate (container_cpu_usage_seconds_total[30s])) * 100000)
/
sum(container_spec_cpu_shares)可以通过Vector matching部分中的文档获得更多处理数据类型左右不对齐的选项,例如使用on或ignoring关键字。
https://stackoverflow.com/questions/68929722
复制相似问题