【问题标题】:How to sum metrics in Prometheus across jobs如何在 Prometheus 中跨作业汇总指标
【发布时间】:2021-11-03 20:21:50
【问题描述】:

我在 promethus.yml 中配置了两个作业

- job_name: serviceA
  scrape_interval: 60s
  metrics_path: /
  static_configs:
  - targets:
    - serviceA:8080
- job_name: serviceB
  scrape_interval: 60s
  metrics_path: /
  static_configs:
  - targets:
    - serviceB:8080

两个服务在 serviceA 的每个 metric1 中都有一个计数器度量;和 serviceB 中的 metric2

在 Grafana 和 Prometheus 站点中,表达式 metric1 + metric2 不会返回任何内容。我尝试了乘法、除法等,但也没有结果。同样的结果也与仪表度量相同。

我在这里做错了什么?

【问题讨论】:

    标签: prometheus grafana


    【解决方案1】:

    指标必须具有相同的标签和值。

    如果“metric1”有标签“labelA”和“labelB”,而“metric2”有标签“labelA”和“labelC”,“metric1 + metric2”将不返回任何内容。

    如果 "metric1" 的标签 "labelA" 带有 "A" 和 "B" 值,并且 "metric2" 也有标签 "labelA" 但带有 "C" 和 "D" 值,则 "metric1 + metric2" 将返回什么都没有。

    您可以尝试使用函数来聚合常见的标签和值,例如:

    sum by (label1) (metric1) + sum by (label1) (metric1)
    

    【讨论】:

    • 嗨,如果我在 Prometheus 中一一“打印”它们,我的指标是这样的: metric1{instance="serviceA:8080", job="serviceA"} 3 metric2{instance="serviceB :8080", job="serviceB"} 4 既然我没有相同的标签值,这是个问题吗?
    • 你说得对,我更新了答案以添加更多信息。
    • 我试过 sum by (job)(mertic1) + sum by (job)(metric2) 没用,但是 sum by ()(mertic1) + sum by ()(metric2)工作甚至与 *、/ 等一起工作
    • 它不起作用,因为您对工作有不同的值(“serviceA”和“serviceB”)。您可以只使用“sum(metric1) + sum(metric2)”而不是“sum by () (mertic1) + sum by () (metric2)”。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-11
    • 1970-01-01
    • 2019-01-30
    • 2019-06-22
    • 1970-01-01
    相关资源
    最近更新 更多