label_replace() 函数用于替换时间序列上的标签值。这个函数允许你根据一个或多个源标签的值来动态地设置目标标签的值。
label_replace() 函数会根据提供的正则表达式 <regex> 在源标签 <src_label> 的值上进行匹配,并将匹配到的部分替换为 <replacement> 中指定的新值。然后,它会将这个新值设置为目标标签 <dst_label> 的值。
注意,:label_replace() 函数不会改变原始时间序列的其余部分,只是添加或替换了标签值。此外,如果正则表达式没有匹配到任何内容,那么目标标签的值将保持不变。
label_replace() 函数的基本语法如下:
label_replace(<vector expr>, <dst_label>, <replacement>, <src_label>, <regex>)
参数说明:
<vector expr>:一个向量表达式,用于选择你想要操作的时间序列。
<dst_label>:目标标签名,你想要替换其值的标签。
<replacement>:替换后的新值,可以是一个静态字符串,也可以是一个引用其他标签或函数结果的表达式。
<src_label>:源标签名,其值将被用于正则表达式匹配。
<regex>:正则表达式,用于从源标签的值中提取信息。
下面是一个使用 label_replace() 函数的例子:
label_replace(prometheus_http_requests_total, "mylabel", "127.0.0.1:$1", "instance", ".+:(\\d+)")
上述例子中,我们选择了所有 prometheus_http_requests_total 的时间序列。然后,我们使用 label_replace() 函数来替换 instance 标签的值。正则表达式 .+:(\\d+) 用于匹配 instance 标签的值,并捕获第一个括号内的内容(即端口号)。然后,我们将这个捕获的内容($1)设置为 mylabel 标签的新值。如下图:
替换后的值: