【问题标题】:PromQL query to get the maximum of two metricsPromQL 查询以获取两个指标的最大值
【发布时间】:2022-08-14 19:52:29
【问题描述】:

在 Prometheus 时间序列数据库中,有两组数据(用于 M1 和 M2)与以下模式连接

  • <时间戳>、<M1> <标签 L1、L2、L3>
  • <时间戳>、<M2> <标签 L1、L2、L3、L4>

编写一个 PromQL 查询,创建一个新的时间序列 N,跟踪运行查询的每个时间段的 max(M1, M2)。

例如: table

我尝试使用 max() 但它只需要 1 个参数。

    标签: max prometheus promql


    【解决方案1】:

    尝试以下 PromQL:

    max(metric1 OR metric2)
    

    【讨论】:

    • 我试了一下,但它总是将 metric1 值作为输出。 "OR" 根本不检查 metric2 的值。
    • 如果他们有一组不同的标签(就像您在问题中所说的那样),OR 将同时使用这两个标签。在此处查看 Prometheus 文档中的“OR”运算符:prometheus.io/docs/prometheus/latest/querying/operators/…
    【解决方案2】:

    PromQL 允许通过 __name__ 伪标签上的正则表达式过滤器选择具有多个不同名称的时间序列。见these docs。例如,以下查询选择名称为 m1m2 的所有系列:

    {__name__=~"m1|m2"}
    

    因此,以下查询将为每个请求的时间戳选择名称为 m1m2 的所有系列的最大值:

    max({__name__=~"m1|m2"})
    

    请参阅以下附加信息:

    【讨论】:

      猜你喜欢
      • 2021-11-13
      • 2019-09-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-09
      • 2017-12-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多