【问题标题】:Prometheus less than max value expressionPrometheus 小于最大值表达式
【发布时间】:2021-10-06 10:03:35
【问题描述】:

我们将应用程序的软件版本存储在名为 app_software_version 的 Prometheus 计量器中,这会产生如下所示的数据:

app_software_version{application="foo", instance="host-1", job="custom"}     3186
app_software_version{application="foo", instance="host-2", job="custom"}     3184
app_software_version{application="bar", instance="host-3", job="custom"}     279
app_software_version{application="bar", instance="host-4", job="custom"}     279

我们想要创建一个 PromQL 表达式,它为应用程序版本低于我们为该应用程序存储的最大版本的实例返回 True,告诉我们这是正确的实例。用例:我们希望表达式驱动一个警报规则,告诉我们是否有一个实例在运行旧版本的软件。

在上面的例子中,我们想要一个表达式,它在计算时会返回类似这样的结果

{application="foo", instance="host-2}    True

我们已经能够创建一个表达式来计算每个应用程序的最大软件版本,通过运行 max(app_software_version) by(application) 我们得到

{application="foo"}    3186
{application="bar"}    279

很遗憾,我们未能成功地将其构建到一个表达式中,从而给出我们正在寻找的结果。

【问题讨论】:

    标签: prometheus


    【解决方案1】:

    尝试以下查询:

    app_software_version < on(application) group_left max(app_software_version) by(application)
    

    它使用many-to-one join 将左侧的每个系列与右侧每个application 标签的最大值进行比较。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-18
      • 2016-02-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多