Nagios vs Zabbix - Distributed Systems Group

Transcrição

Nagios vs Zabbix - Distributed Systems Group
Nagios vs Zabbix
Andreas Bretschneider - 0327444
Michael Opitz - 0828257
Inhaltsverzeichnis
1
Inhaltsverzeichnis
1 Einführung
2
2 Ausfallserkennung und Notifications
2.1 Nagios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.2 Zabbix . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.3 Fazit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3
5
7
9
3 Graphische Darstellung
10
3.1 Nagios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
3.2 Zabbix . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
3.3 Fazit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
4 Lern- und Konfigurationsaufwand
12
4.1 Nagios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
4.2 Zabbix . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
4.3 Fazit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
5 Performance
5.1 Nagios .
5.2 Zabbix .
5.3 Fazit . .
und
. . .
. . .
. . .
Hochverfügbarkeit
14
. . . . . . . . . . . . . . . . . . . . . . . . . . . 14
. . . . . . . . . . . . . . . . . . . . . . . . . . . 14
. . . . . . . . . . . . . . . . . . . . . . . . . . . 15
6 Community-Unterstützung, Weiterentwicklung und Erweiterbarkeit
15
6.1 Nagios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
6.2 Zabbix . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
6.3 Fazit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
7 Sonstige Unterschiede
17
8 Fazit
18
1
Einführung
2
Zusammenfassung
Es gibt eine große Anzahl von OpenSource Netzwerküberwachungssystemen, die für unterschiedliche Zielgruppen und Einsatzzwecke designt wurden. Direkte und ausführliche Vergleiche solcher Systeme findet man jedoch nicht im Netz. Ein Vergleich dieser Überwachungssystemen würde die Wahl des Überwachungssystems für Netzwerkadministratoren wesentlich erleichtern. Im folgenden werden die 2 OpenSource Netzwerküberwachungssysteme Nagios [6] und Zabbix [5] anhand von unterschiedlichen Kriterien verglichen. Dadurch kann sich
der Leser am Ende ein Bild machen, welches System für ihn am besten geeignet ist.
1
Einführung
OpenSource Netzwerküberwachungssysteme unterscheiden sich in vielerlei
Hinsicht. Manche Systeme zum Beispiel sind eher für Langzeitüberwachung,
also hauptsächlich zur Generierung von Graphen aus z.B.: SNMP-Daten, geeignet. Manche sind nur für Kurzzeitüberwachung, also hauptsächlich zur
Überprüfung ob ein entsprechender Host bzw. ein Service auf diesem Host
gerade läuft, geeignet. Wieder andere versuchen beide Aspekte in einer Gesamtlösung zu kombinieren. Die Frage, die sich dabei ein Netzwerkadministrator vielleicht stellt ist: Wie gut deckt ein bestimmtes Überwachungssystem meine Bedürfnisse und Anforderungen ab? Um eine Antwort auf diese
Frage zu geben, haben wir im folgenden die beiden bekannten OpenSource
Netwerküberwachungs-Lösungen Nagios und Zabbix anhand von folgenden
Kriterien verglichen:
• Ausfalls-Erkennungs— und Notification-Möglichkeiten (Sektion 2).
• Unterschiede in der graphischen Darstellungsmöglichkeit (Sektion 3).
• Lern- und Konfigurationsaufwand der beiden Software-Systeme (Sektion 4).
• Performance/Skalierbarkeit und Hochverfügbarkeit (Sektion 5).
• Community-Unterstützung, Weiterentwicklung und Erweiterbarkeit (Sektion 6).
2
2
Ausfallserkennung und Notifications
3
Ausfallserkennung und Notifications
Das Erkennen von Ausfällen von Hosts und daraufhin das Versenden von
Notifications an eine oder mehrere Personen gehört zum Herzstück eines
jeden Überwachungssystems.
Um den Ausfall eines Systems erkennen zu können gibt es unterschiedliche Typen von Überprüfungen. Zunächst einmal gibt es die Möglichkeit ein
Service direkt auf (Layer-7) Protokoll-Ebene zu testen. Für einen Web-Server
bedeutet dies beispielsweise, dass HTTP-Requests gemacht werden würden
und der HTTP-Response des Servers auf Status-Codes und/oder auf einen
Response-String geprüft wird. Eine weitere Art einen Server zu überwachen
stellen sogenannte Agents dar. Ein Agent ist eine spezielle Software, die am
zu überwachenden System installiert wird und dann diverse Daten, wie etwa
CPU-Auslastung, laufende Prozesse, belegter Speicher, . . . an den Überwachungsserver schickt. Auf Basis dieser Daten kann dann entschieden werden,
ob sich der Server in einem kritischen Zustand befindet oder nicht. Die letzte
Art einen Server zu testen sind SNMP-Requests, was vor allem bei Netzwerkgeräten wie Switches oder Router eingesetzt wird. So knnen Statistiken über
die Auslastung der Interfaces erstellt werden, um so beispielsweise eventuelle
Bandbreitenengpässe im Netzwerk erkennen zu können.
Eines der Haupt-Unterscheidungsmerkmale bei Überwachungssystemen
ist die Behandlung von Dependencies. Wenn man Dependencies bei der Konfiguration nicht berücksichtigt, kann es vorkommen, dass man mit Benachrichtigungen über Ausfälle überhäuft wird, da Hosts, welche hinter einem
ausgefallenen Gerät liegen, ebenfalls vom Überwachungssystem den Zustand
“Ausgefallen” zugewiesen bekommen (siehe Abb. 1).
Eine weitere wichtige Frage, die man sich stellen sollte ist wann und an
welche Personen Notifications versendet werden sollen. Es ist in der Regel
wichtig bei einem ausgefallenen Host nur eine gewisse Personengruppe, die für
den ausgefallenen Host zuständig ist, zu alamieren. Darüber hinaus kann eine
Anforderung sein, dass man zu verschiedenen Tageszeiten unterschiedliche
Personengruppen benachrichtigt. Schließlich kann es möglich sein, dass es
eine Art Bereitschaftsdienst in einer Firma gibt, bei dem unterschiedliche
Personen zu unterschiedlichen Tagen verantwortlich für einen gewissen Teil
des Netzwerks sind.
Außerdem sollte man klären wie die entsprechenden Personen benachrichtigt werden sollen. Möchte man bei einem Ausfall eine SMS an die betreffenden Personen schicken, oder “genügt” eine einfache E-Mail? Möglicherweise ist es außerdem sinnvoll für unterschiedliche Hosts unterschiedliche
Benachrichtigungs-Arten zu wählen. Fällt beispielsweise ein wichtiger WebServer aus, so sollte man eine SMS verschicken, ist aber der Papiervorrat
2
Ausfallserkennung und Notifications
4
Abbildung 1: Bei einem Ausfall von Router 1 sollte es möglich sein nur über den
Ausfall des Routers 1 benachrichtigt zu werden, nicht aber über einen Ausfall des
Routers 2, dessen Status ja eigentlich aus Sicht des Überwachungsservers Unbekannt ist.
eines Druckers knapp, so reicht unter Umständen eine einfache E-Mail.
Wenn ein Interface eines Hosts sich in einem sogenannten “Flapping”Zustand befindet, also periodisch auf die Zustände UP und DOWN wechselt,
dann kann es bei manchen Netzwerüberwachugnstools passieren, dass für jeden dieser Zustandswechsel eine Benachrichtigung generiert wird. Dadurch
werden die betroffenen Personen allerdings mit vielen unnötigen Benachrichtigungen “zugemüllt”. Idealerweise erkennt eine Überwachungssoftware
diesen Umstand und verschickt dafür nur eine einzige Benachrichtigung.
Desweiteren kann es manches Mal erforderlich sein einen Host bzw. einen
Service, der auf einem Host läuft wegen Wartungsarbeiten kurzzeitig zu deaktivieren, da z.B.: ein Sicherheitspatch eingespielt werden muss. Für solche
Zwecke ist es sinnvoll Notifications für einen Host bzw. ein Service auf einem
Host kurzzeitig am Überwachungssystem deaktivieren zu können, um nicht
unnötige Benachrichtigungen zu versenden.
Neben sogennanten aktiven Checks, die vom Netzwerküberwachungssystem selbst initiiert werden, ist es außerdem noch erforderlich passive Checks,
die von einem externen Gerät kommen, wie etwa SNMP-Traps, in das System
zu integrieren.
2
Ausfallserkennung und Notifications
5
(a) Trifft eines der Statements zu, so (b) Oben: die Services auf dem Host vor dem
wird keine Notification an die Person ver- Ausfall. Unten: Der HTTP-Service ist ausgeschickt.
fallen - aber es wurde nur eine Notification an
2 Kontakte für den HTTP-Service verschickt.
Abbildung 2: Ausfallerkennung bei Nagios.
2.1
Nagios
Die Checks in Nagios werden grundsätzlich ausschließlich über Plugins durchgeführt. Ein Plugin ist einfach nur ein ausführbares Script/Programm, das
vom Nagios-Daemon ausgeführt wird und dessen Rückgabewert einen Status
repräsentiert, der letzten Endes (abhängig von der genauen Konfiguration)
im Überwachugnssystem angezeigt wird. Darüber hinaus wird die StandardAusgabe des Plugins im Überwachungssystem angezeigt um eventuell zusätzliche Fehlerinformationen den verantwortlichen Personen anzeigen zu können.
Außerdem können von einem Plugin auch sogenannte Performance-Daten —
das sind numerische Werte, wie etwa die Dauer des HTTP-Requests oder die
Anzahl der fehlerhaften Packete bei einer SNMP-Interface-Abfrage — durch
Ausgabe der entsprechenden Werte vom Plugin auf die Standard-Ausgabe
ausgewertet werden. Grundsätzlich wird bei Nagios ein Service eher über
eine Abfrage mittels dem entsprechenden Layer-7 Protokoll getestet. Falls
dies nicht möglich ist, existieren aber auch SNMP-Plugins, die sogar ber
2
Ausfallserkennung und Notifications
6
den Package-Manager von diversen populären Distributionen (etwa Debian) verfügbar sind. Darüber hinaus gibt es für Agent-basierende Überwachung das NRPE-Addon, welches CPU-Auslastung und Ähnliche Daten eines Linux-, Windows-, BSD,- Mac-,. . . -Systems dem Überwachungssystem
mitteilen kann.
Nagios unterscheidet prinzipiell zwischen Hosts und Services, die auf Hosts
laufen können. Hosts können einen der folgenden States haben:
• UP
• DOWN
• UNREACHABLE
Die States welche ein Service annehmen kann sind:
• OK
• WARN
• CRITICAL
• UNKNOWN
Zwischen Hosts können Dependencies aus Sicht des Nagios-Servers konfiguriert werden. Zwischen Services können ebenfalls Abhängigkeiten definiert werden (siehe Abb. 2(b)). Dadurch kann man beispielsweise auch eine
Abhängigkeit für eine Web-Applikation machen, die auf ein internes Webservice zugreifen muss, um seine Tätigkeit zu erfüllen.
Einer Host- oder Service-Gruppe können im Nagios mehrere Kontaktgruppen zugewiesen werden. Darüber hinaus kann spezifiziert werden in welchen Zeitraum eine Gruppe eine Nachricht empfangen kann und in welchen
Zeitraum ein Host bzw. Service eine Benachrichtigung “erzeugen” kann. Außerdem kann man konfigurieren über welche Zustnde (UP, DOWN, UNREACHABLE, OK, WARN, CRITICAL, UNKNOWN) man benachrichtigt werden will. Einem Kontakt kann ein Kommando zugewiesen werden,
das ausgeführt wird, wenn eine Notification verschickt werden soll. Dieses
Script kann nun beispielsweise eine E-Mail versenden, eine SMS verschicken, per IM die entsprechende Person benachrichtigen,. . . Einem Kontakt
bzw. einer -gruppe kann aber immer nur eine einzige Zeitspanne bzw. eine Notification-Art zugewiesen werden. Um beispielsweise unterschiedliche
Notification-Arten (z.B.: in der Dienstzeit der Versand einer E-Mail, außerhalb der Versand einer SMS) zu konfigurieren muss man Kontakte mehrfach
anlegen.
2
Ausfallserkennung und Notifications
7
Zusätzlich bietet Nagios auch Flapping-Detection und das Versetzen von
Hosts und Services in einen Wartungsmodus an. Der Wartungsmodus kann,
anders als bei einer Änderung der Konfiguration (z.B. Erstellen eines neuen
Hosts), über das Webinterface aktiviert werden.
In Abbildung 2(a) wird nochmals zusammengefasst wann eine Notification an einem Kontakt versendet wird.
Ist diese Art der Benachrichtigung zu unflexibel, so kann die Benachrichtigungslogik auch in das Script eingebaut werden, das verwendet wird
um Benachrichtigungen wegzuschicken. Dem Script können sämtliche Macros übergeben werden und das Script kann daraufhin leichter intelligentere
Benachrichtigungen verschicken.
SNMP-Traps und Ähnliche Benachrichtigungen von “außen” können ebenfalls über Nagios verarbeitet werden [13].
2.2
Zabbix
(a) Die Konfiguration von “Items” bei
Zabbix.
(b) “Items” werden “Trigger” zugewiesen.
(c) “Actions” bestimmen welche Gruppen benachrichtigt werden,
wenn ein “Trigger” eintritt.
Abbildung 3: Die grundlegende Zabbix-Konfiguration.
2
Ausfallserkennung und Notifications
8
Überprüfungen können in Zabbix über eine Agent-Software (“zabbix agent”),
SNMP oder eigens geschriebene Plugins durchgeführt werden. Es gibt aber
auch einige rudimentäre integrierte Layer-7 Protokoll-Checks, wie etwa HTTP
oder SMB.
An Zuständen kennt Zabbix im Gegensatz zu Nagios nur OK und PROBLEM, allerdings erlaubt Zabbix die Spezifikation der “Severity” (Wichtigkeit) eines Services. Die Severity des Service wird durch farbliche Hervorgehoben angezeigt.
Ähnlich wie bei Nagios können bei Zabbix Hosts, die zu Hostgroups zusammengefasst werden, konfiguriert werden. Neben Hosts können, so wie
auch bei Nagios, Templates definiert werden, die dann einem Host zugewiesen werden können.
Einem Host (und auch einem Template) weißt man in der Regel anschließend sogenannte “Items” zu (siehe Abb. 3(a)). “Items” sind Werte, die man
am entsprechenden Host abfragen will. Darunter fallen vor allem SNMPWerte, die man Abfragen möchte, oder auch Agent-Abfragen (z.B.: CPUAuslastung, . . . ) und externe Scripte, mit denen man etwas prüfen möchte.
Items können auch numerische Werte zurückliefern, die über einen gewissen
Zeitraum hinweg gespeichert und grafisch angezeigt werden können. Items
können zu sogenannten Applications (Anwendungen) gruppiert werden, was
zur besseren Übersicht beiträgt.
Um nun überhaupt Nachrichten verschicken zu können müssen zunächst
noch Trigger konfiguriert werden (siehe Abb. 3(b)). Ein Trigger bezieht sich
immer auf ein vorher konfiguriertes Item und prüft mittels einer “Expression” (einem logischen Ausdruck) ob zum Beispiel der letzte Wert eines Items
den Wert 0 hatte, da zum Beispiel der Host nicht mehr auf PINGs antwortet. Expressions können sich auch auf Zeitspannen und Durchschnittswerte
beziehen. Zwischen Triggers können Dependencies definiert werden.
Die eigentlichen Nachrichten werden durch sogenannte Actions verschickt
(siehe Abb. 3(c)). Actions werden grundsätzlich dann ausgeführt wenn ein
Trigger “triggert” (also die Bedingung des Trigger zutrifft). Zusätzlich müssen
aber noch die Bedingungen der Action erfüllt sein. So kann man zum Beispiel
konfigurieren, dass eine bestimmte Action nur dann ausgeführt werden soll,
wenn die Hostgruppe, des ”Verursachers“einen bestimmten Wert hat. Sind
alle Bedingungen erfüllt so wird die eigentliche Aktion, nämlich das Senden
einer Nachricht an eine oder mehrere Host-Gruppen, eingeleitet.
Ähnlich wie bei Nagios gibt es auch hier die Möglichkeit externe Kommandos aufzurufen und ggf. auch, falls das System zu unflexibel ist, zusätzliche
Benachrichtigungslogik in externe Scripte auszulagern.
Flapping Detection und einen Wartungsmodus hat Zabbix in der Version
1.6.X nicht, allerdings sind diese Funktionalitäten bereits für die nächste
2
Ausfallserkennung und Notifications
9
Version geplant.
Dafür können mit Zabbix auch Web-Anwendungen getestet werden indem
eine Reihe von HTTP-Requests definiert wird, mit denen eine Seite abgefragt
werden soll. Die Response-Geschwindigkeit wird dabei automatisch geplottet.
Um SNMP-Traps empfangen zu können muss bei Zabbix, ähnlich wie bei
Nagios, auch Zusatzaufwand investiert werden [15].
2.3
Fazit
Bei Zabbix wird im Vergleich zu Nagios eher Agent-basierende Überwachung
und SNMP-basierende Überwachung eingesetzt, da defaultmäßig nicht viele
Plugins mitgeliefert werden, die direkt über das Layer 7 Protokoll Anwendugnen überprüfen. Nichtsdestotrotz ist es bei Zabbix theoretisch möglich auch
solche Tests durch selbsgeschriebene Plugins einzuführen, allerdings stellt
das einen Mehraufwand dar. Dafür sind besonders durch XML-Templates,
die die zu testenden MIB-Werte eines entsprechenden Netzwerkgerätes vorkonfigurieren, bei SNMP-basierenden Überwachungssystemen nützlich. Den
Einsatz von Agent-Software sollte man sich vorher überlegen, schließlich muss
die Agent-Software auf allen Rechnern bei Upgrades und eventuellen Sicherheitslücken geupdatet werden, während der SNMP-Agent normalerweise mit
dem Betriebssystem selbst, bzw. durch den Package-Manager geupdatet wird.
Beide Lösungen besitzen einen umfassenden Support für Benachrichtigungen und Ausfalls-Erkennung. Nagios hat für Hosts, die von komplett
ausgefallenen Hosts im Netzwerk “verdeckt” werden einen Extra-Zustand
UNKNOWN bzw. UNREACHABLE. Für Zabbix kann man dafür die “Severity”, also die “Wichtigkeit” eines einzelnen Services konfigurieren. Zabbix
bietet darüber hinaus sehr gut integrierte Web-Checks an, mit denen man
Web-Anwendungen sehr komfortabel testen kann. Für Nagios muss man sich
dafür erst entweder ein eigenes Plugin oder ein bestehendes OSS-Plugin suchen, und hat dann meistens aber kein Webinterface zur Verfügung über das
man den Test konfigurieren kann.
Die Bereich in denen Zabbix (1.6.X) noch Aufholbedarf hat ist vor allem
der Wartungsmodus von Hosts und Services sowie die Flapping Detection.
Das Einbinden von externen Benachrichtigungen, wie etwa SNMP-Traps,
ist bei beiden Systemen etwas aufwändiger als das Konfigurieren von selbst
initierten Checks.
3
Graphische Darstellung
3
10
Graphische Darstellung
Durch die eine übersichtliche graphische Darstellung der Netzwerk-Topologie
auf sogenannten Maps kann man schnell erkennen wo sich im Netzwerk ein
ausgefallener Host befindet und welche Hosts man aufgrund eines Ausfalls
nicht mehr überprüfen kann.
Mittels Graphen kann man sich vor allem SNMP-Daten anzeigen lassen und so feststellen ob es vielleicht irgendwo im Netz zu BandbreitenEngpässen kommt oder Ähnliches.
3.1
Nagios
(a) Eine NagVis Map.
(b) Die Standard-Nagios Map.
Abbildung 4: Visualisierungsmöglichkeiten in Nagios.
Nagios bietet standardmäßig nur die Anzeige von einer Netzwerk-Map
an, die per Default alle konfigurierten Hosts im Netzwerk anzeigt. Man kann
die Hosts auf der Map aber auch nach Hostgruppen filtern und so nur ein
Subset von Hosts anzeigen. Die Map wird automatisch aus der Konfiguration erstellt und man kann dadurch relativ gut die Parent-Child-Beziehungen
(Dependencies) zwischen den einzelnen Hosts überprüfen. Darüber hinaus
gibt es verschiedene Darstellungsformen der Map (kreisförmig, hierarchisch,
. . . ). Bei vor allem eher kleineren Netzen ist dies recht nützlich, da man so
ohne Zusatzaufwand eine automatisch generierte Map bekommt, bei größeren
Netzen mit vielen Hosts wird diese Standard-Darstellung aber recht schnell
zu unübersichtlich.
Die Map kann durch in Konfigurationsdateien explizit angegebene X,YKoordinaten angepasst werden und man kann Hosts auch individuelle Graphiken zuweisen. Allerdings ist vor allem die Spezifikation von X,Y-Koordinaten
recht aufwändig.
3
Graphische Darstellung
11
Zusätzlich bietet Nagios auch eine 3D Map an, für die aber wiederum
explizit X-, Y- und auch Z-Koordinaten für jeden Host angegeben werden
müssen und die deswegen auch eher selten verwendet wird.
Bei vor allem größeren Netzen, bei denen man mehrere Maps für unterschiedliche Teile des Netzwerkes haben will, ist man daher auf Addons wie
NagVis (siehe Abb. 4) angewiesen, mit denen auf einer Web-Oberfläche per
Drag and Drop und mittels eines Hintergrundbilds (meistens einem Netzplan, den man bei einem größeren Netz sowieso haben sollte) seine Maps
zusammenstellen kann [12]. Dies erfordert aber wiederum zusätzlichen Installationsaufwand und außerdem integrieren sich solche Addons im Normalfall nicht besonders gut mit der Nagios-Oberfläche sondern wirken eher wie
fremde Applikationen, die auf dem selben Server unter einer anderen URL
laufen.
Graphen, die z.B. SNMP-Werte plotten sind in Nagios standardmäßig
nicht integriert. Man muss dafür zu Addons wie etwa PNP4Nagios greifen
[14]. Alternativ kann man auch eine ganz andere Netzwerküberwachungslösung
wie Cacti oder MRTG einsetzen, die auf das Rendering solcher Graphen spezialisiert ist.
3.2
Zabbix
Abbildung 5: In Zabbix sind verschiedene graphische Features bereits integriert.
4
Lern- und Konfigurationsaufwand
12
Bei Zabbix sind sowohl Maps als auch Graphen standardmäßig integriert.
Maps müssen so wie bei NagVis explizit konfiguriert werden. Dafür ist die
Konfiguration von Maps sehr gut in das Zabbix-Webinterface integriert. Es
können selbstverständlich auch mehrere Maps konfiguriert werden, die jeweils
einen Teilbereich im Netzwerk abbilden. Dadurch können auch größere Netze
durch mehrere Maps übersichtlich dargestellt werden (siehe Abb. 5).
Graphen können bei Zabbix automatisch für alle numerischen Werte (wie
etwa SNMP-Interface-Abfragen, aber auch Agent-Abfragen) per Knopfdruck
geplottet werden, was einen enormen Konfigurationsaufwand erspart. Neben
den Linien-artigen Graphiken kann man sich außerdem Pie-Charts aus den
Daten erstellen lassen.
Maps und Graphen können auf sogenannten Screens aggregiert werden
(siehe Abb.: 5).
3.3
Fazit
Bei vor allem größeren Netzen kann Zabbix bei der visuellen Aufbereitung
Punkten. Nagios ist zwar bei kleineren Netzen übersichtlicher, da dort die
automatisch erstellte Status-Map sehr übersichtlich ist, und man leichter ausgefallene Rechner im Webinterface findet. Bei größeren Installationen muss
man sich auf Zusatz-Addons wie etwa NagVis und den Nagios Business Process Addons verlassen, mit denen man übersichtlichere Maps und aggregierte
Status-Ansichten anzeigen lassen kann.
Desweiteren bietet Nagios standardmäßig keinen Support für das Plotten
von beispielsweise SNMP-Daten, während Zabbix diese auf Knopfdruck erstellen kann. Wer also ohne viel Aufwand investieren zu wollen viele Graphen
sich anzeigen lassen will, sollte Zabbix bevorzugen.
4
Lern- und Konfigurationsaufwand
Auch der Lern- und Konfigurationsaufwand ist ein wichtiger Aspekt bei einem Netzwerküberwachungssystem. Möchte man schnell mehrere Hosts hinzufügen oder eine Änderung an einem bestehenden Host machen, so sollte
dies für einen geübten Netzwerktechniker keinen allzu großen Zeitaufwand
darstellen.
Der Lernaufwand, den man investieren muss um das System zu konfigurieren sollte möglichst gering sein. Schließlich möchte man erreichen, dass
sich möglichst viele Mitarbeiter mit dem System auskennen, dass falls jemand
unvorhergesehen durch beispielsweise Krankheit ausfällt, ein anderer für ihn
einspringen kann. Falls der Lernaufwand recht hoch ist, bedeutet das dass
4
Lern- und Konfigurationsaufwand
13
sich möglicherweise aus Kostengründen nur wenige Personen in das System
einarbeiten können.
4.1
Nagios
Nagios wird standardmäßig über Konfigurationsdateien mit einem Texteditor konfiguriert. Die Konfigurations-Sprache unterstützt Konzepte wie Vererbung durch Templates, wodurch das Anlegen eines oder mehrerer neuer Hosts
nicht besonders aufwändig ist vorausgesetzt man hat seine Hosts geschickt in
Hostgroups gruppiert und/oder verwendet geschickt Templates. Der Nachteil
davon ist, dass man die Konfigurationskonzepte und das Notification-System
dafür erst einmal gut verstehen muss
Alternativ falls man keine guten Unix-Kenntnisse hat, kann man auch ein
Konfigurations-Addon wie etwa NConf installieren [8], mit den man Nagios
über ein PHP-basierendes Webinterface konfigurieren kann. Dadurch erhöht
sich aber der Installations- und ggf. auch der Upgrade-Aufwand.
Insgesamt ist der Lernaufwand von Nagios eher hoch, da man standardmäßig
keine visuelle Unterstützung durch eine Web-Oberfläche hat und man sich
diverse Konfigurations-Konzepte einarbeiten muss.
4.2
Zabbix
Zabbix wird standardmäßig über ein Webinterface konfiguriert. Dadurch und
dem eher leichter zu verstehenden Notification-Konzept hat man bei Zabbix einen eher geringeren Lernaufwand. Abgesehen von der Installation und
sonstigen Upgrade-Arbeiten braucht man für die Konfiguration selbst keine
besonders guten Unix-Kenntnisse.
Wenn man allerdings viele Hosts auf einmal erstellen möchte entsteht
beim Konfigurieren unter Umständen ein höherer (Klick-)Aufwand.
4.3
Fazit
Hat man gute Unix-Kenntnisse und kann gut mit einem Editor und ggf. einer
Scriptsprache umgehen mit der man schnell viele Dateien für viele Hosts
erstellen kann, dann ist Nagios in Hinblick auf den Konfigurationsaufwand
Zabbix eher vorzuziehen. Dafür muss man aber einen höheren Lernaufwand in
Kauf nehmen. Ist man eher weniger geübt mit Editoren und Scriptsprachen,
so sollte man sich für Zabbix entscheiden.
5
Performance und Hochverfügbarkeit
5
14
Performance und Hochverfügbarkeit
Vor allem in großen Netzwerken kann es eine Rolle spielen Daten der einzelnen Netzwerkgeräte möglichst effizient abzufragen, sodass kein unnötiger
Netztraffic entsteht. Durch zu viele Einzelrequests, die allesamt lange dauern kann unter Umständen die Überwachungssoftware selbst ausgebremst
werden, da zu viele Anfragen verarbeitet werden müssen. Darüber hinaus
kann es manches Mal eine Anforderung sein das Überwachungssystem hochverfügbar auszulegen, sodass beim Ausfall eines Servers ein Backup-Server
einspringt und das Monitoring übernimmt.
5.1
Nagios
In riesigen Umgebungen können unter Umständen Plugins, die Hosts für
jeden zu überwachenden Wert einzeln abfragen, zu Performance-Problemen
führen. Es existieren allerdings diverse Lösungen für dieses Problem. So kann
man zum Beispiel mehrere Nagios-Server einsetzen, die jeweils einen Teil
eines Netzwerks monitoren und dann die Resultate an einem zentralen Server
aggregieren [2]. Nagios 3 bietet außerdem eine Option an, um die Sicht von
mehreren verteilten Servern auf das Netzwerk zu ”normalisieren”, sodass man
immer eine konsistente Sicht auf das Netzwerk hat.
Darüber hinaus gibt es die Möglichkeit Plugin-Ergebnisse durch WrapperPlugins zu cachen, wodurch ebenfalls die Skalierbarkeit und Performance
gesteigert werden kann [9].
Hochverfügbarkeit kann für Nagios kann beispielsweise mittels Heartbeat
[4] und DRBD [3] (bzw. einem SAN) erreicht werden [10].
Insgesamt können wir also sagen, dass es sehr große Nagios-Installationen
gibt, man allerdings wie bei vielen anderen Bereichen zusätzliche Arbeit investieren muss, damit das System gut skaliert und ausfallsicher ist.
5.2
Zabbix
Ähnlich wie Nagios kann man mit Zabbix auch ein verteiltes Monitoring auf
mehreren Zabbix-Servern durch sogenannte Proxies betreiben, die diverse
Status-Daten dann an einen zentralen Zabbix-Server weiterleiten [1].
Um die Ausfallssicherheit gewährleisten zu können kann ähnlich wie bei
Nagios Heartbeat und DRBD (für die Konfigurations-Dateien) eingesetzt
werden. Dadurch dass Zabbix eine Datenbankanbindung benötigt, in dem es
den Status der einzelnen Hosts speichert, muss diese ebenfalls in irgendeiner
Art und Weise redundant ausgelegt werden. Wie genau das letztendlich implementiert werden kann hängt von der konkreten Datenbank ab, die zum
6
Community-Unterstützung, Weiterentwicklung und Erweiterbarkeit
15
Einsatz kommt.
Zusammenfassend kann man sagen, dass auch Zabbix für größere Umgebungen geeignet ist, man aber vor allem bei einem Heartbeat Setup wieder
zusätzliche Arbeit investieren muss.
5.3
Fazit
Performancemäßig sind beide Lösungen ziemlich gleich zu bewerten. Durch
die größere Verbreitung von Nagios gibt es zwar mehr Nagios-Installationen
bei größeren Firmen und dadurch auch mehr Lösungen und Anleitungen zu
bekannten Problemen, allerdings ist die Konfiguration eines Zabbix-Proxies
komfortabler als die Konfiguration einer verteilten Nagios-Umgebung. Für die
Hochverfügbarkeit werden in der Regel bei beiden Lösungen ähnliche Techniken verwendet. Bei Zabbix muss man sich zusätzlich um die Redundanz
der Datenbank kümmern.
6
Community-Unterstützung, Weiterentwicklung und Erweiterbarkeit
Gerade die Community-Unterstützung ist bei Open-Source-Projekten sehr
wichtig, da man dadurch kostenlose Hilfestellungen bei Problemen bekommt,
bzw. im Internet (in Mailinglisten, Foren, IRC-Channel-Logs . . . ) auf bereits
bekannte Probleme von anderen Leuten Lösungen findet. Darüber hinaus
bedeutet eine größere Community im Falle von Netzwerküberwachungssoftware auch mehr vorgefertigte Plugins, die unterschiedlichste Services und
Netzwerkgeräte auf Funktionalität prüfen.
Durch eine höhere Entwicklungsgeschwindigkeit werden die von der Community gemeldeten Fehler schneller ausgebessert und darüber hinaus schneller neue Features integriert, die die Arbeit des Netzwerkadministrators (hoffentlich) erleichtern.
Durch eine gute Erweiterbarkeit ist es möglich das Überwachungssystem
in andere Systeme gut zu integrieren und das System seinen individuellen
Bedürfnissen anzupassen.
6.1
Nagios
Nagios ist das bekannteste OpenSource Überwachungssystem und hat eine
dementsprechend große Community. Es gibt eine eigene Konferenz über die
Software, bei der Experten ihre Erfahrungen austauschen können. Der IRCChannel wird ungefähr von 120 Usern besucht.
6
Community-Unterstützung, Weiterentwicklung und Erweiterbarkeit
16
Nagios profiliert vor allem durch seine gute Erweiterungsmöglichkeiten.
Die Software selbst bietet zwar “nur” das sehr orthogonale Plugin-Interface,
mit den man durch das Aufrufen von beliebigen Programmen/Scripten Statusinformationen über Hosts integrieren kann, ein “Command-File”-Interface,
über das man von externer Quelle aus Status-Informationen von Hosts in Nagios integrieren kann (z.B.: SNMP-Traps), sowie ein Event-Broker-Interface,
an das Statusmeldungen weitergeleitet werden können. Nichtsdestotrotz gibt
es zahlreiche Plugins für das Plugin-Interface, die diverse Netzwerk-Geräte
prüfen, sowie zahlreiche Addons, die das Interface erweitern [7]. Darunter fallen unter Anderem die NDO-Utils, die die Status-Meldungen von Nagios über
das Event-Broker-Interface in eine Datenbank schreiben können von der aus
viele andere Addons, wie etwa NagVis, auf Status-Informationen zugreifen
können, um diese in diesem Fall auf einem Netzwerkplan zu visualisieren.
Die Entwicklungsgeschwindigkeit von Nagios ist dadurch, dass nur ein einziger US-Entwickler daran arbeitet und dieser nicht besonders gut mit der
Community zusammenarbeitet und in der Vergangenheit nicht viele Patches
integriert hat, eher träge. Dies ist auch ein Grund dafür, dass das Projekt
geforkt wurde. Der sehr vielversprechende Fork Icinga, der von nahmhaften Personen aus der Community weiterentwickelt wird und abwärtskompatibel zu Nagios ist, liegt mittlerweile in einer 1.0er Version vor [11]. Ziel
des Projektes ist es das etwas betagte Webinterface zu modernisieren, den
Datenbank-Support zu integrieren, sowie diverse zusätzliche Addons zu integrieren. Dabei soll die Grundarchitektur und damit auch die Abwärtskompatibilität erhalten bleiben.
6.2
Zabbix
Obwohl Zabbix eine etwas kleinere Community hat als Nagios findet man
durchaus genügend Hilfestellungen zu Problemen, Erfahrungswerte und dergleichen. Es exisiteren für Zabbix eher weniger Addons und Plugins als für
Nagios, was teilweise auch daran liegt, dass viele Dinge bereits in der Software
integriert sind. Zwar existiert ein ähnlich orthogonales Plugin-Interface wie
für Nagios, allerdings werden bei Zabbix eher die Standard-SNMP-Plugins
und der Zabbix-Agent für Abfragen verwendet.
Die Entwicklungsgeschwindigkeit ist im Vergleich zu Nagios schneller und
die Beziehung zwischen Community und Entwickler “gesunder”.
6.3
Fazit
Legt man viel Wert auf Erweiterbarkeit, so sollte man sich eher für Nagios
entscheiden. Durch die Vielzahl an Addons existieren für sehr viele Anfor-
7
Sonstige Unterschiede
17
derungen bereits Lösungen. Muss man dennoch einmal selbst Hand anlegen
und selbst ein Plugin oder Addon schreiben, so findet man durch die bereits
existierenden Addons und Plugins genug Beispiel-Code und Leute, die einem
ggf. bei Fragen helfen können.
Ist man mit dem Standard-Zabbix-Umfang allerdings zufrieden, so sollte
man sich für Zabbix entscheiden. Bei vielen Addons kann es unter Umständen
nämlich beim Upgrade zu Problem kommen. Verhält sich eine neue Nagios
Version anders als ein Vorgänger so kann es sein dass ein Addon durch diese
Änderungen nicht mehr funktioniert (es “breaked”). Man kann sich das so
vorstellen als würde man eine Brücke zwischen 2 Versionen bauen. Macht
man ein Upgrade einer Version, so droht diese Brücke zusammenzubrechen.
7
Sonstige Unterschiede
Abbildung 6: Das Dashboard in Zabbix kann personalisierte Informationen über
Server anzeigen.
Legt man als Netzwerk-Verantwortlicher vor allem Wert auf das Einrichten von unterschiedlichen User-Accounts, die allesamt für einen Teilbereich des Netzwerks zuständig sind und eine dementsprechend personalisierte
Oberfläche haben wollen, sollte man sich für Zabbix entscheiden. Zabbix bietet für jeden User ein personalisiertes ”Dashboard“an, auf dem man sich
Informationen, Maps und Graphen jener Hosts anzeigen lassen kann, für die
man auch zuständig ist (siehe Abb. 6). Damit sieht man den Status seines Teilbereiches vom Netzwerk stets auf einen Blick. User-Accounts werden
standardmäßig in der Datenbank gespeichert, in der auch die MonitoringDaten abgelegt werden. Man kann allerdings auch eine Anmeldung über LDAP aktivieren. Dabei ist nur zu beachten, dass der Verzeichnisdienst-Server
Literatur
18
möglichst redundant ausgelegt werden sollte, da man sich unter Umständen
beim Ausfall des LDAP-Servers nicht mehr am Überwachungsserver anmelden kann.
Nagios bietet kein personalisierten Features wie etwa Dashboards für unterschiedliche User an. Die Authentifizierung erfolgt in der Regel über HTTPBasic- bzw. HTTP-Digest-Authentication, die nur über den Web-Server gehandelt wird. Daher ist es auch möglich eine LDAP-basierende Anmeldung,
oder auch eine “gemischte” Anmeldung (File-basierend + LDAP) zu implementieren.
Eine weitere unter Umständen nützliche Funktion von Zabbix ist NetzwerkDiscovery, die es ermöglicht durch periodische PINGs in einem Sub-Netz neue
Hosts zu finden.
8
Fazit
Zabbix ist eine gut integrierte All-In-One Lösung, die sich auch für größere
Netzwerke eignet, vorausgesetzt man es schafft in der tabellarischen Ansicht
über die Hosts die Übersicht zu behalten. Der Lernaufwand ist im Vergleich
zu Nagios geringer, da der Notification-Prozess nicht allzu kompliziert ist,
und man vor allem ein benutzerfreundliches, visuelles Webinterface hat, in
dem man sofort alle möglichen Konfigurationsparameter sieht. Hat man allerdings umfassende Unix-Kenntnisse und möchte man sich das System nach
seinen eigenen Vorstellungen anpassen, so wird man bei Zabbix wohl oder
Übel mehr Aufwand investieren müssen als bei Nagios.
Nagios kann vor allem gegenüber Zabbix mit Erweiterbarkeit punkten.
Hat man gute Unix-Kenntnisse und kann gut mit einem Editor und einer
Scriptsprache umgehen, so kann man mit zusätzlichen Lernaufwand auch
größere Konfigurationsänderungen schnell durchfürhen. Durch die autogenerierte Status-Map hat man in kleineren Netzen sofort eine gute Übersicht
über das Netzwerk, aber auch in größeren Netzen kann sie als Kontrolle ”fuer die richtige Konfiguration von Dependencies dienen. Man sollte sich aber
natürlich stets vor Augen halten, dass eine Vielzahl von installierten Addons auch einen großeren Upgrade-Aufwand bedeuten kann. Längerfristig wird
sich diese Situation mit dem Icinga-Fork wohl bessern.
Literatur
[1] 14. Use of Proxies [Zabbix]. http://bit.ly/8dCjrA, Abruf: Sonntag,
20. Dezember 2009
Literatur
19
[2] Distributed Nagios. http://bit.ly/7C4mCy, Abruf: Sonntag, 20. Dezember 2009
[3] DRBD:What is DRBD. http://www.drbd.org/, Abruf: Sonntag, 20.
Dezember 2009
[4] HomePage: Linux HA. http://www.linux-ha.org/, Abruf: Sonntag,
20. Dezember 2009
[5] Homepage of Zabbix. http://zabbix.com, Abruf: Sonntag, 20. Dezember 2009
[6] Nagios. http://nagios.org/, Abruf: Sonntag, 20. Dezember 2009
[7] Nagios Exchange. http://exchange.nagios.org, Abruf: Sonntag, 20.
Dezember 2009
[8] NConf - Enterprise Nagios configurator. http://www.nconf.org, Abruf: Sonntag, 20. Dezember 2009
[9] NETWAYS GmbH - check cache. http://bit.ly/4yEn4h, Abruf: Sonntag, 20. Dezember 2009
[10] Netways Nagios HA Presentation.
Sonntag, 20. Dezember 2009
http://bit.ly/8a6Cr1, Abruf:
[11] Open Source Monitoring - Icinga.
Sonntag, 20. Dezember 2009
http://www.icinga.org, Abruf:
[12] Project News — NagVis.org. http://nagvis.org, Abruf: Sonntag, 20.
Dezember 2009
[13] SNMP Traps - NETWAYS GmbH.
Sonntag, 20. Dezember 2009
http://bit.ly/7HbJ1D, Abruf:
[14] start [pnp4nagios.org]. http://www.pnp4nagios.org/, Abruf: Sonntag,
20. Dezember 2009
[15] Using Zabbix to capture SNMP-Traps [Zabbix]. http://bit.ly/4AWvU6,
Abruf: Sonntag, 20. Dezember 2009

Documentos relacionados