Skip to content

Conversation

earendilfr
Copy link

In some specific case, it could be useful to be able to perform a lookup with a static indexes.
By example, I have the case with the COS monitoring for Cisco devices:

  • we have two labels that could be interresting to add to the monitored OID:

    • cbQosCMName
    • cbQosPolicyMapName
  • the first one is very easy to lookup (we juste do as indicated in the example

  • but for the second one, it's a little more tricky:
    the interesting part for this one it's to have the Policy-Name attached to the interface.
    To do that, we need to do a lookup to the oid cbQosConfigIndex with the indexes cbQosPolicyIndex and the index 1.

So, the patch change to part:

  • for snmp-generator:
    • add the possibility to indicate a custom_label_name
      in this case, it's mandatorry because we need to add a dedicated index related to cbQosConfigIndex for cbQosPolicyMapName but it's should not be the same than the index used for cbQosCMName
    • take in count that if the source_indexes indicate a static number, we just take it as a static OID and add it to the labels for the config
  • for snmp_exporter:
    • if a label attached to a lookup is an integer, we just add to the oid for the lookup

You can found just bellow an example of the config I have tried in my environment:

  • generator file:
---
modules:
  # CISCO-CLASS-BASED-QOS-MIB mibs
  cqos:
    retries: 2
    timeout: 5s
    walk:
      - "CISCO-CLASS-BASED-QOS-MIB::cbQosCMPrePolicyByte64"
      - "CISCO-CLASS-BASED-QOS-MIB::cbQosCMPrePolicyPkt64"
      - "CISCO-CLASS-BASED-QOS-MIB::cbQosCMDropPkt64"
      - "CISCO-CLASS-BASED-QOS-MIB::cbQosCMDropByte64"
    lookups:
      - source_indexes: [cbQosPolicyIndex]
        lookup: "CISCO-CLASS-BASED-QOS-MIB::cbQosIfIndex"
      - source_indexes: [cbQosIfIndex]
        lookup: 1.3.6.1.2.1.2.2.1.2 # "IF-MIB::ifDescr"
        drop_source_indexes: True
      - source_indexes: [cbQosPolicyIndex, cbQosObjectsIndex]
        lookup: "CISCO-CLASS-BASED-QOS-MIB::cbQosConfigIndex"
      - source_indexes: [cbQosPolicyIndex, "1"]
        lookup: "CISCO-CLASS-BASED-QOS-MIB::cbQosConfigIndex"
        custom_label_name: cbQosConfigIndexPolicyName
      - source_indexes: [cbQosConfigIndexPolicyName]
        lookup: "CISCO-CLASS-BASED-QOS-MIB::cbQosPolicyMapName"
        drop_source_indexes: cbQosConfigIndexPolicyName
      - source_indexes: [cbQosConfigIndex]
        lookup: "CISCO-CLASS-BASED-QOS-MIB::cbQosCMName"
        drop_source_indexes: True
      - source_indexes: [cbQosPolicyIndex]
        lookup: "CISCO-CLASS-BASED-QOS-MIB::cbQosPolicyDirection"
  • config file generated:
# WARNING: This file was auto-generated using snmp_exporter generator, manual changes will be lost.
modules:
  cqos:
    walk:
    - 1.3.6.1.2.1.2.2.1.2
    - 1.3.6.1.4.1.9.9.166.1.1.1.1.3
    - 1.3.6.1.4.1.9.9.166.1.1.1.1.4
    - 1.3.6.1.4.1.9.9.166.1.15.1.1.14
    - 1.3.6.1.4.1.9.9.166.1.15.1.1.17
    - 1.3.6.1.4.1.9.9.166.1.15.1.1.3
    - 1.3.6.1.4.1.9.9.166.1.15.1.1.6
    - 1.3.6.1.4.1.9.9.166.1.5.1.1.2
    - 1.3.6.1.4.1.9.9.166.1.6.1.1.1
    - 1.3.6.1.4.1.9.9.166.1.7.1.1.1
    metrics:
    - name: cbQosCMDropPkt64
      oid: 1.3.6.1.4.1.9.9.166.1.15.1.1.14
      type: counter
      help: The 64 bits counter of dropped pkts per class as the result of all features
        that can produce drops (e.g., police, random detect, etc.). - 1.3.6.1.4.1.9.9.166.1.15.1.1.14
      indexes:
      - labelname: cbQosPolicyIndex
        type: gauge
      - labelname: cbQosObjectsIndex
        type: gauge
      - labelname: cbQosIfIndex
        type: gauge
      - labelname: cbQosConfigIndex
        type: gauge
      - labelname: cbQosConfigIndexPolicyName
        type: gauge
      lookups:
      - labels:
        - cbQosPolicyIndex
        labelname: cbQosIfIndex
        oid: 1.3.6.1.4.1.9.9.166.1.1.1.1.4
        type: gauge
      - labels:
        - cbQosIfIndex
        labelname: ifDescr
        oid: 1.3.6.1.2.1.2.2.1.2
        type: DisplayString
      - labels:
        - cbQosPolicyIndex
        - cbQosObjectsIndex
        labelname: cbQosConfigIndex
        oid: 1.3.6.1.4.1.9.9.166.1.5.1.1.2
        type: gauge
      - labels:
        - cbQosPolicyIndex
        - "1"
        labelname: cbQosConfigIndexPolicyName
        oid: 1.3.6.1.4.1.9.9.166.1.5.1.1.2
        type: gauge
      - labels:
        - cbQosConfigIndexPolicyName
        labelname: cbQosPolicyMapName
        oid: 1.3.6.1.4.1.9.9.166.1.6.1.1.1
        type: DisplayString
      - labels:
        - cbQosConfigIndex
        labelname: cbQosCMName
        oid: 1.3.6.1.4.1.9.9.166.1.7.1.1.1
        type: DisplayString
      - labels:
        - cbQosPolicyIndex
        labelname: cbQosPolicyDirection
        oid: 1.3.6.1.4.1.9.9.166.1.1.1.1.3
        type: gauge
      - labels: []
        labelname: cbQosIfIndex
      - labels: []
        labelname: cbQosConfigIndex
      ...
  • output of the request to snmp-exporter:
# HELP cbQosCMDropByte64 The 64 bits counter of dropped bytes per class as the result of all features that can produce drops (e.g., police, random detect, etc.). - 1.3.6.1.4.1.9.9.166.1.15.1.1.17
# TYPE cbQosCMDropByte64 counter
cbQosCMDropByte64{cbQosCMName="CM-COS-BRONZE",cbQosObjectsIndex="262144",cbQosPolicyDirection="1",cbQosPolicyIndex="176",cbQosPolicyMapName="PM-MARKING",ifDescr="Vlan999"} 0
cbQosCMDropByte64{cbQosCMName="CM-COS-BRONZE",cbQosObjectsIndex="262144",cbQosPolicyDirection="1",cbQosPolicyIndex="192",cbQosPolicyMapName="PM-MARKING",ifDescr="Vlan995"} 0
cbQosCMDropByte64{cbQosCMName="CM-COS-BRONZE",cbQosObjectsIndex="262144",cbQosPolicyDirection="1",cbQosPolicyIndex="208",cbQosPolicyMapName="PM-MARKING",ifDescr="Vlan1100"} 0
cbQosCMDropByte64{cbQosCMName="CM-COS-BRONZE",cbQosObjectsIndex="262144",cbQosPolicyDirection="1",cbQosPolicyIndex="224",cbQosPolicyMapName="PM-MARKING",ifDescr="Vlan1101"} 0
cbQosCMDropByte64{cbQosCMName="CM-COS-BRONZE",cbQosObjectsIndex="262144",cbQosPolicyDirection="1",cbQosPolicyIndex="272",cbQosPolicyMapName="PM-MARKING",ifDescr="Vlan100"} 0
cbQosCMDropByte64{cbQosCMName="CM-COS-BRONZE",cbQosObjectsIndex="327680",cbQosPolicyDirection="2",cbQosPolicyIndex="18",cbQosPolicyMapName="PM-SHAPING",ifDescr="GigabitEthernet0/0/0"} 0
cbQosCMDropByte64{cbQosCMName="CM-COS-GOLD",cbQosObjectsIndex="131072",cbQosPolicyDirection="1",cbQosPolicyIndex="16",cbQosPolicyMapName="PM-COUNTING",ifDescr="GigabitEthernet0/0/0"} 0
cbQosCMDropByte64{cbQosCMName="CM-COS-GOLD",cbQosObjectsIndex="131072",cbQosPolicyDirection="1",cbQosPolicyIndex="176",cbQosPolicyMapName="PM-MARKING",ifDescr="Vlan999"} 0
cbQosCMDropByte64{cbQosCMName="CM-COS-GOLD",cbQosObjectsIndex="131072",cbQosPolicyDirection="1",cbQosPolicyIndex="192",cbQosPolicyMapName="PM-MARKING",ifDescr="Vlan995"} 0
cbQosCMDropByte64{cbQosCMName="CM-COS-GOLD",cbQosObjectsIndex="131072",cbQosPolicyDirection="1",cbQosPolicyIndex="208",cbQosPolicyMapName="PM-MARKING",ifDescr="Vlan1100"} 0
cbQosCMDropByte64{cbQosCMName="CM-COS-GOLD",cbQosObjectsIndex="131072",cbQosPolicyDirection="1",cbQosPolicyIndex="224",cbQosPolicyMapName="PM-MARKING",ifDescr="Vlan1101"} 0
cbQosCMDropByte64{cbQosCMName="CM-COS-GOLD",cbQosObjectsIndex="131072",cbQosPolicyDirection="1",cbQosPolicyIndex="272",cbQosPolicyMapName="PM-MARKING",ifDescr="Vlan100"} 0
cbQosCMDropByte64{cbQosCMName="CM-COS-GOLD",cbQosObjectsIndex="262144",cbQosPolicyDirection="2",cbQosPolicyIndex="18",cbQosPolicyMapName="PM-SHAPING",ifDescr="GigabitEthernet0/0/0"} 0
cbQosCMDropByte64{cbQosCMName="CM-COS-RT",cbQosObjectsIndex="196608",cbQosPolicyDirection="2",cbQosPolicyIndex="18",cbQosPolicyMapName="PM-SHAPING",ifDescr="GigabitEthernet0/0/0"} 0
cbQosCMDropByte64{cbQosCMName="CM-COS-RT",cbQosObjectsIndex="65536",cbQosPolicyDirection="1",cbQosPolicyIndex="16",cbQosPolicyMapName="PM-COUNTING",ifDescr="GigabitEthernet0/0/0"} 0
cbQosCMDropByte64{cbQosCMName="CM-COS-RT",cbQosObjectsIndex="65536",cbQosPolicyDirection="1",cbQosPolicyIndex="176",cbQosPolicyMapName="PM-MARKING",ifDescr="Vlan999"} 0
cbQosCMDropByte64{cbQosCMName="CM-COS-RT",cbQosObjectsIndex="65536",cbQosPolicyDirection="1",cbQosPolicyIndex="192",cbQosPolicyMapName="PM-MARKING",ifDescr="Vlan995"} 0
cbQosCMDropByte64{cbQosCMName="CM-COS-RT",cbQosObjectsIndex="65536",cbQosPolicyDirection="1",cbQosPolicyIndex="208",cbQosPolicyMapName="PM-MARKING",ifDescr="Vlan1100"} 0
cbQosCMDropByte64{cbQosCMName="CM-COS-RT",cbQosObjectsIndex="65536",cbQosPolicyDirection="1",cbQosPolicyIndex="224",cbQosPolicyMapName="PM-MARKING",ifDescr="Vlan1101"} 0
cbQosCMDropByte64{cbQosCMName="CM-COS-RT",cbQosObjectsIndex="65536",cbQosPolicyDirection="1",cbQosPolicyIndex="272",cbQosPolicyMapName="PM-MARKING",ifDescr="Vlan100"} 0
cbQosCMDropByte64{cbQosCMName="CM-COS-SILVER",cbQosObjectsIndex="196608",cbQosPolicyDirection="1",cbQosPolicyIndex="16",cbQosPolicyMapName="PM-COUNTING",ifDescr="GigabitEthernet0/0/0"} 0
cbQosCMDropByte64{cbQosCMName="CM-COS-SILVER",cbQosObjectsIndex="196608",cbQosPolicyDirection="1",cbQosPolicyIndex="176",cbQosPolicyMapName="PM-MARKING",ifDescr="Vlan999"} 0
cbQosCMDropByte64{cbQosCMName="CM-COS-SILVER",cbQosObjectsIndex="196608",cbQosPolicyDirection="1",cbQosPolicyIndex="192",cbQosPolicyMapName="PM-MARKING",ifDescr="Vlan995"} 0
cbQosCMDropByte64{cbQosCMName="CM-COS-SILVER",cbQosObjectsIndex="196608",cbQosPolicyDirection="1",cbQosPolicyIndex="208",cbQosPolicyMapName="PM-MARKING",ifDescr="Vlan1100"} 0
cbQosCMDropByte64{cbQosCMName="CM-COS-SILVER",cbQosObjectsIndex="196608",cbQosPolicyDirection="1",cbQosPolicyIndex="224",cbQosPolicyMapName="PM-MARKING",ifDescr="Vlan1101"} 0
cbQosCMDropByte64{cbQosCMName="CM-COS-SILVER",cbQosObjectsIndex="196608",cbQosPolicyDirection="1",cbQosPolicyIndex="272",cbQosPolicyMapName="PM-MARKING",ifDescr="Vlan100"} 0
cbQosCMDropByte64{cbQosCMName="class-default",cbQosObjectsIndex="262144",cbQosPolicyDirection="1",cbQosPolicyIndex="16",cbQosPolicyMapName="PM-COUNTING",ifDescr="GigabitEthernet0/0/0"} 0
cbQosCMDropByte64{cbQosCMName="class-default",cbQosObjectsIndex="327680",cbQosPolicyDirection="1",cbQosPolicyIndex="176",cbQosPolicyMapName="PM-MARKING",ifDescr="Vlan999"} 0
cbQosCMDropByte64{cbQosCMName="class-default",cbQosObjectsIndex="327680",cbQosPolicyDirection="1",cbQosPolicyIndex="192",cbQosPolicyMapName="PM-MARKING",ifDescr="Vlan995"} 0
cbQosCMDropByte64{cbQosCMName="class-default",cbQosObjectsIndex="327680",cbQosPolicyDirection="1",cbQosPolicyIndex="208",cbQosPolicyMapName="PM-MARKING",ifDescr="Vlan1100"} 0
cbQosCMDropByte64{cbQosCMName="class-default",cbQosObjectsIndex="327680",cbQosPolicyDirection="1",cbQosPolicyIndex="224",cbQosPolicyMapName="PM-MARKING",ifDescr="Vlan1101"} 0
cbQosCMDropByte64{cbQosCMName="class-default",cbQosObjectsIndex="327680",cbQosPolicyDirection="1",cbQosPolicyIndex="272",cbQosPolicyMapName="PM-MARKING",ifDescr="Vlan100"} 0
cbQosCMDropByte64{cbQosCMName="class-default",cbQosObjectsIndex="393216",cbQosPolicyDirection="2",cbQosPolicyIndex="18",cbQosPolicyMapName="PM-SHAPING",ifDescr="GigabitEthernet0/0/0"} 2.8639243428e+10
cbQosCMDropByte64{cbQosCMName="class-default",cbQosObjectsIndex="65536",cbQosPolicyDirection="2",cbQosPolicyIndex="18",cbQosPolicyMapName="PM-SHAPING",ifDescr="GigabitEthernet0/0/0"} 2.8639243428e+10

- add the possibility to indicate a custom label name for a specific oid
- add the possibility to indicate a static number as index for a
  specific oid

Signed-off-by: earendilfr <[email protected]>
@earendilfr earendilfr force-pushed the generator_custom_label_name branch from 51ff04d to 8e8f8c1 Compare June 10, 2025 23:54
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants