Prometheus relabel configs are notoriously badly documented, so here’s how to do something simple that I couldn’t find documented anywhere: How to add a label to all metrics coming from a specific scrape target.
scrape_configs: # The job name is added as a label `job=<job_name>` to any timeseries scraped from this config. - job_name: 'prometheus' # metrics_path defaults to '/metrics' # scheme defaults to 'http'. static_configs: - targets: ['localhost:9090'] # Add your relabel config under the scrape configs relabel_configs: # source label must be one that exists, so use __address__ - source_labels: [__address__] # target label is the one you want to create target_label: my_new_label replacement: "my-new-label-value"
And there you have it.
This will create a new label “
my_new_label” with the fixed value “
How does it work?
If you don’t supply them, the default settings for a relabel_config are:
By choosing a single always existing
source label (
__address__ always exists), you are guaranteed to get a source match for replacing the
target_label with. The default
regex wil always match, which causes the replacement to be carried out. However, we’re not specifying any match group’s in our
replacement string, so the entire string is just copied into
target_label. This is just a very specific case of how you can use a
relabel_config to copy (parts of) a label into another (new) label.