在 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"})
有人可以帮助我我所缺少的,我对 Prometheus Query 非常陌生
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)
处理左侧和右侧在数据类型方面不对齐的更多选项,例如使用on
orignoring
关键字可通过矢量匹配部分中的文档获得。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句