Prometheus配置通过file_sd_configs中每个目标的module标签信息重置每个目标的metrics_path

配置方式如下:

scrape_configs:
- job_name: 'file_sd' 
  file_sd_configs:
  - files: 
    - targets.json
  relabel_configs:
  - source_labels: [__address__]
    regex: (http://)([^:]+)
    target_label: __address__ 
    replacement: http://${2}
  - source_labels: [__port__] 
    regex: (\d+)
    target_label: __port__
    replacement: ':${1}'   
  - source_labels: [__module__] 
    regex: ([a-z0-9-]+)    
    target_label: __module__
    replacement: /${1}
  - source_labels: [__module__]
    target_label: metrics_path

这里:

  • 通过前 3 个 relabel_config 从 addressport 标签生成 host 和 port
  • module 标签的值通过最后一个 relabel_config 直接作为 metrics_path
  • 所以 module 标签的值会覆盖通过 regex 生成的默认路径
    例如,targets.json 中有以下目标:
[
  {
    "targets": ["http://host1:9090"],
    "labels": {
      "__module__": "app1" 
    }
  },
  {
    "targets": ["http://host2:9091"],
    "labels": {
      "__module__": "app2"
    }
  }
]

那么 Prometheus 最终会使用以下 metrics_path:

  • /app1
  • /app2
    因为 module 标签的值会直接作为 metrics_path,覆盖 regex 生成的默认值。

具体我的配置示例:
JSON文件中:

[
  {
    "targets": [
      "127.0.0.1:8080"
    ],
    "labels": {
      "module": "customer"
    }
  },
  {
    "targets": [
      "127.0.0.1:8081"
    ],
    "labels": {
      "module": "web"
    }
  }
 ]

Prometheus中scrape_configs中配置file_sd_config:

scrape_configs:
  - job_name: 'App-service_job'
    file_sd_configs:
      - files:
          - /xxx/targets.json
    relabel_configs:
      - target_label: __metrics_path__
        source_labels: [module]
        replacement: /${1}/actuator/prometheus

source_labels: 源标签名称 [module]是用于获取JSON文件中配置目标的标签“target”
target_label:目标标签名称
replacement:替换值

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值