很多exporter的metrics的label不完整或语义不详,造成在prometheus显示的时候难以明白其metrics的具体含义。因此有必要在获取metrics的时候对metrics增加一些label,表明该metrics的具体含义。
例如:
kube_pod_container_resource_requests_cpu_cores{container="autoscaler",env="dev",idc="ali",instance="xx.xx.xx.xx:30101",job="kube-state-metrics",namespace="kube-system",node="k8s-master01-demo.ali.xxx.io",pod="dns-autoscaler-7f666fb487-v2c28"}
在该metrics中增加了env和idc两个label,指明该metric来自环境以及idc。
但上述添加label,prometheus配置文件中的target只能通过file_sd_configs中添加。
在正对k8s集群监控中,一般采用kubernetes_sd_configs对k8s集群做服务发现,这个时候在file_sd_configs起作用的labels属性就不能起作用。
在这种情况下,使用metric_relabel_configs:
metric_relabel_configs:
- source_labels: [container_name]
target_label: container
action: replace
- source_labels: [pod_name]
target