🌳OID-Baum & MIB
Jede Information auf einem Agenten hat eine weltweit eindeutige Adresse: den Object Identifier. Die MIB-Dateien geben den Zahlen Namen und Typen – übertragen werden aber nur die Zahlen.
🌲Der Baum zum Aufklappen
- ▾📁iso(1)
- ▾📁org(3)
- ▾📁dod(6)
- ▾📁internet(1)
- 📁directory(1)
- ▾📁mgmt(2)
- ▾📁mib-2(1)
- ▾📁system(1)
- 🔹sysDescr(1)
- 🔹sysObjectID(2)
- 🔹sysUpTime(3)
- 🔹sysContact(4)
- 🔹sysName(5)
- 🔹sysLocation(6)
- 🔹sysServices(7)
- 🔹sysORLastChange(8)
- ▸📁interfaces(2)
- 📁ip(4)
- 📁tcp(6)
- 📁udp(7)
- 📁snmp(11)
- ▸📁host(25)
- ▸📁ifMIB(31)
- 📁experimental(3)
- ▸📁private(4)
- 📁security(5)
- ▸📁snmpV2(6)
sysUpTime
SkalarSNMPv2-MIBZeit seit dem (Neu-)Start des Management-Teils in Hundertstelsekunden
$ snmpget -v2c -c beispiel-community 192.0.2.10 SNMPv2-MIB::sysUpTime.0 $ snmpget -v2c -c beispiel-community -On 192.0.2.10 .1.3.6.1.2.1.1.3.0 # numerisch, ohne MIB
📎 Quellen: RFC 2578 – SMIv2 · RFC 3418 – SNMPv2-MIB · RFC 2863 – IF-MIB · RFC 2790 – HOST-RESOURCES-MIB · UCD-SNMP-MIB · NET-SNMP-EXTEND-MIB / NET-SNMP-MIB
🧭OID auflösen: Zahl ↔ Name ↔ Instanz
Gib eine numerische oder symbolische OID ein, wie sie Net-SNMP akzeptiert (MODUL::name.index). Der orange markierte Teil ist die Instanz – bei Skalaren immer .0, bei Tabellen der Index der Zeile.
06 0b 2b 06 01 02 01 1f 01 01 01 06 02
📎 Quellen: RFC 2578 – SMIv2 · RFC 3416 – Protokolloperationen (PDUs)
🔹Skalar: genau eine Instanz, .0
sysName ist der Objekttyp (1.3.6.1.2.1.1.5). Den Wert gibt es nur unter sysName.0. Ein snmpget … sysName ohne .0 liefert deshalb No Such Instance currently exists at this OID – ein GetNext bzw. Walk dagegen findet sysName.0, weil es der nächste Nachfolger ist.
📎 Quelle: RFC 3416 – Protokolloperationen (PDUs)
🗂️Tabelle: Spalte + Index
Eine Tabelle (ifTable) hat eine Zeilendefinition (ifEntry) mit Spalten. Die OID einer Zelle ist Spalte.Index: ifInOctets.2 = 1.3.6.1.2.1.2.2.1.10.2. Weil lexikografisch sortiert wird, liefert ein Walk die Tabelle spaltenweise – erst alle ifIndex, dann alle ifDescr … Text-Indizes wie bei nsExtendOutput1Line."test1" werden als Länge + ASCII-Codes kodiert.
📎 Quellen: RFC 2578 – SMIv2 · RFC 2863 – IF-MIB
📊ifTable des Beispiel-Agenten gw1.example.org
| Index ↓ / Spalte → | ifIndex .1 | ifDescr .2 | ifType .3 | ifMtu .4 | ifSpeed .5 | ifPhysAddress .6 | ifAdminStatus .7 | ifOperStatus .8 | ifInOctets .10 | ifInUcastPkts .11 | ifOutOctets .16 | ifOutUcastPkts .17 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| .1 | 1 | lo | 24 | 65536 | 10000000 | „“ | 1 | 1 | 18244190 | 120442 | 18244190 | 120442 |
| .2 | 2 | eth0 | 6 | 1500 | 1000000000 | 02:00:00:00:00:02 | 1 | 1 | 3984523411 | 98231455 | 1122334455 | 41200931 |
| .3 | 3 | eth1 | 6 | 1500 | 1000000000 | 02:00:00:00:00:03 | 2 | 2 | 0 | 0 | 0 | 0 |
ifName/ifDescr (oder ifAlias) zu und nicht über die Nummer allein.📎 Quellen: RFC 2863 – IF-MIB · RFC 1213 – MIB-II
🔣SMIv2-Datentypen
| Typ | BER-Tag | Wertebereich | typische Objekte | Hinweis |
|---|---|---|---|---|
| INTEGER / Integer32 | 0x02 | −2³¹ … 2³¹−1 | Aufzählungen (ifAdminStatus up(1)/down(2)), Kennzahlen | |
| OCTET STRING | 0x04 | 0 … 65 535 Oktette | Texte (DisplayString ≤ 255), MAC-Adressen, engineID | DisplayString ist nur eine Textkonvention |
| OBJECT IDENTIFIER | 0x06 | ≤ 128 Sub-IDs à 32 Bit | sysObjectID, snmpTrapOID.0 | |
| IpAddress | 0x40 | 4 Oktette | nur IPv4 – für IPv6 gibt es InetAddress | |
| Counter32 | 0x41 | 0 … 2³²−1, läuft über | ifInOctets, ifInErrors | nur Differenzen sind sinnvoll |
| Gauge32 / Unsigned32 | 0x42 | 0 … 2³²−1, bleibt am Maximum stehen | ifSpeed, ifHighSpeed, Warteschlangen | kann steigen und fallen |
| TimeTicks | 0x43 | 0 … 2³²−1 Hundertstelsekunden | sysUpTime, ifLastChange | Überlauf nach ≈ 497 Tagen |
| Opaque | 0x44 | beliebige BER-Daten | nur noch aus Kompatibilität | |
| Counter64 | 0x46 | 0 … 2⁶⁴−1, läuft über | ifHCInOctets, ifHCOutOctets | gibt es in SNMPv1 nicht |
📎 Quellen: RFC 2578 – SMIv2 · RFC 3416 – Protokolloperationen (PDUs)
⏱️Zählerüberlauf-Rechner
sysUpTime zählt die Laufzeit des Agenten, nicht des Rechners (dafür gibt es hrSystemUptime). Nach 2³² Hundertstelsekunden ≈ 497,1 Tagen beginnt er wieder bei 0 – ein „Neustart“ im Monitoring kann also auch ein Überlauf sein.
📎 Quellen: RFC 2578 – SMIv2 · RFC 2863 – IF-MIB · RFC 3418 – SNMPv2-MIB