【问题标题】:Prometheus - same metric with different labels is overridden before scrapingPrometheus - 在抓取之前覆盖具有不同标签的相同指标
【发布时间】:2019-06-17 09:04:46
【问题描述】:

我正在使用自定义 python 应用程序使用从 Kafka 到 Prometheus 的各种计量指标。指标需要在越来越少的同一时间(毫秒)内使用。我只能成功抓取下面示例中的最后一个指标,因为前三个指标会立即被覆盖。

my_metric{labelA = "aaa", labelB = "111"} 8
my_metric{labelA = "aaa", labelB = "222"} 12
my_metric{labelA = "bbb", labelB = "111"} 7
**my_metric{labelA = "bbb", labelB = "222"} 15**

我可以通过为所有四个指标设置一个唯一的指标名称来抓取,例如:

my_metric_aaa_111{labelA = "aaa", labelB = "111"} 8

但这似乎不是最佳实践,而且在 Grafana 中使用此类指标通常非常困难。

我还可以在 Prometheus 配置中将指标连续推送到 scraped 并降低 scraping 的间隔,但这与解决方案的整体理念背道而驰。 p>

除了我完全不知道的建议之外 - 是否可以为 Prometheus 保留相同的指标以抓取只有标签值不同?我发现的唯一讨论在这里没有答案:https://github.com/prometheus/pushgateway/issues/65

如果上述方法不可行,我可以稍后在 Prometheus/Grafana 中以某种方式合并/加入/组合指标名称,以便能够根据它们的标签使用它们吗?意思是删除上面示例中不必要的结尾 _aaa_111 以将所有内容都作为一个指标进行处理?

【问题讨论】:

  • “前三个立即被覆盖”是什么意思?一个指标是uniquely identified by its name and the set of labels。在您的示例中,它们是四个不同的指标,将被解析。
  • 感谢@Michael 为我指明了正确的方向。如果 Prometheus 的所有四个指标都被认为是唯一的,我将需要查看 python 生产者应用程序以找出其中的问题。
  • 仅供参考,它是 scrape(和 scrapingscrapedscraper)不是废品。 “废弃”意味着像垃圾一样扔掉:-(

标签: python grafana prometheus


【解决方案1】:

您可以使用标签组合或某些唯一值来更改 Pushgateway 作业名称。因此,prometheus 可以抓取您的所有指标,并且不会被其他指标覆盖。

在您的情况下,如果您将:my_metric{labelA = "aaa", labelB = "111"} 8 导出到名为 some_job_aaa_111 的工作。

您可以手动测试推送一些指标:echo "my_metric{labelA = \"aaa\", labelB = \"111\"} 8" | curl --data-binary @- http://localhost:9091/metrics/job/some_job_aaa_111

在 Prometheus pushgateway 中你会看到下一个:

在 Prometheus 中,pushgateway 作业变成了一个您可以轻松忽略的标签,例如 Prometheus 的下一个输出:

【讨论】:

  • 感谢 Asier - 这似乎有效:) 我试图解决它并将每个指标名称从标签值连接到例如my_metric_aaa_111{labelA = "aaa", labelB = "111"} 8 然后在 Grafana 中使用正则表达式作为 {__name__=~"my_metrics.+",labelA = "aaa"} 一直在工作,但直观地说,您的解决方案更有效。主要案例是需要重新设计的 python 应用程序,但这是一个不同的主题。
【解决方案2】:

另一种解决方案:使用 prometheus.yml 上的 scrape_interval 属性使抓取操作更频繁地重复。如果您基于分钟,请将其转换为秒或毫秒以避免竞争条件。

- job_name: 'pushgateway'
  honor_labels: true
  scrape_interval: 50ms
  metrics_path: /metrics
  static_configs:
    - targets:
      - localhost:9091

【讨论】:

    【解决方案3】:

    在推送到推送网关时,您还可以有不同的分组键(并且看起来比为作业名称使用相同的前缀和不同的后缀更好)

    【讨论】:

      猜你喜欢
      • 2023-01-11
      • 2023-04-08
      • 1970-01-01
      • 2020-01-02
      • 2023-02-10
      • 1970-01-01
      • 1970-01-01
      • 2021-08-25
      • 2015-07-21
      相关资源
      最近更新 更多