SNMP device · IF-MIB → snmp_exporter config

miagent run report · workdir snmp-ifmib
PASS 18/18 expected metrics verified
http://127.0.0.1:9131/snmp?target=127.0.0.1%3A11161&module=netdev&auth=public_v2
0
repair iterations
1
model calls
8.9K
tokens in
3.3K
tokens out
1
validation runs
36
series scraped
Every validation run above cost 0 tokens: correctness is decided by scraping the artifact and diffing against the IR, never by a model. Models are used only to read docs, generate the artifact, and repair it.

Pipeline

StageExecuted byModelCost
Parse MIBdeterministic code—
Compile artifactsdeterministic code—
Run + validatedeterministic code—1 run(s), 0 tokens
Per-stage attribution was added after this run; only totals are available here.

Validation diff · expected (IR) vs observed (scrape)

MetricTypeObservedSeriesSampleLabelsNote
✓network_interface_receive_bytes_totalcountercounter28,902ifIndex, interface
✓network_interface_transmit_bytes_totalcountercounter227,116ifIndex, interface
✓network_interface_receive_unicast_packets_totalcountercounter21,356ifIndex, interface
✓network_interface_transmit_unicast_packets_totalcountercounter215,644ifIndex, interface
✓network_interface_receive_multicast_packets_totalcountercounter21,818ifIndex, interface
✓network_interface_transmit_multicast_packets_totalcountercounter23,617ifIndex, interface
✓network_interface_receive_broadcast_packets_totalcountercounter22,220ifIndex, interface
✓network_interface_transmit_broadcast_packets_totalcountercounter24,033ifIndex, interface
✓network_interface_receive_errors_totalcountercounter222ifIndex, interface
✓network_interface_transmit_errors_totalcountercounter221ifIndex, interface
✓network_interface_receive_discards_totalcountercounter220ifIndex, interface
✓network_interface_transmit_discards_totalcountercounter222ifIndex, interface
✓network_interface_receive_unknown_protocol_packets_totalcountercounter217ifIndex, interface
✓network_interface_transmit_queue_length_packetsgaugegauge2515,891,312ifIndex, interface
✓network_interface_speed_mbpsgaugegauge210ifIndex, interface
✓network_interface_oper_statusgaugegauge21ifIndex, interface
✓network_interface_admin_statusgaugegauge21ifIndex, interface
✓network_interface_last_change_secondsgaugegauge21.24e+06ifIndex, interface

Cost ledger

ModelCallsTokens inTokens out
sonnet18.9K3.3K
total18.9K3.3K
validation (1 run(s))000

Artifacts

snmp.yml — Compiled snmp_exporter config · 278 lines
auths:
  public_v2:
    community: public
    security_level: noAuthNoPriv
    auth_protocol: MD5
    priv_protocol: DES
    version: 2
