如何为prometheus-node-exporter采集的指标添加自定义标签
为Prometheus Node-Exporter指标添加节点自定义标签
方法一:修改Prometheus的Scrape配置
从你提供的指标标签来看,采集job为kubernetes-service-endpoints,直接在Prometheus的scrape_configs中针对该job添加relabel规则,利用Kubernetes自动注入的节点元标签(前缀为__meta_kubernetes_node_label_)提取节点标签:
scrape_configs: - job_name: 'kubernetes-service-endpoints' # 保留原有配置... relabel_configs: # 新增规则:将节点上的my_task标签映射为custom_label_from_node - source_labels: [__meta_kubernetes_node_label_my_task] action: replace target_label: custom_label_from_node # 可选:批量导入所有节点标签(自动添加node_前缀) - action: labelmap regex: __meta_kubernetes_node_label_(.+) replacement: node_$1
注意:先通过
kubectl get nodes --show-labels确认目标节点确实带有my_task标签,Prometheus才能通过元标签获取到该值。
方法二:Helm部署场景下的配置调整
如果是用Helm安装的Prometheus,直接修改values.yaml中的对应配置:
方式1:追加到Prometheus的额外采集配置
prometheus: prometheusSpec: additionalScrapeConfigs: - job_name: 'kubernetes-service-endpoints' relabel_configs: - source_labels: [__meta_kubernetes_node_label_my_task] action: replace target_label: custom_label_from_node
方式2:针对Node-Exporter单独配置
nodeExporter: prometheus: relabelings: - source_labels: [__meta_kubernetes_node_label_my_task] action: replace target_label: custom_label_from_node
关键排查点
- 确认节点标签存在:执行
kubectl get nodes <节点IP对应的节点名> --show-labels,检查my_task标签是否存在 - 检查服务发现元标签:在Prometheus UI的「Service Discovery」页面,找到node-exporter实例,查看是否有
__meta_kubernetes_node_label_my_task元标签 - 确保relabel规则放在对应job的配置块下,而非全局配置
内容的提问来源于stack exchange,提问作者Sam Comber
相关产品推荐
相关产品推荐

