Kostenloses Monitoring-Tool

Komplette Server- und Client-Überwachung mit Zabbix 1.8.1

30.03.2010 von Jürgen Donauer
Die Anzahl der zu überwachenden Dienste und Anwendungen auf unternehmenskritischen Rechnern steigt stetig. Administratoren können unmöglich alles im Auge behalten. Hier helfen sogenannte Monitoring-Lösungen, wie etwa das Open-Source-Tool Zabbix.

Ein Vorteil von Open-Source-Lösungen wie Zabbix ist zweifelsohne, dass sich eigene Produkte oder Eigenentwicklungen in die Überwachung einbinden lassen. Das Programm ist komplex; der folgende Beitrag widmet sich eingehend der Installation, Konfiguration und der grundsätzlichen Arbeitsweise von Zabbix 1.8.x.

Zabbix unterstützt serverseitig eine Vielzahl an Betriebssystemen wie zum Beispiel Linux, Solaris, HP-UX, AIX, FreeBSD, Network Security Toolkit oder OpenBSD. Die Entwickler weisen darauf hin, dass es auf anderen Unix-Like-Plattformen ebenfalls funktionieren kann. Dies ist jedoch weder getestet, noch wird es offiziell unterstützt. Windows können Sie zwar nicht als Zabbix-Server einsetzen, doch das Microsoft-Betriebssystem lässt sich von Zabbix überwachen. Hierfür gibt es extra entwickelte Agenten. Die Software unterstützt derzeit offiziell NT 4.0, Windows 2000/XP/2003 und Windows Vista. TecChannel wird selbstverständlich auch prüfen, ob sich der Agent unter Windows 7 einsetzen lässt. Sofern von Microsoft erhältlich, gilt die Unterstützung für 32- und 64-Bit-Varianten. Als Datenbank-Backend können Sie in Version 1.8.1 MySQL, PostgreSQL, Oracle oder SQLite einsetzen.

Zabbix besteht prinzipiell aus drei Komponenten: Agenten, Server und Frontend. Die Agenten sammeln Daten und speichern diese in einer Datenebank auf dem Zabbix-Server. Via Webfrontend können berechtigte Anwender die Daten abrufen und verwerten.

Verteilte Last: Es muss nicht alles auf einem Server laufen.

Die Entwickler raten zu bestimmten Mindestanforderungen. Hardwareseitig sollten Sie wenigstens 128 MByte RAM und 256 MByte freien Festplattenplatz haben. Je mehr Arbeitsspeicher zur Verfügung steht, desto schneller arbeitet die Datenbank – sprich Zabbix. In der Dokumentation stellen die Entwickler Beispiele für Hardware-Setups zur Verfügung. Für bis zu 20 überwachende Rechner reicht demnach ein Pentium II 350 MHz mit 256 MByte Arbeitsspeicher.

Zabbix 1.8.1
Es muss nicht alles auf einem Server laufen.
Zabbix 1.8.1
Mittels Karmic-Repository könnten Sie Zabbix 1.8.1 nicht installieren.Mittels Karmic-Repository könnten Sie Zabbix 1.8.1 nicht installieren.
Zabbix 1.8.1
Nach der Konfiguration kann der Übersetzungs-Prozess beginnen.
Zabbix 1.8.1
Nach der Installation finden Sie die Binär-Dateien im Verzeichnis /usr/local/sbin/.
Zabbix 1.8.1
Nach dem Ausführen der cat-Befehle sieht die Zabbix-Datenbank gut gefüllt aus.
Zabbix 1.8.1
Die Konfiguration von Zabbix können Sie bequem via Browser vornehmen
Zabbix 1.8.1
Zabbix ist nicht mit einigen Einstellungen gar nicht glücklich.
Zabbix 1.8.1
Nach dem Editieren der Datei php.ini sind alle Anforderungen zufriedenstellend.
Zabbix 1.8.1
Nach dem ersten Einloggen sollten Sie gleich das Administrator-Passwort ändern.
Zabbix 1.8.1
Die Einträge in die Datei /etc/services sind nicht zwingend notwendig, allerdings eine Empfehlung.
Zabbix 1.8.1
Laut ps sind die diversen Zabbix-Daemons gestartet.
Zabbix 1.8.1
Zabbix unterstützt auch Windows 7.