modules:
  netdev:
    walk:
    - 1.3.6.1.2.1.2.2.1.7
    - 1.3.6.1.2.1.2.2.1.8
    - 1.3.6.1.2.1.2.2.1.9
    - 1.3.6.1.2.1.2.2.1.13
    - 1.3.6.1.2.1.2.2.1.14
    - 1.3.6.1.2.1.2.2.1.15
    - 1.3.6.1.2.1.2.2.1.19
    - 1.3.6.1.2.1.2.2.1.20
    - 1.3.6.1.2.1.2.2.1.21
    - 1.3.6.1.2.1.31.1.1.1.1
    - 1.3.6.1.2.1.31.1.1.1.6
    - 1.3.6.1.2.1.31.1.1.1.7
    - 1.3.6.1.2.1.31.1.1.1.8
    - 1.3.6.1.2.1.31.1.1.1.9
    - 1.3.6.1.2.1.31.1.1.1.10
    - 1.3.6.1.2.1.31.1.1.1.11
    - 1.3.6.1.2.1.31.1.1.1.12
    - 1.3.6.1.2.1.31.1.1.1.13
    - 1.3.6.1.2.1.31.1.1.1.15
    metrics:
    - name: network_interface_receive_bytes_total
      oid: 1.3.6.1.2.1.31.1.1.1.6
      type: counter
      help: Total octets received on the interface (64-bit counter). - ifHCInOctets (1.3.6.1.2.1.31.1.1.1.6)
      indexes:
      - labelname: ifIndex
        type: gauge
      lookups:
      - labels:
        - ifIndex
        labelname: interface
        oid: 1.3.6.1.2.1.31.1.1.1.1
        type: DisplayString
    - name: network_interface_transmit_bytes_total
      oid: 1.3.6.1.2.1.31.1.1.1.10
      type: counter
      help: Total octets transmitted out of the interface (64-bit counter). - ifHCOutOctets (1.3.6.1.2.1.31.1.1.1.10)
      indexes:
      - labelname: ifIndex
        type: gauge
      lookups:
      - labels:
        - ifIndex
        labelname: interface
        oid: 1.3.6.1.2.1.31.1.1.1.1
        type: DisplayString
    - name: network_interface_receive_unicast_packets_total
      oid: 1.3.6.1.2.1.31.1.1.1.7
      type: counter
      help: Unicast packets delivered to a higher layer (64-bit counter). - ifHCInUcastPkts (1.3.6.1.2.1.31.1.1.1.7)
      indexes:
      - labelname: ifIndex
        type: gauge
      lookups:
      - labels:
        - ifIndex
        labelname: interface
        oid: 1.3.6.1.2.1.31.1.1.1.1
        type: DisplayString
    - name: network_interface_transmit_unicast_packets_total
      oid: 1.3.6.1.2.1.31.1.1.1.11
      type: counter
      help: Unicast packets requested for transmission (64-bit counter). - ifHCOutUcastPkts (1.3.6.1.2.1.31.1.1.1.11)
      indexes:
      - labelname: ifIndex
        type: gauge
      lookups:
      - labels:
        - ifIndex
        labelname: interface
        oid: 1.3.6.1.2.1.31.1.1.1.1
        type: DisplayString
    - name: network_interface_receive_multicast_packets_total
      oid: 1.3.6.1.2.1.31.1.1.1.8
      type: counter
      help: Multicast packets delivered to a higher layer (64-bit counter). - ifHCInMulticastPkts (1.3.6.1.2.1.31.1.1.1.8)
      indexes:
      - labelname: ifIndex
        type: gauge
      lookups:
      - labels:
        - ifIndex
        labelname: interface
        oid: 1.3.6.1.2.1.31.1.1.1.1
        type: DisplayString
    - name: network_interface_transmit_multicast_packets_total
      oid: 1.3.6.1.2.1.31.1.1.1.12
      type: counter
      help: Multicast packets requested for transmission (64-bit counter). - ifHCOutMulticastPkts (1.3.6.1.2.1.31.1.1.1.12)
      indexes:
      - labelname: ifIndex
        type: gauge
      lookups:
      - labels:
        - ifIndex
        labelname: interface
        oid: 1.3.6.1.2.1.31.1.1.1.1
        type: DisplayString
    - name: network_interface_receive_broadcast_packets_total
      oid: 1.3.6.1.2.1.31.1.1.1.9
      type: counter
      help: Broadcast packets delivered to a higher layer (64-bit counter). - ifHCInBroadcastPkts (1.3.6.1.2.1.31.1.1.1.9)
      indexes:
      - labelname: ifIndex
        type: gauge
      lookups:
      - labels:
        - ifIndex
        labelname: interface
        oid: 1.3.6.1.2.1.31.1.1.1.1
        type: DisplayString
    - name: network_interface_transmit_broadcast_packets_total
      oid: 1.3.6.1.2.1.31.1.1.1.13
      type: counter
      help: Broadcast packets requested for transmission (64-bit counter). - ifHCOutBroadcastPkts (1.3.6.1.2.1.31.1.1.1.13)
      indexes:
      - labelname: ifIndex
        type: gauge
      lookups:
      - labels:
        - ifIndex
        labelname: interface
        oid: 1.3.6.1.2.1.31.1.1.1.1
        type: DisplayString
    - name: network_interface_receive_errors_total
      oid: 1.3.6.1.2.1.2.2.1.14
      type: counter
      help: Inbound packets that contained errors preventing delivery to a higher layer. - ifInErrors (1.3.6.1.2.1.2.2.1.14)
      indexes:
      - labelname: ifIndex
        type: gauge
      lookups:
      - labels:
        - ifIndex
        labelname: interface
        oid: 1.3.6.1.2.1.31.1.1.1.1
        type: DisplayString
    - name: network_interface_transmit_errors_total
      oid: 1.3.6.1.2.1.2.2.1.20
      type: counter
      help: Outbound packets that could not be transmitted because of errors. - ifOutErrors (1.3.6.1.2.1.2.2.1.20)
      indexes:
      - labelname: ifIndex
        type: gauge
      lookups:
      - labels:
        - ifIndex
        labelname: interface
        oid: 1.3.6.1.2.1.31.1.1.1.1
        type: DisplayString
    - name: network_interface_receive_discards_total
      oid: 1.3.6.1.2.1.2.2.1.13
      type: counter
      help: Inbound packets discarded even though no errors were detected. - ifInDiscards (1.3.6.1.2.1.2.2.1.13)
      indexes:
      - labelname: ifIndex
        type: gauge
      lookups:
      - labels:
        - ifIndex
        labelname: interface
        oid: 1.3.6.1.2.1.31.1.1.1.1
        type: DisplayString
    - name: network_interface_transmit_discards_total
      oid: 1.3.6.1.2.1.2.2.1.19
      type: counter
      help: Outbound packets discarded even though no errors were detected. - ifOutDiscards (1.3.6.1.2.1.2.2.1.19)
      indexes:
      - labelname: ifIndex
        type: gauge
      lookups:
      - labels:
        - ifIndex
        labelname: interface
        oid: 1.3.6.1.2.1.31.1.1.1.1
        type: DisplayString
    - name: network_interface_receive_unknown_protocol_packets_total
      oid: 1.3.6.1.2.1.2.2.1.15
      type: counter
      help: Inbound packets discarded because of an unknown or unsupported protocol. - ifInUnknownProtos (1.3.6.1.2.1.2.2.1.15)
      indexes:
      - labelname: ifIndex
        type: gauge
      lookups:
      - labels:
        - ifIndex
        labelname: interface
        oid: 1.3.6.1.2.1.31.1.1.1.1
        type: DisplayString
    - name: network_interface_transmit_queue_length_packets
      oid: 1.3.6.1.2.1.2.2.1.21
      type: gauge
      help: Length of the output packet queue. - ifOutQLen (1.3.6.1.2.1.2.2.1.21)
      indexes:
      - labelname: ifIndex
        type: gauge
      lookups:
      - labels:
        - ifIndex
        labelname: interface
        oid: 1.3.6.1.2.1.31.1.1.1.1
        type: DisplayString
    - name: network_interface_speed_mbps
      oid: 1.3.6.1.2.1.31.1.1.1.15
      type: gauge
      help: Estimate of the interface's current bandwidth in Mbit/s. - ifHighSpeed (1.3.6.1.2.1.31.1.1.1.15)
      indexes:
      - labelname: ifIndex
        type: gauge
      lookups:
      - labels:
        - ifIndex
        labelname: interface
        oid: 1.3.6.1.2.1.31.1.1.1.1
        type: DisplayString
    - name: network_interface_oper_status
      oid: 1.3.6.1.2.1.2.2.1.8
      type: gauge
      help: Current operational state of the interface (1=up,2=down,3=testing,4=unknown,5=dormant,6=notPresent,7=lowerLayerDown). - ifOperStatus (1.3.6.1.2.1.2.2.1.8)
      indexes:
      - labelname: ifIndex
        type: gauge
      lookups:
      - labels:
        - ifIndex
        labelname: interface
        oid: 1.3.6.1.2.1.31.1.1.1.1
        type: DisplayString
      enum_values:
        1: up
        2: down
        3: testing
        4: unknown
        5: dormant
        6: notPresent
        7: lowerLayerDown
    - name: network_interface_admin_status
      oid: 1.3.6.1.2.1.2.2.1.7
      type: gauge
      help: Desired administrative state of the interface (1=up,2=down,3=testing). - ifAdminStatus (1.3.6.1.2.1.2.2.1.7)
      indexes:
      - labelname: ifIndex
        type: gauge
      lookups:
      - labels:
        - ifIndex
        labelname: interface
        oid: 1.3.6.1.2.1.31.1.1.1.1
        type: DisplayString
      enum_values:
        1: up
        2: down
        3: testing
    - name: network_interface_last_change_seconds
      oid: 1.3.6.1.2.1.2.2.1.9
      type: gauge
      help: sysUpTime value at the time the interface entered its current operational state. - ifLastChange (1.3.6.1.2.1.2.2.1.9)
      scale: 0.01
      indexes:
      - labelname: ifIndex
        type: gauge
      lookups:
      - labels:
        - ifIndex
        labelname: interface
        oid: 1.3.6.1.2.1.31.1.1.1.1
        type: DisplayString
