When relabelling is suggested for selecting targets with service discovery there's sometimes a misunderstanding that relabelling can only change labels. That's not the case.
The default action for relabelling is indeed
replace, and it is the most commonly used action. There are other actions on offer though.
keep actions will halt processing if they do or don't match, respectively. For
relabel_configs this will cause the target not to be scraped, for
metric_relabel_configs this will cause a time series not to be ingested, for
alert_relabel_configs an alert won't be sent to the Alertmanager and for
write_relabel_configs the timeseries won't be sent to the remote write endpoint.
You can think of
keep as filters.
Here's an example for use with EC2 service discovery that will discard all machines whose name doesn't begin with "Example":
relabel_configs: - source_labels: [__meta_ec2_tag_Name] regex: Example.* action: keep
We've also previously looked at using this with
metric_relabel_configs to drop expensive timeseries.
Keep in mind that for all relabel actions other than
keep, processing will keep on going whether the regex matches or not.
Looking for expert advice on architecting Prometheus? Contact us.