我在 Prometheus 中有一个警报,但我不明白它的作用。谁能解释一下它的作用?
label_replace(changes(hikaricp_connections_timeout_total[5m]) > 2 or absent(hikaricp_connections) == 1, "ip", "$1", "instance", "([^:]+)(:[0-9]+)?")
来自普罗米修斯的文档:
对于
、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
将添加到第一个捕获的匹配组(在此示例中,从冒号之前的字符串开头开始的所有内容)。