【问题标题】:what is avg without doing here什么是平均不在这里做
【发布时间】:2019-04-07 09:53:00
【问题描述】:

我看到一个 PromQL 已针对 linux 系统上的节点导出器运行,如下所示:

avg without(cpu, mode)(rate(node_cpu_seconds_total{mode="idle"}[1m]))

我可以很容易地理解以下内容在做什么:

rate(node_cpu_seconds_total{mode="idle"}[1m]

但我没有得到什么

avg without(cpu, mode)

正在做。有什么用 没有(CPU,模式)

你能帮忙吗?

谢谢

【问题讨论】:

    标签: prometheus promql


    【解决方案1】:

    documentation here 包含有关 without 子句的详细信息:

    without 从结果向量中删除列出的标签`

    在您的情况下,查询实际上应该是 avg (rate(node_cpu_seconds_total{mode="idle"}[1m])) without (cpu, mode)withoutavg() 之后)。

    它将删除cpumode 这两个标签(顺便说一句,模式始终为idle)并计算每个实例可用的平均空闲CPU。

    仅供参考,同样可以通过使用by (instance)而不是使用without(cpu, mode)来实现。

    【讨论】:

    • without 可以在 avg (或任何聚合)及其括号之间。有些人(包括我自己)更喜欢这种方式。这就是 Prometheus 在输出时对其进行格式化的方式(例如在其 /rules 页面上):count without(instance) (up)
    • by (instance) 仅等效于 without(cpu, mode),如果 instancecpumode 是唯一存在的标签。如果通过抓取配置添加了任何标签(例如env="prod"),那么它们不再等效,您是否使用其中一个取决于您想要实现的目标:仅按实例聚合或聚合 cpu 标签仅(并在此过程中删除mode)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-01-28
    • 2012-03-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多