generator.yml — generator.yml (human-maintained source) · 74 lines
# snmp_exporter generator config, produced by migen.
# MIB modules required: IF-MIB
# Run: generator generate -m <mib-dir> -g generator.yml -o snmp.yml
# NOTE: `rename_to` under overrides is a migen annotation recording the
# intended Prometheus metric name; the upstream generator ignores it.
auths:
  public_v2:
    community: public
    version: 2
modules:
  netdev:
    walk:
    - ifAdminStatus
    - ifHCInBroadcastPkts
    - ifHCInMulticastPkts
    - ifHCInOctets
    - ifHCInUcastPkts
    - ifHCOutBroadcastPkts
    - ifHCOutMulticastPkts
    - ifHCOutOctets
    - ifHCOutUcastPkts
    - ifHighSpeed
    - ifInDiscards
    - ifInErrors
    - ifInUnknownProtos
    - ifLastChange
    - ifName
    - ifOperStatus
    - ifOutDiscards
    - ifOutErrors
    - ifOutQLen
    lookups:
    - source_indexes:
      - ifIndex
      lookup: ifName
      drop_source_indexes: false
    overrides:
      ifHCInOctets:
        rename_to: network_interface_receive_bytes_total
      ifHCOutOctets:
        rename_to: network_interface_transmit_bytes_total
      ifHCInUcastPkts:
        rename_to: network_interface_receive_unicast_packets_total
      ifHCOutUcastPkts:
        rename_to: network_interface_transmit_unicast_packets_total
      ifHCInMulticastPkts:
        rename_to: network_interface_receive_multicast_packets_total
      ifHCOutMulticastPkts:
        rename_to: network_interface_transmit_multicast_packets_total
      ifHCInBroadcastPkts:
        rename_to: network_interface_receive_broadcast_packets_total
      ifHCOutBroadcastPkts:
        rename_to: network_interface_transmit_broadcast_packets_total
      ifInErrors:
        rename_to: network_interface_receive_errors_total
      ifOutErrors:
        rename_to: network_interface_transmit_errors_total
      ifInDiscards:
        rename_to: network_interface_receive_discards_total
      ifOutDiscards:
        rename_to: network_interface_transmit_discards_total
      ifInUnknownProtos:
        rename_to: network_interface_receive_unknown_protocol_packets_total
      ifOutQLen:
        rename_to: network_interface_transmit_queue_length_packets
      ifHighSpeed:
        rename_to: network_interface_speed_mbps
      ifOperStatus:
        rename_to: network_interface_oper_status
      ifAdminStatus:
        rename_to: network_interface_admin_status
      ifLastChange:
        rename_to: network_interface_last_change_seconds
