乐趣区

关于prometheus:PromQL之labelreplacelabeljoin

label_replace 和 label_join 是 PromQL 的预置函数,反对将 label 的 value 进行截取和拼接,生成新的 label。
值得注意的是,它们不扭转源 label 的 name 及 value,仅生成新 label。

label_replace

反对对某个 label 的值进行正则匹配,截取出某些值,生成新的 label。

label_replace(v instant-vector, dst_label string, replacement string, src_label string, regex string)

原始指标:

node_network_transmit_bytes_total{container="kube-rbac-proxy",device="eth0",endpoint="https",instance="k8s-v22-1",job="node-exporter",namespace="monitoring",pod="node-exporter-nvj7r",service="node-exporter"}    9457895219

通过 label_replace 将 device==>iface

label_replace(node_network_transmit_bytes_total{job="node-exporter", device="eth0"}, "iface", "$1", "device", "(.+)")

后果:

node_network_transmit_bytes_total{container="kube-rbac-proxy",device="eth0",endpoint="https",iface="eth0",instance="k8s-v22-1",job="node-exporter",namespace="monitoring",pod="node-exporter-nvj7r",service="node-exporter"}    9465702581

label_join

反对将某些 label 拼接起来,生成新的 label。

label_join(v instant-vector, dst_label string, separator string, src_label_1 string, src_label_2 string, ...)

原始指标:

kubelet_node_name{endpoint="https-metrics",instance="178.104.163.63:10250",job="kubelet",metrics_path="/metrics",namespace="kube-system",node="k8s-v22-1",service="kubelet"}    1

通过 label_join 将 instance 和 metrics_path 拼接起来,生成新 label: metrics_url

label_join(kubelet_node_name, "metrics_url", "","instance","metrics_path")

后果:

kubelet_node_name{endpoint="https-metrics",instance="178.104.163.63:10250",job="kubelet",metrics_path="/metrics",metrics_url="178.104.163.63:10250/metrics",namespace="kube-system",node="k8s-v22-1",service="kubelet"}    1

参考

1.prometheus-book

退出移动版