Um Zabbix 1.8.1 benutzen zu können, benötigen Sie, was die Software betrifft, mindestens Apache 1.3.12, PHP 5.0 und das PHP GD-2.0-Modul. Je nach gewünschter Datenbank kommen dann MySQL 3.22, PostgreSQL 7.0.2 oder SQLite 3.3.5 sowie das entsprechende PHP-Modul hinzu. Hinter der Oracle-Datenbank steht leider keine Empfehlung, lediglich, dass Sie mindestens php-oci8 (Sqlora8) benötigen. Weitere sinnvolle Komponenten sind OpenSSL und NET-SNMP oder UCD-SNMP; diese sind jedoch optional. Bei den meisten Distributionen finden Sie alle für Zabbix benötigten Programme normalerweise auf den Installationsmedien. Sollte dies nicht der Fall sein, lassen sich die Pakete in der Regel bequem online nachinstallieren.

Installation

Die Monitoring-Software hat es mittlerweile in die Standard-Repositories einiger namhafter Distributionen geschafft. Dazu gehören Debian, Fedora Core, Gentoo, Ubuntu und FreeBSD. Hier finden Sie in der Regel jedoch nicht die neueste Version. Für Ubuntu 9.10 existieren zum Beispiel vorgefertigte Pakete von Zabbix 1.6.4. Für das derzeit in der Entwicklung befindliche Lucid Lynx (10.04) stehen bereits die 1.8.1-Pakete zur Verfügung. In unserem Testszenario kommt Ubuntu-Server 9.10 zum Einsatz, und wir wollen mit der neuesten Version arbeiten. Also müssen wir selbst Hand anlegen. In der Regel empfiehlt es sich allerdings, mit den von den Herstellern bereitgestellten Paketen zu arbeiten.

Nicht die neueste Version: Mittels Karmic-Repository könnten Sie Zabbix 1.8.1 nicht installieren.

Als Datenbank setzen wir auf MySQL. Sie benötigen für das Übersetzen einen Compiler sowie die Entwicklerpakete für MySQL, OpenSSL und NET-SNMP. Die Namen können je nach Distribution unterschiedlich sein. Normalerweise weisen Fehlermeldungen auf die noch benötigten Pakete hin. Nach dem Entpacken der Sourcen, erfolgt das Kompilieren via configure und make install. Voraussetzung ist natürlich, dass alle Abhängigkeiten erfüllt sind. Unter Ubuntu 9.10 müssen daher die Pakete gcc, libmysql++-dev, libsnmp-dev und deren Abhängigkeiten nachinstalliert werden. Bei Verwendung von MySQL und NET-SNMP sieht der Kompilierbefehl zum Beispiel so aus (gcc, libmysql++-dev, libsnmp-dev):

./configure --with-mysql --with-net-snmp --enable-server --enable-agent

Kompilierbereit: Nach der Konfiguration kann der Übersetzungsprozess beginnen.

Wenn Sie unterschiedliche Distributionen oder Versionen von Linux einsetzen, müssten Sie die Agenten theoretisch für jede Plattform neu kompilieren. Nur so verhindern Sie Konflikte mit den unterschiedlichen Bibliotheken. Allerdings gibt Ihnen Zabbix die Möglichkeit einer statischen Kompilation. Somit packt der Compiler alle benutzten Bibliotheken in die erzeugte Binärdatei. Das bedeutet, dass Sie den Agent nur einmal übersetzen müssen. Danach können Sie die Binärdatei auf den zu überwachenden Systemen in der Regel problemfrei einsetzen. Dies realisieren Sie mit der Option --enable-static.

./configure --with-mysql --with-net-snmp --enable-server --enable-agent --enable-static

So bereiten Sie sowohl die Daemons als auch die Überwachungsagenten vor. Sie können auch nur den Agenten kompilieren. Das realisieren Sie mit dem Befehl

./configure --enable-agent

Wie schon erwähnt, können Sie mit --enable-static eine statische Binärdatei erzeugen. So könnten Sie den Agenten auf mehreren Systemen einsetzen. Der Befehl visualisiert alle Optionen. So finden Sie zum Beispiel heraus, dass in Version 1.8.1 auch Jabber für Messaging unterstützt wird.

./configure --help

Fertig: Nach der Installation finden Sie die Binärdateien im Verzeichnis /usr/local/sbin/.

Sind alle Abhängigkeiten erfüllt, fordert die Software Sie auf, den Befehl make install zu starten.

Danach finden Sie die übersetzten Binärdateien im Verzeichnis /usr/local/sbin/ und /usr/local/bin (zabbix_sender, zabbix_get) wieder.

Apache-Webserver

