Wir wissen bereits, wie man SNMP unter Linux konfiguriert. Es ist definitiv keine unmögliche Aufgabe, obwohl das Protokoll bereits über 30 Jahre alt ist und so manche Tücke hat. Eine grundlegende Einrichtung von SNMP unter einem Linux-Host sollte nicht mehr Zeit in Anspruch nehmen als bei den meisten anderen Internet-Protokollen. Der Client und der Daemon sind Open-Source und für praktisch jedes System verfügbar.
Dennoch etabliert sich in vielen Infrastrukturen der Trend, sich von SNMP abzuwenden. Es ist keine leichte Entscheidung, ein allgegenwärtiges Protokoll und eine standardisierte Monitoring-Lösung hinter sich zu lassen, die uns seit Jahrzehnten begleitet. Es muss schon triftige Gründe dafür geben.
Und die gibt es in der Tat.
In den 90er Jahren war es absolut sinnvoll, SNMP als Protokoll für das Management von Netzwerkgeräten (das "M" in SNMP steht für "Management") einzuführen. Es ist offen, standardisiert und relativ einfach zu verwenden. Netzwerkhersteller haben es seit über 30 Jahren in Routern, Switches und Firewalls implementiert, und es gibt keinen Grund zur Annahme, dass sich dies bald ändern wird. Heutzutage ist SNMP in Netzwerken und auf Linux-Servern in der einen oder anderen Version immer noch leicht zu finden. Das wird auch in den nächsten Jahren so bleiben.
SNMP ist daher nach wie vor ein wichtiges Protokoll für Netzwerkadmins, die für das Monitoring von Geräten zuständig sind. Besonders in älteren Netzwerkinfrastrukturen kann SNMP bereits von einem früheren IT-Teammitglied eingerichtet worden sein. Das bedeutet jedoch nicht unbedingt, dass wir gezwungen sind, die Befehlszeilenschnittstelle oder das Protokoll selbst zu verwenden. Im Allgemeinen geht es nicht nur darum, dass das Protokoll alt und nicht auf dem neuesten Stand ist. Es gibt mehrere Gründe, warum SNMP nicht mehr das Mittel der Wahl für Netzwerk-Monitoring ist.
Warum Sie besser nicht SNMP unter Linux verwenden
Obwohl es unbestreitbare Vorteile gibt, überwiegen die Nachteile. SNMP leidet seit jeher unter mangelhaften Implementierungen seitens der Netzwerkhersteller, was das Monitoring von Geräten suboptimal und anfällig für unvorhergesehene Fehler macht. Die fehlende Anpassung an die technologische Entwicklung fordert ihren Tribut von einem Protokoll, das über 30 Jahre alt ist. Die ursprünglichen Versionen v1, v2 und v3 brachten nur minimale Verbesserungen, die jedoch nichts an den Kernfunktionen und, was noch wichtiger ist, an den Schwachstellen von SNMP änderten. Daher ist es nicht verwunderlich, dass zwei große Unternehmen wie Microsoft und Google SNMP kürzlich für veraltet erklärt haben (Google ging sogar so weit zu behaupten, SNMP sei tot). SNMP mangelt es an Anpassungsfähigkeit und Sicherheit. Es war nie dazu gedacht, sicher und modular zu sein, und das ist heute besonders auffällig.
Windows hat es zugunsten von WMI und dann WinRM aufgegeben. Neuere Tools implementieren leichter zu analysierende Datenstrukturen wie XML und JSON, die für die Entwicklung von Skripten und Automatisierung nützlich sind. Auf der anderen Seite der Server-Welt sind die Lösungen unter Linux weit davon entfernt, fortschrittlich zu sein: net-snmp
ist eine Low-Level-Monitoring-Software, der ein Rundumblick auf die Infrastruktur fehlt.
SNMP war noch nie besonders schnell, und in Netzen mit Dutzenden oder Hunderten von Hosts zählt jede Millisekunde. Es ist kaum möglich, ein Gerät übergreifend zu überwachen, da dies einen Großteil der CPU-Zyklen in Anspruch nehmen würde. Die lobenswerten Verbesserungen in Bezug auf Sicherheit und Datenschutz von v3 haben dem ohnehin schon langsamen Protokoll eine neue Last auferlegt. Und beides kann nicht als optimal angesehen werden, da ihre Unterstützung von den Agenten abhängt und bisher sehr dürftig war. Die Verwendung von UDP-Paketen ist unzuverlässig, da sie keine Empfangsbestätigung enthält.
Eine Reihe von Fehlentscheidungen hat dazu geführt, dass SNMP seit einiger Zeit hinter anderen Monitoring-Lösungen unter Linux und auch sonst überall zurückbleibt. Der Hauptgrund, warum SNMP nicht schon längst aufgegeben wurde, ist die Unterstützung von Legacy-Geräten in vielen Netzwerken. Keine gute Werbung für ein Protokoll, das die Überwachung und Konfiguration von Hosts einfach und zuverlässig machen sollte.
Auch wenn Linux selbst, im Gegensatz zu Windows, SNMP nicht aufgegeben hat, gibt es eine Vielzahl von besseren Alternativen als SNMP-Monitoring. Heutzutage ermöglichen REST- und SOAP-APIs auf vielen Netzwerkgeräten und -applikationen einen Grad an Granularität, den SNMP einfach nicht bieten kann. NetFlow von Cisco und seine Nachfolger übertreffen SNMP um Längen, wenn es um die Analyse des was und wo des Netzwerkverkehrs geht. SSH ist heutzutage allgegenwärtig und bietet bei verbesserter Sicherheit und geringerem Overhead viel mehr Möglichkeiten als ein SNMP-Agent.
Selbst in Fällen, in denen es nicht möglich ist, von SNMP zu wechseln, beispielsweise wenn ein Linux-Server mit Routern oder Switches verbunden ist, die nur SNMP unterstützen, können Sie eine andere Software mit besserer Benutzeroberfläche und mehr Optionen verwenden.
Agentenbasiertes Monitoring statt SNMP?
Agentenbasierte Monitoring-Lösungen bieten IT-Teams viel Flexibilität bei der Konfiguration und eine Vielzahl von Überwachungsoptionen, die SNMP einfach nicht bieten kann. Schließlich gibt es einen Grund für ihre Beliebtheit. Sie haben einige Vorteile, die sie im Vergleich zu SNMP zu einer soliden Wahl machen.
Erstens gibt es in Bezug auf Performance so gut wie keine Konkurrenz. Agenten sind auf ihre spezifische Hardware optimiert und wurden in modernen Sprachen entwickelt, sodass sie die Performance der modernen Hardware ausnutzen können. Sie laufen auf dem Gerät selbst und erfassen Metriken, die sie bei Bedarf extern bereitstellen.
Sie sind außerdem ressourceneffizienter. SNMP weist zwar für Rohdaten eine vergleichbare Performance auf, verliert aber deutlich im Vergleich zu der Menge an Informationen, die eine agentenbasierte Lösung wie Checkmk zurückgeben kann. Daten aus Containern, Datenbanken, Clustern und Cloud-Services liegen durchaus im Bereich dessen, was eine agentenbasierte Monitoring-Software liefern kann.
SNMP ist nur ein Protokoll und kann nur grundlegende Informationen liefern. Agentenbasierte Monitoring-Lösungen sammeln so viele Details wie gewünscht, zumindest innerhalb der Grenzen dessen, wofür sie entwickelt wurden.
Das bringt uns zum nächsten Vorteil: die Erweiterungsfähigkeit. Während SNMP ein stabiler und fester Satz von Befehlen ist, können agentenbasierte Monitoring-Lösungen erweitert werden. Eine neuere Version eines Agenten bietet mehr Möglichkeiten, den Erfassungsbereich zu erweitern, die Performance zu verbessern und mehr. Da die Entwicklung in der Regel in den Händen eines einzigen Unternehmens liegt, muss sie im Vergleich zu einem Internetprotokoll nicht von einem Komitee genehmigt werden. Daher erfolgen Änderungen schneller, und neuere Versionen werden mehrmals pro Jahr veröffentlicht. Die meisten agentenbasierten Monitoring-Lösungen lassen sich mit Plugins erweitern und sogar, wie bei Checkmk, selbst schreiben, um Ihr Monitoring beliebig anzupassen. Das kann SNMP nicht.
Checkmk und SNMP
Checkmk unterstützt SNMP sowohl in der Raw Edition als auch in der Enterprise Edition. Checkmk kann SNMP nicht nur in allen Aspekten durch seine eigenen Agenten ersetzen, sondern auch über SNMP mit Geräten interagieren, über die Sie möglicherweise keine vollständige Kontrolle haben. Abfragen und Überwachung erfolgen über das Checkmk Interface, ohne dass Sie spezielle Kenntnisse des SNMP-Protokolls benötigen. Das ist sogar einfacher als die Konfiguration von SNMP.
IT-Teams, die nicht auf SNMP-basiertes Monitoring unter Linux verzichten können oder wollen, können es weiterhin über Checkmk nutzen. Damit können Sie eine Fülle anderer Hosts kontrollieren, die andere Monitoring-Agenten statt SNMP verwenden. Obwohl wir empfehlen, neuere Methoden für das Monitoring unter Linux zu nutzen, müssen Sie SNMP dank Lösungen wie Checkmk nicht sofort abschaffen. IT-Teams sollten keine Kompromisse bei der Benutzerfreundlichkeit, Sicherheit und Performance eingehen müssen, indem sie SNMP direkt verwenden oder snmpd auf ihren Linux-Servern konfigurieren. Es gibt bessere Optionen.