如何使用 promql 在新标签上对两个 Prometheus 时间序列进行分组?

Posted

技术标签:

【中文标题】如何使用 promql 在新标签上对两个 Prometheus 时间序列进行分组?【英文标题】:How can I group two Prometheus timeseries on a new label using promql? 【发布时间】:2021-12-30 15:52:06 【问题描述】:

假设我有两个普罗米修斯时间序列,ts1ts2。我想将它们结合起来创建一个新的时间序列tsK,其中将有一个用于组成时间序列的标签,即

tsKinner_ts="ts1" 应该产生原始的 ts1 时间序列和

tsKinner_ts="ts2" 应该产生原始的 ts2 时间序列。

有没有办法使用 PromQL 做到这一点?我试过使用:

ts1 + ts2ts1 or ts2(ts1,ts2) 但没有任何效果。

【问题讨论】:

【参考方案1】:

使用以下 PromQL:

label_join(ts1, "inner_ts", "", "__name__") or label_join(ts2, "inner_ts", "", "__name__")

【讨论】:

试过了,好像只返回一个TS 哪一个,ts1 还是 ts2?是否创建了 inner_ts 标签?值正确吗? 只渲染了 ts1。未创建 inner_ts 标签 所以“label_join”命令不起作用,请检查是否有问题。您是否在“name”中使用了两个下划线字符? 是的,我逐字复制了你的命令

以上是关于如何使用 promql 在新标签上对两个 Prometheus 时间序列进行分组?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 PromQL 中获得两个指标中的最小值?

promql 中有没有办法使用 thanos api 获取所有可用的标签名称?

具有相关字段但标签不同的 promql 示例

从系列结果 PromQL 中省略标签

有没有办法在 PromQL 中进行类似查询的“左外连接”?

[从`prom-client`模块导入`prom`,但已安装。如何“相应地导入prom-client”?