"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 <l.odonnel...@gmail.com>
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 prometheus-users+unsubscr...@googlegroups.com.
> 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 prometheus-users+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/prometheus-users/CABbyFmpH6yJ-DY1Tk%2BOZjCAvikhy5XYNX0ppUaJnBXzXQLwq2Q%40mail.gmail.com.

Reply via email to