“label_replace”在这个请求中做了什么,它是如何工作的?

问题描述 投票:0回答:1

我在 Prometheus 中有一个警报,但我不明白它的作用。谁能解释一下它的作用?

label_replace(changes(hikaricp_connections_timeout_total[5m]) > 2 or absent(hikaricp_connections) == 1, "ip", "$1", "instance", "([^:]+)(:[0-9]+)?")
prometheus promql
1个回答
0
投票

来自普罗米修斯的文档

对于

v
label_replace(v instant-vector, dst_label string, replacement string, src_label string, regex string)
中的每个时间序列 将 正则表达式
regex
与标签
src_label
的值进行匹配。如果它 匹配,返回的时间序列中标签
dst_label
的值将作为扩展
replacement
,以及输入中的原始标签。捕获组中的 正则表达式可以用
$1
$2
等引用。正则表达式中的命名捕获组可以用
$name
引用(其中
name
是捕获组名称)。如果正则表达式不匹配,则时间序列将原封不动地返回。

因此,在您的情况下,查询

changes(hikaricp_connections_timeout_total[5m]) > 2 or absent(hikaricp_connections) == 1
将首先被评估。

然后,其结果向量中的标签

instance
将与正则表达式
([^:]+)(:[0-9]+)?
进行匹配。对于那些包含与其匹配的标签的向量,新标签
ip
将添加到第一个捕获的匹配组(在此示例中,从冒号之前的字符串开头开始的所有内容)。

© www.soinside.com 2019 - 2024. All rights reserved.