- job_name: blackbox
file_sd_configs:
- files:
- /etc/prometheus/blackbox.d/*.yml
metrics_path: /probe
relabel_configs:
- source_labels: [__address__]
target_label: __param_target
- source_labels: [module]
target_label: __param_module
- target_label: __address__
That is, you set a label "module" in your targets file, and it gets copied to __param_module. Your targets files /etc/prometheus/blackbox.d/foo.yml look like this:
- labels:
module: icmp
targets:
- 1.1.1.1
- 2.2.2.2
- labels:
module: dns
targets:
- 3.3.3.3
... etc
All your blackbox scrapes are done in a single job.
The actual config I use is a little more complex than that:
- job_name: blackbox
file_sd_configs:
- files:
- /etc/prometheus/blackbox.d/*.yml
metrics_path: /probe
relabel_configs:
- source_labels: [__address__]
regex: '([^/]+)' # name or address only
target_label: instance
- source_labels: [__address__]
regex: '([^/]+)' # name or address only
target_label: __param_target
- source_labels: [__address__]
regex: '(.+)/(.+)' # name/address
target_label: instance
replacement: '${1}'
- source_labels: [__address__]
regex: '(.+)/(.+)' # name/address
target_label: __param_target
replacement: '${2}'
- source_labels: [module]
target_label: __param_module
- target_label: __address__
This lets me use target entries of the form "<instance-label>/<address-or-hostname>", e.g.
- labels:
module: icmp
targets: