操作 Label

Label 操作函数对选定的 Rollup 计算结果进行 Label 转换。

附加细节:

  • 如果 Label 操作函数直接应用于series_selector,那么在执行 Label 转换之前,会自动应用default_rollup函数。例如,alias(temperature, "foo")会被隐式转换为alias(default_rollup(temperature), "foo")

请参阅隐式查询转换

支持的 Label 操作函数如下:

alias

alias(q, "name")q返回的所有时间序列更名为name。例如,alias(up, "foobar")会将up序列重命名为foobar序列。

drop_common_labels

drop_common_labels(q1, ...., qN)会删除q1, ..., qN返回的时间序列中共有的label="value"

label_copy

label_copy(q, "src_label1", "dst_label1", ..., "src_labelN", "dst_labelN")src_label*的 Label 值复制到q返回的所有时间序列的dst_label*。如果src_label为空,则相应的dst_label保持不变。

label_del

label_del(q, "label1", ..., "labelN")删除q返回的所有时间序列中名为label*的所有 Label。

label_join

label_join(q, "dst_label", "separator", "src_label1", ..., "src_labelN")

它将src_label*的值用给定的separator连接起来,并将结果存储在dst_label中。这是针对q返回的每条时间序列独立执行的。例如,label_join(up{instance="xxx",job="yyy"}, "foo", "-", "instance", "job")会将xxx-yyy标签值存储到foo标签中。

该函数在 PromQL 中也支持。

label_keep

label_keep(q, "label1", ..., "labelN")删除q返回的所有时间序列中除列出的label*Label 之外的其他所有 Label。

label_lowercase

label_lowercase(q, "label1", ..., "labelN")q返回的所有时间序列中名为label*的 Label 值转换成小写字母。

label_map

label_map(q, "label", "src_value1", "dst_value1", ..., "src_valueN", "dst_valueN")遍历q返回的所有时间序列,将所有 Label 值是src_value*的 Label 值对应的dst_value*

label_match

label_match(q, "label", "regexp")会删除qlabel值不匹配给定正则表达式regexp的时间序列。此函数在类 rollup 函数之后会比较有用,因为这些类 rollup 函数可能会为每个输入序列返回多个时间序列。
另请参见 label_mismatchlabels_equal

label_mismatch

label_mismatch(q, "label", "regexp")会删除qlabel值匹配给定正则表达式regexp的时间序列。此函数在类 rollup 函数之后会比较有用,因为这些类 rollup 函数可能会为每个输入序列返回多个时间序列。

See also label_match and labels_equal.

label_move

label_move(q, "src_label1", "dst_label1", ..., "src_labelN", "dst_labelN")它将src_label*的 Label 值移动到q返回的所有时间序列的dst_label*。如果src_label为空,则相应的dst_label保持不变。

label_replace

label_replace(q, "dst_label", "replacement", "src_label", "regex")它将给定的正则表达式regexp应用于src_label,如果给定的正则表达式匹配src_label,则将替换内容存储在dst_label中。替换内容可以包含对正则表达式捕获组的引用,例如$1$2等。这些引用会被相应的正则表达式捕获组替换。例如,label_replace(up{job="node-exporter"}, "foo", "bar-$1", "job", "node-(.+)")会将bar-exporter标签值存储到foo标签中。

该函数在 PromQL 中也支持。

label_set

label_set(q, "label1", "value1", ..., "labelN", "valueN"){label1="value1", ..., labelN="valueN"}这些 Label 添加到q返回的每条时间序列数据里。

label_transform

label_transform(q, "label", "regexp", "replacement")将给定label中所有匹配正则表达式regexp的部分替换为指定的replacement

label_uppercase

label_uppercase(q, "label1", ..., "labelN")q返回的所有时间序列中名为label*的 Label 值转换成大写字母。

另请参见 label_lowercase.

label_value

label_value(q, "label")它为q返回的每条时间序列中的给定 label 的值作为指标 value 返回(原指标 value 被忽略)。

例如,如果label_value(foo, "bar")应用于foo{bar="1.234"},那么它将返回一个值为1.234的时间序列foo{bar="1.234"}. 对于 label 值是非数值类型情况,该函数将不返回数据。

labels_equal

labels_equal(q, "label1", "label2", ...)在 q 返回每条时间序列里,寻找“label1”“label2”值相等的时间序列,并返回。

另请参阅 label_matchlabel_mismatch.

sort_by_label

sort_by_label(q, "label1", ... "labelN")根据给定的一组 Label 按升序排序序列。例如,sort_by_label(foo, "bar")会根据这些序列中 Label bar的值对foo序列进行排序。

另请参阅 sort_by_label_descsort_by_label_numeric.

sort_by_label_desc

sort_by_label的反向操作,即降序排列。

sort_by_label_numeric

sort_by_label_numeric(q, "label1", ... "labelN")is label manipulation function, which sorts series in ascending order by the given set of labels using numeric sort. For example, if fooseries have barlabel with values 1, 101, 15and 2, then sort_by_label_numeric(foo, "bar")would return series in the following order of barlabel values: 1, 2, 15and 101.

sort_by_label_numeric(q, "label1", ... "labelN")根据给定的一组 Label 使用数值排序,按升序排序序列。例如,如果foo序列的bar标签值为1101152,那么sort_by_label_numeric(foo, "bar")会按bar标签值的以下顺序返回序列:1215101

另请参阅 sort_by_label_numeric_descsort_by_label.

sort_by_label_numeric_desc

sort_by_label_numeric的反向操作,即降序排列。