You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为负载均衡后的多主机配置Prometheus指标重标记

解决Prometheus通过负载均衡器采集多主机node_exporter指标的配置问题

问题根源

你的配置核心问题有两个:

  1. __address__字段包含了路径和URL参数,Prometheus会将整个字符串当作目标地址解析,导致识别失败
  2. 正则表达式host=(.*)无法匹配带前缀的__address__内容,导致__param_host和instance标签无法正确提取

方案一:适配现有app_targets.json结构

无需修改JSON文件,调整prometheus.yml的relabel_configs顺序和正则即可:

- job_name: node_exporter_app_via_load_balancer
  file_sd_configs:
    - files:
        - 'app_targets.json'
  relabel_configs:
    # 从原始地址中提取host参数值,设置instance标签
    - source_labels: [__address__]
      regex: '.*host=(.*)'
      replacement: '$1'
      target_label: instance
    # 从原始地址中提取host参数值,设置URL请求参数__param_host
    - source_labels: [__address__]
      regex: '.*host=(.*)'
      replacement: '$1'
      target_label: __param_host
    # 剥离地址中的路径和参数,仅保留主机:端口
    - source_labels: [__address__]
      regex: '([^/:]+:[0-9]+).*'
      replacement: '$1'
      target_label: __address__
    # 设置指标采集路径为/metrics
    - target_label: __metrics_path__
      replacement: '/metrics'
  scheme: 'https'

关键调整说明:

  • 调整relabel顺序:先提取参数和instance标签,再修正__address__(避免后续步骤丢失原始数据)
  • 正则.*host=(.*)匹配整个地址字符串中的host参数部分
  • 正则([^/:]+:[0-9]+).*提取主机和端口,覆盖__address__字段

方案二:优化app_targets.json结构(推荐)

将主机标识通过labels明确标注,配置更直观且不易出错:

修改app_targets.json为:

[
  {
    "targets": ["load-balancer.example.com:443"],
    "labels": {
      "instance": "docker01",
      "host_param": "docker01"
    }
  },
  {
    "targets": ["load-balancer.example.com:443"],
    "labels": {
      "instance": "docker02",
      "host_param": "docker02"
    }
  },
  {
    "targets": ["load-balancer.example.com:443"],
    "labels": {
      "instance": "docker03",
      "host_param": "docker03"
    }
  }
]

对应的prometheus.yml配置简化为:

- job_name: node_exporter_app_via_load_balancer
  file_sd_configs:
    - files:
        - 'app_targets.json'
  relabel_configs:
    # 用labels中的host_param设置URL请求参数
    - source_labels: [host_param]
      target_label: __param_host
  scheme: 'https'
  metrics_path: '/metrics'

优势:

  • 目标配置清晰,直接通过labels定义instance和请求参数
  • 无需复杂正则,减少配置出错概率
  • 后续新增主机只需复制JSON节点修改标识即可

内容的提问来源于stack exchange,提问作者Keith Palmer Jr.

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.03 11:01:33