prometheus dynamic metrics_path prometheus dynamic metrics_path kubernetes kubernetes

prometheus dynamic metrics_path


You can use relabel_config in Prometheus config to change __metrics_path__ label config.

The principe is to provide the metrics path in your targets under the form host:port/path/of/metrics (note: drop the http://, it is in scheme parameter of scrape_config)

[  {    "targets": [      "node1:8080/first-metrics",      "node2:8080/second-metrics"    ]  }]

And then replace the related meta-labels with the parts

- job_name: 'kube-metrics'  file_sd_configs:  - files:    - 'targets.json'  relabel_configs:    - source_labels: [__address__]      regex:  '[^/]+(/.*)'            # capture '/...' part      target_label: __metrics_path__  # change metrics path    - source_labels: [__address__]      regex:  '([^/]+)/.*'            # capture host:port      target_label: __address__       # change target

You can reuse this method on any label known at configuration time to modify the config of the scrape.

On Prometheus, use the service discovery page to check your config has been correctly modified.

The official list of service discovery is in the configuration documentation: look for the *_sd_config in the index.