Wenn Sie das Zabbix-Frontend nutzen wollen, muss Apache laufen. Des Weiteren benötigt dieser ein aktiviertes PHP-Modul. Ob Letzteres der Fall ist, können Sie normalerweise im Konfigurationsverzeichnis des Webservers nachsehen. Bei den meisten Distributionen befindet sich dies unter /etc/apache oder /etc/apache2. Falls er noch nicht läuft, starten Sie im Test-Szenario den Webserver als Benutzer root mit /etc/init.d/apache2 start.

MySQL-Datenbank-Server

Der nächste Schritt ist das Erstellen der Datenbank. Falls der MySQL-Server nicht gestartet ist, führen Sie den Befehl /etc/init.d/mysql start aus.

Erfolg! Nach dem Ausführen der cat-Befehle sieht die Zabbix-Datenbank gut gefüllt aus.

Danach benötigen Sie eine Datenbank namens Zabbix. Loggen Sie sich in die Datenbank ein und erstellen diese. In der Beispielumgebung erfolgt das so:

mysql –uroot

create database zabbix;

quit;

Ein Einloggen in Datenbankserver, auf dem ein Passwort gesetzt ist, funktioniert so:

mysql -uroot –p(Passwort)

Die Tabellen und Initialdaten der Datenbank sind einfach zu erstellen. Die Entwickler haben das meiste gut vorbereitet, und Sie müssen dies lediglich in die Datenbank einspielen. In den entpackten Sourcen finden Sie das Verzeichnisse create. Mit dem Befehl cat sind diese schnell in die zabbix-Datenbank eingespielt.:

cat ./create/schema/mysql.sql | mysql -uroot -Dzabbix

cat ./create/data/data.sql | mysql –uroot -Dzabbix

cat ./create/data/images_mysql.sql | mysql –uroot –Dzabbix

Zabbix-Frontend

Das Zabbix-Frontend finden Sie ebenfalls in den heruntergeladenen Quellen. Wechseln Sie mit cd ./frontends dorthin und kopieren oder verschieben Sie das Verzeichnis phpan eine für den Webserver erreichbare Stelle. Vorteilhaft ist, wenn Sie diesem Verzeichnis danach einen sprechenden Namen erteilen. zabbix ist hier nahe liegend.

Ist das geschafft, können Sie den Rest via Browser konfigurieren. Erreichbar ist die WebGUI nun mittels http://<Name oder IP-Adresse des Zabbix-Servers>/zabbix.

Bei der Überprüfung der Mindestanforderungen zeigt das Frontend Fehler beiPHP memory limit, PHP post max size, PHP max execution time und PHP MB string overload an. Somit müssen wir im Falle unseres Testaufbaus die Datei /etc/php5/apache2/php.ini bearbeiten, entsprechend nachbessern und anschließend Apache neu starten.

Bildergalerie:
Zabbix 1.8.1 - Frontend
Die Konfiguration von Zabbix können Sie bequem via Browser vornehmen.
Zabbix 1.8.1 - Frontend
Bitte nachbessern: Zabbix ist nicht mit einigen Einstellungen gar nicht glücklich.
Zabbix 1.8.1 - Frontend
Nach dem Editieren der Datei php.ini sind alle Anforderungen zufriedenstellend.
Zabbix 1.8.1 - Frontend
Nach dem ersten Einloggen sollten Sie gleich das Administrator-Passwort ändern.

Im nächsten Schritt geben Sie dann die Datenbankinformationen ein. Wie Sie sehen, muss der Datenbankserver nicht unbedingt auf dem gleichen Rechner laufen. Es ist durchaus möglich, die Daten von einem anderen Computer im Netzwerk auszulesen. Folgen Sie dem Wizard nun weiter, ist die Installation binnen weniger Sekunden erfolgreich abgeschlossen. Danach können Sie sich auch schon in das Zabbix-Frontend mit dem Benutzernamen Admin und dem Passwort zabbix einloggen. Das Passwort sollten Sie allerdings sofort ändern. In derselben Maske könnten Sie auf Wunsch die Sprache auch gleich auf Deutsch umstellen.

Vorbereitende Schritte zum Starten der Zabbix-Daemons

Standardmäßig holt sich Zabbix die Konfigurationsinformationen aus dem Verzeichnis /etc/zabbix. Dieses existiert allerdings noch nicht; Sie sollten es erstellen. Des Weiteren brauchen Sie in dem Verzeichnis die entsprechenden Konfigurationsdateien. Beispieldateien finden Sie in den Zabbix-Quellen ./misc/conf. Hier sollten fünf Dateien liegen. Am einfachsten ist es, diese nach /etc/zabbix zu kopieren und entsprechend anzupassen.

