同一Prometheus作业组内能否为不同Target配置不同metrics_path?
同一Prometheus作业中为不同Target配置不同metrics_path的实现方法
可以实现,核心是利用Prometheus的relabel_configs功能,通过修改内部标签__metrics_path__来为单个Target指定自定义采集路径。
具体配置方案如下:
- job_name: 'My-Service' metrics_path: '/api/my-service/actuator/prometheus' # 作业默认采集路径 scrape_interval: 5s static_configs: - targets: ['1xx.xxx.xx.x7'] labels: application: My-Service instance: DEV # 第二个Target,添加自定义标签指定专属采集路径 - targets: ['1xx.xxx.xx.x7'] labels: application: My-Service instance: instance#2 custom_metrics_path: '/dev/my-service/actuator/prometheus' # 自定义路径标签 # 配置relabel规则,覆盖指定Target的采集路径 relabel_configs: - source_labels: [custom_metrics_path] action: replace target_label: __metrics_path__ # 修改Prometheus内部的采集路径标签 regex: (.*) replacement: $1
配置说明:
- 作业级的
metrics_path作为默认值,适用于没有添加custom_metrics_path标签的Target(比如第一个DEV实例)。 - 给需要自定义路径的Target添加
custom_metrics_path标签,指定其专属的采集路径。 relabel_configs规则会检查每个Target的custom_metrics_path标签:如果存在该标签,就将内部的__metrics_path__标签替换为该标签的值,从而让Prometheus使用自定义路径采集这个Target的指标;如果没有该标签,就保留作业级的默认路径。
这种方式既可以将多个Target归到同一个作业组,又能灵活为不同Target设置不同的采集路径,完全符合需求。
内容的提问来源于stack exchange,提问作者Anghel Ionut
相关产品推荐
相关产品推荐

