Warum benötigen SNMP-Agenten MIB-Dateien?

Warum benötigen SNMP-Agenten MIB-Dateien?

Nachdem ich mich über SNMP informiert habe und einige der hier gestellten Fragen hilfreich waren, glaube ich, dass ich die Rolle des Agenten als SNMP-Dienst für das Gerät verstehe (wie SQL ist es eine API für den Speicher).

Wenn Sie eine SQL-Abfrage ausführen, erledigt die SQL-Engine die gesamte Arbeit und gibt das Ergebnis zurück. Sie müssen sich nicht darüber im Klaren sein, wie und wo die Speicherung erfolgt.

Aber MIBs sind kein tatsächlicher Speicher, also was ist die Rolle meines Agenten?
Wenn der Agent nur die MIB registriert, wie ich es hier tueLernprogramm, es wird also überhaupt nicht als Handler verwendet und es bedeutet, dass es einen physischen Speicher gibt, den Sie festlegen und dorthin gelangen können, ohne den Handler zu umgehen. Im Tutorial machen Sie das alles so:

netsnmp_register_int_instance("my example int variable",
                                  my_registration_oid,
                                  OID_LENGTH(my_registration_oid),
                                  &example1, NULL);

kein Handler zum Verarbeiten von Anrufen erforderlich.

Angenommen, ich möchte die Warteschlange für ausstehende Anforderungen meiner Anwendung überwachen. Dazu brauche ich einen Agenten, der alle SNMP-Anforderungen für application_pending_request auslöst und die Warteschlangentiefe zurückgibt. Warum brauche ich eine tatsächliche MIB, wenn ich nur meine Anwendungswarteschlange abfragen muss, um ein Ergebnis zu erhalten?

Antwort1

Sie haben ein grundlegendes Missverständnis darüber, wie SNMP funktioniert. Ein kurzer, grober Vergleich:SNMP-MIBs sind wie Hostnamen. MIBs ordnen OIDs einem benutzerfreundlichen Namen zu, beispielsweise
.1.3.6.1.2.1.1.1.0=> SNMPv2-MIB::sysDescr.0=> Host Description(uname-Ausgabe).

Um Informationen von einem SNMP-Server (Agent) abzurufen, müssen diese Informationenmussunter einer bestimmten OID veröffentlicht werden.
Damit ein SNMP-Daemon Informationen veröffentlichen kann, benötigt er (normalerweise) zwei Dinge:

  1. Eine Möglichkeit, diese Informationen zu erhalten (Skript, Programm usw.)
  2. Ein Ort zum Ablegen dieser Informationen (eine OID)
    (einige SNMP-Daemons erfordern möglicherweise auch eine MIB-Datei, die die OID abbildet)

Um die Informationen abrufen zu können, müssen Sie die OID kennen - dies kann entweder eine numerische OID oder ein "freundlicher" Name aus einer MIB-Datei auf IhremSNMP Klient.

SNMP-„Browser“ erfordern normalerweise eine MIB-Datei, da sie Ihnen ohne eine solche lediglich eine bedeutungslose Zahlenliste präsentieren können.

Die Antwort auf Ihre Frage lautet also: „Sie müssen nichtBRAUCHENMIB-Dateien sind nur für Menschen hilfreich, die mit SNMP interagieren müssen.“


Aus Ihrem Beispiel (Melden einer Warteschlangenlänge) klingt es so, als ob Ihnen das Tutorial gefallen hätte, das Sie verwenden net-snmp(UCD-SNMP).
net-snmpEnthält integrierte Funktionen für derartige Dinge – lesen Sie die Manpage und die Beispielkonfigurationsdatei durch (achten Sie besonders auf die execAnweisung zum Ausführen externer Skripte: Normalerweise würden Sie ein Skript ausführen, das die Warteschlangenlänge ausdruckt, und diese OID in Ihrer Überwachungssoftware/Ihrem SNMP-Client abfragen).

verwandte Informationen