spec.json — Metric IR (validation contract) · 485 lines
{
  "service": "netdev",
  "kind": "snmp_generator",
  "endpoints": [
    {
      "url": "snmp://target",
      "method": "GET",
      "auth": "none",
      "auth_detail": "",
      "response_format": "snmp",
      "notes": "snmp_exporter module=netdev, auth=public_v2"
    }
  ],
  "metrics": [
    {
      "name": "network_interface_receive_bytes_total",
      "type": "counter",
      "help": "Total octets received on the interface (64-bit counter).",
      "unit": "",
      "labels": [
        {
          "name": "ifIndex",
          "description": "table index ifIndex",
          "allowed_values": null,
          "required": true
        },
        {
          "name": "interface",
          "description": "lookup from ifName",
          "allowed_values": null,
          "required": true
        }
      ],
      "value": {
        "min": 0.0,
        "max": null
      },
      "source": "SNMP ifHCInOctets oid=1.3.6.1.2.1.31.1.1.1.6 module=IF-MIB",
      "required": true
    },
    {
      "name": "network_interface_transmit_bytes_total",
      "type": "counter",
      "help": "Total octets transmitted out of the interface (64-bit counter).",
      "unit": "",
      "labels": [
        {
          "name": "ifIndex",
          "description": "table index ifIndex",
          "allowed_values": null,
          "required": true
        },
        {
          "name": "interface",
          "description": "lookup from ifName",
          "allowed_values": null,
          "required": true
        }
      ],
      "value": {
        "min": 0.0,
        "max": null
      },
      "source": "SNMP ifHCOutOctets oid=1.3.6.1.2.1.31.1.1.1.10 module=IF-MIB",
      "required": true
    },
    {
      "name": "network_interface_receive_unicast_packets_total",
      "type": "counter",
      "help": "Unicast packets delivered to a higher layer (64-bit counter).",
      "unit": "",
      "labels": [
        {
          "name": "ifIndex",
          "description": "table index ifIndex",
          "allowed_values": null,
          "required": true
        },
        {
          "name": "interface",
          "description": "lookup from ifName",
          "allowed_values": null,
          "required": true
        }
      ],
      "value": {
        "min": 0.0,
        "max": null
      },
      "source": "SNMP ifHCInUcastPkts oid=1.3.6.1.2.1.31.1.1.1.7 module=IF-MIB",
      "required": true
    },
    {
      "name": "network_interface_transmit_unicast_packets_total",
      "type": "counter",
      "help": "Unicast packets requested for transmission (64-bit counter).",
      "unit": "",
      "labels": [
        {
          "name": "ifIndex",
          "description": "table index ifIndex",
          "allowed_values": null,
          "required": true
        },
        {
          "name": "interface",
          "description": "lookup from ifName",
          "allowed_values": null,
          "required": true
        }
      ],
      "value": {
        "min": 0.0,
        "max": null
      },
      "source": "SNMP ifHCOutUcastPkts oid=1.3.6.1.2.1.31.1.1.1.11 module=IF-MIB",
      "required": true
    },
    {
      "name": "network_interface_receive_multicast_packets_total",
      "type": "counter",
      "help": "Multicast packets delivered to a higher layer (64-bit counter).",
      "unit": "",
      "labels": [
        {
          "name": "ifIndex",
          "description": "table index ifIndex",
          "allowed_values": null,
          "required": true
        },
        {
          "name": "interface",
          "description": "lookup from ifName",
          "allowed_values": null,
          "required": true
        }
      ],
      "value": {
        "min": 0.0,
        "max": null
      },
      "source": "SNMP ifHCInMulticastPkts oid=1.3.6.1.2.1.31.1.1.1.8 module=IF-MIB",
      "required": true
    },
    {
      "name": "network_interface_transmit_multicast_packets_total",
      "type": "counter",
      "help": "Multicast packets requested for transmission (64-bit counter).",
      "unit": "",
      "labels": [
        {
          "name": "ifIndex",
          "description": "table index ifIndex",
          "allowed_values": null,
          "required": true
        },
        {
          "name": "interface",
          "description": "lookup from ifName",
          "allowed_values": null,
          "required": true
        }
      ],
      "value": {
        "min": 0.0,
        "max": null
      },
      "source": "SNMP ifHCOutMulticastPkts oid=1.3.6.1.2.1.31.1.1.1.12 module=IF-MIB",
      "required": true
    },
    {
      "name": "network_interface_receive_broadcast_packets_total",
      "type": "counter",
      "help": "Broadcast packets delivered to a higher layer (64-bit counter).",
      "unit": "",
      "labels": [
        {
          "name": "ifIndex",
          "description": "table index ifIndex",
          "allowed_values": null,
          "required": true
        },
        {
          "name": "interface",
          "description": "lookup from ifName",
          "allowed_values": null,
          "required": true
        }
      ],
      "value": {
        "min": 0.0,
        "max": null
      },
      "source": "SNMP ifHCInBroadcastPkts oid=1.3.6.1.2.1.31.1.1.1.9 module=IF-MIB",
      "required": true
    },
    {
      "name": "network_interface_transmit_broadcast_packets_total",
      "type": "counter",
      "help": "Broadcast packets requested for transmission (64-bit counter).",
      "unit": "",
      "labels": [
        {
          "name": "ifIndex",
          "description": "table index ifIndex",
          "allowed_values": null,
          "required": true
        },
        {
          "name": "interface",
          "description": "lookup from ifName",
          "allowed_values": null,
          "required": true
        }
      ],
      "value": {
        "min": 0.0,
        "max": null
      },
      "source": "SNMP ifHCOutBroadcastPkts oid=1.3.6.1.2.1.31.1.1.1.13 module=IF-MIB",
      "required": true
    },
    {
      "name": "network_interface_receive_errors_total",
      "type": "counter",
      "help": "Inbound packets that contained errors preventing delivery to a higher layer.",
      "unit": "",
      "labels": [
        {
          "name": "ifIndex",
          "description": "table index ifIndex",
          "allowed_values": null,
          "required": true
        },
        {
          "name": "interface",
          "description": "lookup from ifName",
          "allowed_values": null,
          "required": true
        }
      ],
      "value": {
        "min": 0.0,
        "max": null
      },
      "source": "SNMP ifInErrors oid=1.3.6.1.2.1.2.2.1.14 module=IF-MIB",
      "required": true
    },
    {
      "name": "network_interface_transmit_errors_total",
      "type": "counter",
      "help": "Outbound packets that could not be transmitted because of errors.",
      "unit": "",
      "labels": [
        {
          "name": "ifIndex",
          "description": "table index ifIndex",
          "allowed_values": null,
          "required": true
        },
        {
          "name": "interface",
          "description": "lookup from ifName",
          "allowed_values": null,
          "required": true
        }
      ],
      "value": {
        "min": 0.0,
        "max": null
      },
      "source": "SNMP ifOutErrors oid=1.3.6.1.2.1.2.2.1.20 module=IF-MIB",
      "required": true
    },
    {
      "name": "network_interface_receive_discards_total",
      "type": "counter",
      "help": "Inbound packets discarded even though no errors were detected.",
      "unit": "",
      "labels": [
        {
          "name": "ifIndex",
          "description": "table index ifIndex",
          "allowed_values": null,
          "required": true
        },
        {
          "name": "interface",
          "description": "lookup from ifName",
          "allowed_values": null,
          "required": true
        }
      ],
      "value": {
        "min": 0.0,
        "max": null
      },
      "source": "SNMP ifInDiscards oid=1.3.6.1.2.1.2.2.1.13 module=IF-MIB",
      "required": true
    },
    {
      "name": "network_interface_transmit_discards_total",
      "type": "counter",
      "help": "Outbound packets discarded even though no errors were detected.",
      "unit": "",
      "labels": [
        {
          "name": "ifIndex",
          "description": "table index ifIndex",
          "allowed_values": null,
          "required": true
        },
        {
          "name": "interface",
          "description": "lookup from ifName",
          "allowed_values": null,
          "required": true
        }
      ],
      "value": {
        "min": 0.0,
        "max": null
      },
      "source": "SNMP ifOutDiscards oid=1.3.6.1.2.1.2.2.1.19 module=IF-MIB",
      "required": true
    },
    {
      "name": "network_interface_receive_unknown_protocol_packets_total",
      "type": "counter",
      "help": "Inbound packets discarded because of an unknown or unsupported protocol.",
      "unit": "",
      "labels": [
        {
          "name": "ifIndex",
          "description": "table index ifIndex",
          "allowed_values": null,
          "required": true
        },
        {
          "name": "interface",
          "description": "lookup from ifName",
          "allowed_values": null,
          "required": true
        }
      ],
      "value": {
        "min": 0.0,
        "max": null
      },
      "source": "SNMP ifInUnknownProtos oid=1.3.6.1.2.1.2.2.1.15 module=IF-MIB",
      "required": true
    },
    {
      "name": "network_interface_transmit_queue_length_packets",
      "type": "gauge",
      "help": "Length of the output packet queue.",
      "unit": "",
      "labels": [
        {
          "name": "ifIndex",
          "description": "table index ifIndex",
          "allowed_values": null,
          "required": true
        },
        {
          "name": "interface",
          "description": "lookup from ifName",
          "allowed_values": null,
          "required": true
        }
      ],
      "value": {
        "min": null,
        "max": null
      },
      "source": "SNMP ifOutQLen oid=1.3.6.1.2.1.2.2.1.21 module=IF-MIB",
      "required": true
    },
    {
      "name": "network_interface_speed_mbps",
      "type": "gauge",
      "help": "Estimate of the interface's current bandwidth in Mbit/s.",
      "unit": "",
      "labels": [
        {
          "name": "ifIndex",
          "description": "table index ifIndex",
          "allowed_values": null,
          "required": true
        },
        {
          "name": "interface",
          "description": "lookup from ifName",
          "allowed_values": null,
          "required": true
        }
      ],
      "value": {
        "min": null,
        "max": null
      },
      "source": "SNMP ifHighSpeed oid=1.3.6.1.2.1.31.1.1.1.15 module=IF-MIB",
      "required": true
    },
    {
      "name": "network_interface_oper_status",
      "type": "gauge",
      "help": "Current operational state of the interface (1=up,2=down,3=testing,4=unknown,5=dormant,6=notPresent,7=lowerLayerDown).",
      "unit": "",
      "labels": [
        {
          "name": "ifIndex",
          "description": "table index ifIndex",
          "allowed_values": null,
          "required": true
        },
        {
          "name": "interface",
          "description": "lookup from ifName",
          "allowed_values": null,
          "required": true
        }
      ],
      "value": {
        "min": null,
        "max": null
      },
      "source": "SNMP ifOperStatus oid=1.3.6.1.2.1.2.2.1.8 module=IF-MIB",
      "required": true
    },
    {
      "name": "network_interface_admin_status",
      "type": "gauge",
      "help": "Desired administrative state of the interface (1=up,2=down,3=testing).",
      "unit": "",
      "labels": [
        {
          "name": "ifIndex",
          "description": "table index ifIndex",
          "allowed_values": null,
          "required": true
        },
        {
          "name": "interface",
          "description": "lookup from ifName",
          "allowed_values": null,
          "required": true
        }
      ],
      "value": {
        "min": null,
        "max": null
      },
      "source": "SNMP ifAdminStatus oid=1.3.6.1.2.1.2.2.1.7 module=IF-MIB",
      "required": true
    },
    {
      "name": "network_interface_last_change_seconds",
      "type": "gauge",
      "help": "sysUpTime value at the time the interface entered its current operational state.",
      "unit": "",
      "labels": [
        {
          "name": "ifIndex",
          "description": "table index ifIndex",
          "allowed_values": null,
          "required": true
        },
        {
          "name": "interface",
          "description": "lookup from ifName",
          "allowed_values": null,
          "required": true
        }
      ],
      "value": {
        "min": null,
        "max": null
      },
      "source": "SNMP ifLastChange oid=1.3.6.1.2.1.2.2.1.9 module=IF-MIB",
      "required": true
    }
  ],
  "notes": "Focused on ifXTable 64-bit HC counters for throughput to avoid 32-bit wraparound, plus ifTable error/discard counters (no HC equivalents exist) and link-state/saturation gauges. Skipped ifRcvAddressTable, ifStackTable, and ifTestTable as administrative/control tables, and skipped rarely-changing scalars (ifNumber, ifTableLastChange, ifStackLastChange). A single ifIndex->ifName lookup covers all ifIndex-keyed metrics since ifTable and ifXTable share the same index."
}
selection.json — SNMP selection (the one model-produced artifact) · 105 lines
{
  "module_name": "netdev",
  "metrics": [
    {
      "mib_object": "ifHCInOctets",
      "metric_name": "network_interface_receive_bytes_total",
      "help": "Total octets received on the interface (64-bit counter)."
    },
    {
      "mib_object": "ifHCOutOctets",
      "metric_name": "network_interface_transmit_bytes_total",
      "help": "Total octets transmitted out of the interface (64-bit counter)."
    },
    {
      "mib_object": "ifHCInUcastPkts",
      "metric_name": "network_interface_receive_unicast_packets_total",
      "help": "Unicast packets delivered to a higher layer (64-bit counter)."
    },
    {
      "mib_object": "ifHCOutUcastPkts",
      "metric_name": "network_interface_transmit_unicast_packets_total",
      "help": "Unicast packets requested for transmission (64-bit counter)."
    },
    {
      "mib_object": "ifHCInMulticastPkts",
      "metric_name": "network_interface_receive_multicast_packets_total",
      "help": "Multicast packets delivered to a higher layer (64-bit counter)."
    },
    {
      "mib_object": "ifHCOutMulticastPkts",
      "metric_name": "network_interface_transmit_multicast_packets_total",
      "help": "Multicast packets requested for transmission (64-bit counter)."
    },
    {
      "mib_object": "ifHCInBroadcastPkts",
      "metric_name": "network_interface_receive_broadcast_packets_total",
      "help": "Broadcast packets delivered to a higher layer (64-bit counter)."
    },
    {
      "mib_object": "ifHCOutBroadcastPkts",
      "metric_name": "network_interface_transmit_broadcast_packets_total",
      "help": "Broadcast packets requested for transmission (64-bit counter)."
    },
    {
      "mib_object": "ifInErrors",
      "metric_name": "network_interface_receive_errors_total",
      "help": "Inbound packets that contained errors preventing delivery to a higher layer."
    },
    {
      "mib_object": "ifOutErrors",
      "metric_name": "network_interface_transmit_errors_total",
      "help": "Outbound packets that could not be transmitted because of errors."
    },
    {
      "mib_object": "ifInDiscards",
      "metric_name": "network_interface_receive_discards_total",
      "help": "Inbound packets discarded even though no errors were detected."
    },
    {
      "mib_object": "ifOutDiscards",
      "metric_name": "network_interface_transmit_discards_total",
      "help": "Outbound packets discarded even though no errors were detected."
    },
    {
      "mib_object": "ifInUnknownProtos",
      "metric_name": "network_interface_receive_unknown_protocol_packets_total",
      "help": "Inbound packets discarded because of an unknown or unsupported protocol."
    },
    {
      "mib_object": "ifOutQLen",
      "metric_name": "network_interface_transmit_queue_length_packets",
      "help": "Length of the output packet queue."
    },
    {
      "mib_object": "ifHighSpeed",
      "metric_name": "network_interface_speed_mbps",
      "help": "Estimate of the interface's current bandwidth in Mbit/s."
    },
    {
      "mib_object": "ifOperStatus",
      "metric_name": "network_interface_oper_status",
      "help": "Current operational state of the interface (1=up,2=down,3=testing,4=unknown,5=dormant,6=notPresent,7=lowerLayerDown)."
    },
    {
      "mib_object": "ifAdminStatus",
      "metric_name": "network_interface_admin_status",
      "help": "Desired administrative state of the interface (1=up,2=down,3=testing)."
    },
    {
      "mib_object": "ifLastChange",
      "metric_name": "network_interface_last_change_seconds",
      "help": "sysUpTime value at the time the interface entered its current operational state."
    }
  ],
  "lookups": [
    {
      "index_labels": [
        "ifIndex"
      ],
      "source_object": "ifName",
      "label_name": "interface"
    }
  ],
  "notes": "Focused on ifXTable 64-bit HC counters for throughput to avoid 32-bit wraparound, plus ifTable error/discard counters (no HC equivalents exist) and link-state/saturation gauges. Skipped ifRcvAddressTable, ifStackTable, and ifTestTable as administrative/control tables, and skipped rarely-changing scalars (ifNumber, ifTableLastChange, ifStackLastChange). A single ifIndex->ifName lookup covers all ifIndex-keyed metrics since ifTable and ifXTable share the same index."
}