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

如何在Prometheus指标中添加自定义键值对并替换实例IP为服务器名

实现Prometheus指标实例IP替换为服务器名称的方案

当然可以实现!Prometheus自带的标签重写机制完全能搞定你的需求,下面给你两种实用方案,按需选择就行:

方案1:添加自定义server_name标签(推荐)

这种方式会保留原instance标签的IP信息,同时新增server_name字段,既不丢失原始数据,又能直观看到服务器名称。修改Prometheus的配置文件(通常是prometheus.yml),在node_exporter的抓取配置里加入relabel_configs:

scrape_configs:
  - job_name: "node_exporter"
    static_configs:
      - targets: ["10.21.88.12:9100", "10.21.88.13:9100"] # 你的node_exporter实例列表
    relabel_configs:
      # 给10.21.88.12:9100添加server_name=ServerA
      - source_labels: [__address__]
        regex: "10\\.21\\.88\\.12:9100"
        target_label: server_name
        replacement: "ServerA"
      # 给10.21.88.13:9100添加server_name=ServerB
      - source_labels: [__address__]
        regex: "10\\.21\\.88\\.13:9100"
        target_label: server_name
        replacement: "ServerB"

配置解释:

  • __address__是Prometheus内置的标签,存储目标实例的IP:端口
  • regex用来匹配特定的实例地址(注意正则里的.要转义成\\.)
  • target_label指定要新增的标签名
  • replacement设置标签对应的服务器名称

方案2:直接替换instance标签

如果你希望完全把instance字段换成服务器名称,可以用同样的relabel_configs修改instance标签:

scrape_configs:
  - job_name: "node_exporter"
    static_configs:
      - targets: ["10.21.88.12:9100", "10.21.88.13:9100"]
    relabel_configs:
      - source_labels: [__address__]
        regex: "10\\.21\\.88\\.12:9100"
        target_label: instance
        replacement: "ServerA"
      - source_labels: [__address__]
        regex: "10\\.21\\.88\\.13:9100"
        target_label: instance
        replacement: "ServerB"

进阶:用文件服务发现批量管理(适合多服务器场景)

如果你的服务器数量较多,逐个写正则匹配会很繁琐,推荐用文件服务发现来管理实例和标签:

  1. 创建一个JSON文件(比如nodes.json),内容如下:
[
  {
    "targets": ["10.21.88.12:9100"],
    "labels": {
      "server_name": "ServerA"
    }
  },
  {
    "targets": ["10.21.88.13:9100"],
    "labels": {
      "server_name": "ServerB"
    }
  }
]
  1. 修改Prometheus配置,用file_sd_configs替换原来的static_configs:
scrape_configs:
  - job_name: "node_exporter"
    file_sd_configs:
      - files: ["/path/to/your/nodes.json"] # 替换成你的JSON文件路径
    # 如果需要把server_name替换成instance标签,加上这段
    relabel_configs:
      - source_labels: [server_name]
        target_label: instance
        replacement: "$1"

这种方式的好处是,新增或修改服务器时,只需要更新JSON文件,不用改Prometheus主配置,维护起来更高效。

生效验证

修改配置后,记得重启Prometheus或者发送热加载请求让配置生效:

curl -X POST http://<你的Prometheus地址>:9090/-/reload

之后打开Prometheus的查询页面,输入up{job="node_exporter"},就能看到带有server_name标签(或替换后的instance标签)的指标了。

内容的提问来源于stack exchange,提问作者gowtham rajeevswaroop

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 07:22:46