cp <zabbix-sourcen>/misc/conf/* /etc/zabbix

Die Binärdatei zabbix_server benötigen Sie logischerweise auf dem Zabbix-Server. Auf den Clients starten Sie den Daemon mit der Datei zabbix_agentd. Dem Handbuch ist zu entnehmen, dass ein Einsatz des Daemons zabbix_agentd der Datei zabbix_agent vorzuziehen ist.

Letztere könnten Sie einsetzen, falls Sie den Agenten nicht als Dienst starten möchten. Sinnvoll ist es, auch den Zabbix-Server selbst zu überwachen. Es schadet nie, das SSH-Binary, die Datei /etc/passwd oder den Festplattenplatz im Auge zu behalten.

Konfiguration des Server-Daemon

Die meisten der folgenden Optionen in der Datei /etc/zabbix_server.conf starten mit einem Standardwert. Diesen nimmt der Zabbix-Server-Daemon, falls nicht manuell überschrieben. Alle Parameter finden Sie in der Dokumentation. Hier die wichtigsten Parameter kurz erklärt:

Konfiguration des Server-Daemon

Parameter

Bedeutung

StartPollers=5

Gibt an, wie viele Server-Daemons Zabbix starten soll. Der Wert muss zwischen 0 und 255 liegen. Mehr als 30 sind nicht empfohlen.

HousekeepingFrequency=1

Gibt an, nach wie vielen Stunden Zabbix Aufräumarbeiten bei unnötigen oder veralteten Daten vornimmt. Der Wert muss zwischen 1 und 24 liegen. Bei der Benutzung von PostgreSQl empfehlen die Entwickler den Wert 24, da der Prozess VACUUM ausführt.

Timeout=3

Stellt den Wert, wie lange der Server-Daemon maximal auf eine Antwort des Agenten wartet, in Sekunden dar. Er muss zwischen 1 und 30 liegen.

LogFile=/var/log/zabbix_server.log

Pfad und Dateiname, wohin die Log-Datei geschrieben werden soll. Benutzt das syslog, wenn nicht explizit angegeben.

DBName=zabbix

Name der Datenbank

DBUser=root

Datenbankbenutzer

DBPassword=

Datenbankpasswort

ListenPort=10051

Port, auf dem der Trapper horcht

zabbix_sender und zabbix_get

Den zabbix_sender brauchen Sie nur in bestimmten Situationen. Zum Beispiel dann, wenn die von Zabbix benutzten Ports durch eine Firewall-Einschränkung nur in der Richtung Client zu Server offen sind. Somit kann der Zabbix-Server keine Informationen von den zu überwachenden Rechnern abholen. Mit zabbix_sender haben Sie jedoch die Möglichkeit, Informationen vom Client an den Server zu schicken.

Die genaue Einrichtung dieses Werkzeugs finden Sie ausführlich in der Dokumentation beschrieben. Dieses Tool setzen Sie normalerweise in selbst geschriebenen Scripten ein. Welche Parameter Sie in Zusammenhang mit dem Tool benutzen können, finden Sie in der Dokumentation oder durch den Aufruf ./zabbix_sender –h.

Äquivalent hierzu funktionert zabbix_get, allerdings in die andere Richtung. Damit können Sie einen Agenten ansprechen und somit Informationen von einem Client beziehen. Das Tool wird in der Regel für die Fehlersuche bei einem Zabbix-Agent genommen.

Konfiguration des Agenten

Diese Datei ist äquivalent zu zabbix_server.conf (siehe oben) für die Agentenseite der Monitoring-Software zuständig. Auch hier die wichtigen Parameter in einer Kurzübersicht.

Konfiguration des Trapper-Daemon

Parameter

Bedeutung

Server=127.0.0.1

Hier geben Sie die IP-Adresse des Zabbix-Servers an. Läuft der Agent auf dem Server selbst, geben Sie die Localhost-Adresse ein. Denn nur von der hier eingetragenen IP-Adresse darf auf die vom Zabbix-Agenten geöffneten Ports zugegriffen werden.

ListenPort=10050

Der Port, auf den der Agent nach den Anfragen des Servers horchen soll.

UserParameter=

Mit diesem Parameter können Sie eigene Zabbix-Parameter definieren. Dies bedarf einer umfangreicheren Erklärung und ist deshalb an späterer Stelle genau erläutert. Vielleicht benötigen Sie diese gar nicht, da die Hausmittel von Zabbix sehr umfangreich sind.

Den Agenten müssen Sie nicht zwingend als Daemon starten. Für diesen Fall ist die Datei zabbix_agent.conf zuständig. Sollten Sie diese Variante nutzen wollen, gibt ein Blick in die Dokumentation weiteren Aufschluss.

Letzte Schritte und Starten des Zabbix-Daemons

Der Entwickler empfiehlt, auf den zu überwachenden Rechnern die Datei /etc/services zu modifizieren.

Lokale Dienste: Die Einträge in die Datei /etc/services sind nicht zwingend notwendig, werden allerdings empfohlen.

Sie sollten die Zeilen zabbix_agent 10050/tcp und zabbix_trap 10051/tcp hinzufügen. Haben Sie in den entsprechenden Konfigurationsdateien andere Ports angegeben, so sind diese hier entsprechend abzugleichen. Ebenso müssen Sie einen Benutzer zabbix schaffen. Nur diesem ist es erlaubt, die Zabbix-Daemons zu starten. Dies geschieht mit useradd –m zabbix.

Sind alle Vorbereitungen getroffen, können Sie die Zabbix-Daemons als Benutzer zabbix (su - zabbix) starten. Die ausführbaren Dateien können Sie entweder mittels start/stop-Script aufrufen, oder Sie rufen die Binärdatei direkt auf.

Erfolg! Laut ps sind die diversen Zabbix-Daemons gestartet.

Beispiele für start/stop-Scripte haben die Createure im Quellen-Verzeichnis von Zabbix unter ./misc/init.d hinterlegt. Es gibt Beispiel-Scripte für Debian, Fedora, FreeBSD, Gentoo, Red Hat, SUSE, AIX und Tru64. Eventuell müssen Sie die Dateien noch an Ihre Bedürfnisse anpassen. Sie brauchen diese zum Beispiel, wenn Sie bei einem Neustart die Zabbix-Daemons automatisch starten wollen. Vorerst sollte ein direkter Aufruf genügen.

/user/local/sbin/zabbix_server

/user/local/sbin/zabbix_agentd

Ob ein Start der Zabbix-Daemons erfolgreich war, können Sie zum Beispiel so überprüfen:

ps -aef | grep zabbix

Wahlweise können Sie die Logdateien konsultieren. Wo Sie diese finden, ist in der jeweiligen Konfigurationsdatei unter /etc/zabbix/ hinterlegt.

Zabbix-Agent unter Windows einrichten

Die Installation des Windows-Agenten ist laut Dokumentation relativ einfach und erfordert im Prinzip nur drei Schritte. Zunächst einmal müssen Sie eine Konfigurationsdatei einrichten. Zum Beispiel kann dies c:\zabbix_agentd.conf sein. Die Syntax ist dieselbe wie unter Linux/Unix. Deswegen können Sie eine mitgelieferte Beispieldatei einfach an die gewünschte Stelle kopieren und anpassen.

7-tauglich: Zabbix unterstützt auch Windows 7.

Danach installieren Sie den Zabbix-Agenten als Dienst. Dieser startet nach einer Installation automatisch. Hierzu ist die Eingabe von zabbix_agentd.exe --install notwendig. Sie finden die Datei im ./bin-Verzeichnis der Quellen. Unter Windows 7 müssen Sie hierfür die Eingabeaufforderung mittels Rechtsklick als Administrator starten. Haben Sie die Konfigurationsdatei nicht nach c:\gelegt, geben Sie deren Aufenthaltsort mit --config an, zum Beispiel zabbix_agentd.exe --config <ihre Konfigurationsdatei> install. Nun können Sie den Zabbix-Agenten starten: zabbix_agentd.exe --start, wahlweise auch über die Dienste-GUI ihres Systems.

In unserem Test funktionierten die Installation und das manuelle Starten unter Windows 7 64-Bit einwandfrei. Sollte sich der Dienst nicht starten lassen oder nach einem Neustart des Systems seinen Dienst verweigern, könnte das an einer fehlerhaften Konfigurationsdatei liegen. In der von Zabbix gelieferten Datei befinden sich Unix-typische Pfadangaben. Diese müssen Sie für Windows anpassen. So wird zum Beispiel aus /etc/zabbix/zabbix_agentd.conf ein c:\zabbix_agentd.conf. Denken Sie daran, die entsprechenden Ports in der Firewall freizugeben. Sonst kann der Server nicht mit dem Agenten kommunizieren. (mje)