"relabel_configs" are for target labels, which are applied before the
scrape. You're looking for "metric_relabel_configs", which happen after the
scrape.
Base example from the snmp_exporter + relabel to match your example regexp.
scrape_configs:
- job_name: 'snmp'
static_configs:
- targets:
- 192.168.1.2 # SNMP device.
- switch.local # SNMP device.
- tcp://192.168.1.3:1161 # SNMP device using TCP transport and
custom port.
metrics_path: /snmp
params:
auth: [public_v2]
module: [if_mib]
relabel_configs:
- source_labels: [__address__]
target_label: __param_target
- source_labels: [__param_target]
target_label: instance
- target_label: __address__
replacement: 127.0.0.1:9116 # The SNMP exporter's real
hostname:port.
metric_relabel_configs:
- source_labels: [ifAlias]
regex: ".*(Z[0-9]{5}A)"
target_label: service_id
This is a common/standard thing to do.
On Sun, Sep 24, 2023 at 10:28 AM Luke O'Donnell <[email protected]>
wrote:
> Hi All,
>
> I'm new to the stack so apologies if this is a silly question.
>
> I'm intending to use Prometheus + SNMP-Exporter to collect stats from a
> large number of network devices (switches, routers, etc) using if_mib.
>
> An issue i'm having difficulty with is extracting a subset of the
> "ifAlias" label returned by SNMP-Exporter. These represent the
> "description" of network interfaces on networking gear.
>
> A subset of network interfaces are used for Services, which have a
> well-known regex pattern. Unfortunately there is some degree of
> inconsistency in the exact format of Interface descriptions, so regex-like
> matching is required to pick out just the ServiceID. For example sake:
> Pattern: /Z[0-9]{5}A/
> Example ifAlias values:
> Z12345A
> Svc Z12345A
> Service Z12345A
>
> I'm trying to create a new label called "Service" that for all of the
> above 3 examples would just contain "Z12345A".
>
> Example data from snmp-collector:
>
> ifHCInOctets{ifAlias="Svc
> Z12345A",ifDescr="TenGigabitEthernet0/0/4.ServiceInstance.1111",ifIndex="9",ifName="Te0/0/4.SI.11111"}
> 408
>
> I'm intending to build various dashboards (grafana), alerting etc that
> requires the matching of the ServiceID. It therefore seems to make sense to
> me to store these as a new label whenever there is a match. It could be
> done at query-time, however there are many use-cases for using this
> (hypothetical) label so it'd reduce query complexity to just take the hit
> on storage and store it as a label.
>
> I'm unsure of how to go about this. My interpretation of relabel_configs
> is that it can't be used for relabeling labels from scraped data, rather
> only labels provided at SD time.
>
> Is there an approach using either SNMP-Exporter config or Prometheus
> config that can achieve this? Or do i need to solve it either with some
> sort of custom intermediate service, or accept that there will be
> additional complexity (and performance hit) at query-time?
>
> Thanks in advance,
>
> Luke
>
> --
> You received this message because you are subscribed to the Google Groups
> "Prometheus Users" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to [email protected].
> To view this discussion on the web visit
> https://groups.google.com/d/msgid/prometheus-users/ae94d201-e913-41b8-915c-69e09d5bcb6an%40googlegroups.com
> <https://groups.google.com/d/msgid/prometheus-users/ae94d201-e913-41b8-915c-69e09d5bcb6an%40googlegroups.com?utm_medium=email&utm_source=footer>
> .
>
--
You received this message because you are subscribed to the Google Groups
"Prometheus Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/prometheus-users/CABbyFmpH6yJ-DY1Tk%2BOZjCAvikhy5XYNX0ppUaJnBXzXQLwq2Q%40mail.gmail.com.