【问题标题】:Aggregate same metric, different labels at scrape time在抓取时聚合相同的指标、不同的标签
【发布时间】:2023-01-11 11:42:12
【问题描述】:

给定具有各种标签的指标(即具有不同标签的相同指标名称),是否可以将这些汇总到凑时间变成一个单一的价值,例如,通过总结所有的价值?

我知道这在查询时是可能的,但我问的是报废时间,因为我的想法是减少普罗米修斯中存储的指标的数量/基数。

例如,给定以下指标输出:

some_metric{server="server-0"} 30  1395066363000
some_metric{server="server-0"} 70  1395066363000
some_metric{server="server-0"} 100 1395066363000

我想删除服务器标签并将其导入,就好像它是:

some_metric 200 1395066363000

【问题讨论】:

  • AFAIK,这在刮擦时间是不可能的。您可以在那里删除标签,但不能对冲突指标执行sum()。它要么从导出器中删除标签,要么接受不必要的基数。

标签: prometheus monitoring metrics observability


【解决方案1】:

我想你可以使用relabel_configsmetrics_relabel_configslabeldrop

但是请注意,不要在生成的指标中造成冲突(两个先前因标签集不同而不同的指标可能会发生冲突)。

有关于它们之间区别的解释here

【讨论】:

  • 问题是我按照我的例子导致“冲突”:所有三个值都应该被视为相同的指标并以某种方式聚合。
【解决方案2】:

您可以使用 recording rules 在指标被抓取后聚合指标。请注意,在将记录规则应用于它们之前,原始指标会被索引并保存。因此,原始指标可能需要额外的 RAM、CPU 和磁盘空间。

如果您不想存储原始指标,那么您可以在 VictoriaMetrics 中尝试 stream aggregation(这是我从事的类似 Prometheus 的项目)。它允许以流模式聚合抓取的指标,例如而不将它们保存到磁盘。例如,以下 -stremAggr.config 配置指示从名为 some_metric 的抓取指标中删除 host 标签,并且每 30 秒仅存储这些指标的总和:

- match: some_metric
  interval: 30s
  without: [host]
  outputs: [sum]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-04-08
    • 2017-07-15
    • 2020-10-26
    • 2020-05-12
    • 2019-10-12
    • 1970-01-01
    • 2021-10-26
    • 2021-03-29
    相关资源
    最近更新 更多