我们将应用程序的软件版本存储在一个名为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表达式,它返回的实例的版本小于我们为该应用程序存储的最大版本,并告诉我们这个实例是对的。这个用例:我们希望表达式驱动一个警告规则,它告诉我们是否有一个实例运行一个旧版本的软件。
在上面的例子中,我们想要一个表达式,它在计算时会返回如下内容
{application="foo", instance="host-2} True通过运行max(app_software_version) by(application),我们已经能够创建一个表达式来计算每个应用程序的最大软件版本。
{application="foo"} 3186
{application="bar"} 279不幸的是,我们未能成功地将其构建成一个给出我们正在寻找的结果的表达式。
发布于 2021-10-07 17:14:55
尝试以下查询:
app_software_version < on(application) group_left max(app_software_version) by(application)它使用多对一将左侧的每个系列与右侧的每个application标签的最大值进行比较。
https://stackoverflow.com/questions/69463625
复制相似问题