如何将查询结果组合成固定的输出格式?

How to combine query results into fixed output format?

我正在构建一个 Prometheus 查询 (PromQL) 来获取指标数据以监控我的服务器上的自定义指标。有些服务器有时可能会宕机,我希望始终在我的监控输出中包含此类服务器。

我有 2 个单独的拉取信息查询,如下所示:

查询 1:

up{instance=~"localhost:.+"}

输出 1: 这里的值表示节点是up还是down

Element Value
up{instance="localhost:8080",job="prometheus",monitor="fav-monitor"} 1
up{instance="localhost:8081",job="prometheus",monitor="fav-monitor"} 0

查询 2:

my_node{instance=~"localhost:.+", job="prometheus"}

输出 2:

Element Value
my_node{instance="localhost:8080",job="prometheus",monitor="fav-monitor",name="mynode-node1"} 25

我终于想获得如下输出,请帮忙。

Element Value
{instance="localhost:8080",job="prometheus",monitor="fav-monitor",name="mynode-node1"} 25
{instance="localhost:8081",job="prometheus",monitor="fav-monitor",name="mynode-node2"} 0

注意:最好能够为 localhost:8081 生成名称,如上面的预期输出所示,但空名称也可以。

我能够通过以下查询获得所需的输出。欢迎改进和建议。

(
  up{instance=~"localhost:.+"} 
)
   + on(instance) group_left(name)
(
   my_node{instance=~"localhost:.+", job="prometheus"}
)
  or
(
   label_replace(up{instance=~"localhost:.+"}, "name", "mynode-nodex", "", "") == 0
)
+ on (instance)  group_left(name)
(
   label_replace(up{instance=~"localhost:.+"}, "name", "mynode-nodex", "", "") == 0
)