Open Source Server Monitoring

Server- und Client-Überwachung mit Zabbix 1.4.2

07.11.2007 von Jürgen Donauer
Server Monitoring: Die zu überwachenden Dienste und Anwendungen auf Servern von Unternehmen steigen stetig. Mit professionelle Überwachungs- und Monitoring-Tools behalten Administratoren den Überblick über ihre Server. TecChannel stellt Ihnen Zabbix 1.4.2, das beliebig erweiterbare Monitoring-Programm unter Open-Source-Lizenz, vor.

Professionelle Überwachungs-Tools kosten oft viel Geld. Eine Garantie, dass wirklich alle wichtigen Dienste überwacht sind, gibt es nicht. Das Problem mit Closed-Source-Prgrammen ist oft, dass diese nicht unbedingt erweiterbar sind. Somit gestaltet es sich schwierig, eigene Produkte in die Überwachung einzubinden.

Mit Zabbix steht ein beliebig erweiterbares Monitoring-Programm unter der Open-Source-Lizenz zur Verfügung. Es unterstützt serverseitig eine Vielzahl von Betriebssystemen wie Linux, Solaris, HP-UX, AIX, FreeBSD oder OpenBSD. Der Entwickler weist darauf hin, dass es auf anderen Unix-Like-Plattformen ebenfalls funktionieren kann. Dies ist jedoch nicht getestet. Windows ist als Zabbix-Server ausgeschlossen. Dafür gibt es aber zumindest einen Überwachungs-Agenten. Die Software unterstützt NT 4.0, Windows 2000/XP/2003 und Windows Vista. Letzteres in der 32- und 64-Bit-Variante. Als Datenbank-Backend können Sie in Version 1.4.2 MySQL, PostgreSQL, Oracle oder SQLite einsetzen.

Zabbix ist sehr komplex. TecChannel möchte Ihnen die Installation, Konfiguration und grundsätzliche Arbeitsweise von Zabbix 1.4.x vorstellen. In einem zweiten Teil gehen wir detailliert auf das Frontend von Zabbix ein. Dieser Artikel erscheint am 16.11. Hier geht es zum Beitrag über die Version 1.0.

Aufbau von Zabbix

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 jederzeit abrufen und grafisch darstellen.

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

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

Um Zabbix benutzen zu können, benötigen Sie zusätzlich mindestens Apache 1.3.12, PHP 4.3 und das PHP 4.3 GD-Modul. Je nach gewünschter Datenbank kommen dann MySQL 3.22, PostgreSQL 7.0.2, Oracle 9.2.0.4 oder SQLite 3.3.5 sowie das entsprechende PHP-Modul dazu. 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 Installations-Medien. Sollte dies nicht der Fall sein, lassen sich die Pakete in der Regel online nachinstallieren.

Dieser Beitrag beschäftigt sich zunächst mit der Installation von Zabbix. Der zweite Teil wird zeigen, wie Sie die Monitoring-Software im täglichen Einsatz nutzen können.

Installation

Die Monitoring-Software hat es mittlerweile in die Standard-Repositories einiger namhafter Distributionen geschafft. Dazu gehören Debian, Fedora Core, Gentoo, Ubuntu, FreeBSD und das Network Security Toolkit. Hier finden Sie in der Regel jedoch nicht die neueste Version. Für Ubuntu 6.10 existieren vorgefertigte Pakete von Zabbix 1.4.1. Wollen Sie allerdings die neueste Version einsetzen, müssen Sie selbst Hand anlegen.

Nicht die neueste Version: Aus dem Kanotix-Repository könnten Sie Zabbix 1.1.4 installieren.

Als Testplattform dient MySQL auf dem Debian-Ableger Kanotix 2007 RC6. Sie benötigen für eine Kompilation die Entwickler-Pakete für MySQL, OpenSSL und NET-SNMP. Die Namen können je nach Distribution unterschiedlich sein. Normalerweise weisen eventuelle Fehlermeldungen auf die noch benötigten Pakete hin. Nach dem Entpacken der Sourcen, erfolgt das Kompilieren mit dem üblichen Dreisprung configure, make und make install. Voraussetzung ist natürlich, dass alle Abhängigkeiten erfüllt sind. Für eine Verwendung mit MySQL und NET-SNMP sieht der Kompilierbefehl zum Beispiel so aus:

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

Statisches Binary

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är-Datei. Somit müssen Sie den Agent nur einmal übersetzen. Danach können Sie das Binary 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-static --enable-server --enable-agent

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

./configure --enable-agent

Wie schon erwähnt können Sie mit --enable-static ein statisches Binary erzeugen. So könnten Sie den Agenten auf mehreren Systemen einsetzen. Alle Optionen gibt der Befehl --help aus. So finden Sie zum Beispiel raus, dass in Version 1.4.2 auch Jabber für Messaging unterstützt wird.

./configure --help

Kompilierbereit: Nach der Konfiguration kann der Übersetzungs-Prozess beginnen.

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

Danach finden Sie die übersetzten Binaries im Verzeichnis /usr/local/sbin/ wieder.

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

Apache-Webserver

Wollen Sie das Zabbix-Frontend nutzen, muss Apache laufen. Des Weiteren benötigt dieser ein aktiviertes PHP-Modul. Ob letzteres der Fall ist, können Sie normalerweise im Konfigurations-Verzeichnis des Webservers nachsehen. Bei den meisten Distributionen befindet sich dies unter /etc/apache oder /etc/apache2. In der Test-Konfiguration starten Sie den Webserver als Benutzer root mit /etc/init.d/apache2 start.

MySQL-Datenbank-Server

Der nächste Schritt ist das Erstellen der Datenbank. Dazu ist der MySQL-Daemon zu starten:

/etc/init.d/mysql start

Danach benötigen Sie eine Datenbank namens zabbix. Loggen Sie sich in die Datenbank ein und erstellen diese. In der Beispiel-Umgebung erfolgt das so:

mysql –uroot
create database zabbix;
quit;

Ist auf dem Datenbank-Server ein Passwort gesetzt (sehr zu empfehlen), loggen Sie sich wie folgt ein:

mysql -uroot –p(Passwort)

Die Tabellen und Initialdaten der Datenbank sind einfach zu erstellen. Die Entwickler haben das meiste wie vorbereitet und Sie müssen Struktur und Daten lediglich in die Datenbank einspielen. In den entpackten Sourcen finden Sie das Verzeichnis 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

Auch das Zabbix-Frontend befindet sich in den heruntergeladenen Sourcen. Wechseln Sie mit cd ./frontends dort hin und kopieren oder verschieben Sie das Verzeichnis php an eine für den Webserver erreichbare Stelle. Vorteilhaft ist, wenn Sie diesem Verzeichnis danach einen sprechenden Namen geben, beispielsweise zabbix.

Ist das geschafft, können Sie den Rest via Browser konfigurieren. Rufen Sie hierzu http://<Name oder IP-Adresse des Zabbix-Servers>/zabbix auf.

Browser-basiert: Die Konfiguration von Zabbix können Sie bequem via Browser vornehmen.

Bei der Überprüfung der Pre-Requisites moniert das Frontend einen Fehler hinsichtlich der „PHP max execution time“, denn das Skript benötigt länger als die per Default erlaubten 30 Sekunden für ein Skript.

Zabbix ist nicht zufrieden mit einer PHP max execution time von nur 30 Sekunden.

Mehr Zeit für Zabbix

Die zuständige Variable heißt max_execution_time und befindet sich in der Datei php.ini. Damit Zabbix zufrieden ist, müssen Sie diesen Wert auf mindestens 300 setzen.

Klappt doch: Nach Editieren der Datei php.ini ist die Software zufrieden.

Im nächsten Schritt geben Sie die Datenbank-Informationen ein. Wie Sie sehen muss der Datenbank-Server nicht unbedingt auf dem gleichen Rechner laufen. Es ist durchaus denkbar die Daten von einem anderen Computer im Netzwerk auszulesen. Nun können Sie die Installation via Frontend beenden. Danach können Sie sich auch schon in das Zabbix-Frontend mit Benutzer Admin und einem leeren Passwort einloggen. Das Passwort sollten Sie allerdings sofort ändern. Wenn Sie sich ohnehin schon in dieser Maske befinden, könnten Sie auf Wunsch auch gleich die Sprache auf Deutsch umstellen.

Der Sicherheit zuliebe: Nach dem ersten Einloggen sollten Sie gleich das Admin-Passwort ändern.

Vorbereitende Schritte zum Starten der Zabbix-Daemons

Standardmäßig holt sich Zabbix die Konfigurations-Informationen aus dem Verzeichnis /etc/zabbix. Dieses existiert allerdings noch nicht und Sie sollten es erstellen. Des Weiteren brauchen Sie in dem Verzeichnis die entsprechenden Konfigurations-Dateien. Beispiel-Dateien finden Sie in den Zabbix-Sourcen unter ./misc/conf. Hier sollten vier Dateien liegen. Am einfachsten ist es, diese nach /etc/zabbix zu kopieren und entsprechend anzupassen.

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

Die Binär-Datei 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. Es ist nicht ganz sinnfrei auch den Zabbix-Server selbst zu überwachen. Es schadet nie, das SSH-Binary, die Datei /etc/passwd oder den Festplattenplatz zu überwachen.

zabbix_server.conf

Die meisten Optionen in der Datei /etc/zabbix_server.conf verfügen über einen Standard-Wert. Diesen verwendet der Zabbix-Server-Daemon, wenn die Konfigurationsdatei nicht explizit einen anderen Wert vorschreibt. Alle Parameter finden Sie unter Punkt 4 der Dokumentation. 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.

HousekeepingFrequency=1

Gibt an, nach wie vielen Stunden Zabbix Aufräumarbeiten bei unnötigen oder veralteten Daten tätigt. Der Wert muss zwischen 1 und 24 liegen.

Timeout=5

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

LogFile=/var/log/zabbix_server.log

Pfad und Dateiname, wohin die Log-Datei geschrieben werden soll.

DBName=zabbix

Name der Datenbank

DBUser=root

Datenbank-Benutzer

DBPassword=

Datenbank-Passwort

ListenPort=10051

Port auf dem der Trapper horcht

zabbix_sender und zabbix_get

Den zabbix_sender brauchen Sie nur in speziellen Situationen. Zum Beispiel könnten die von Zabbix benutzten Ports durch eine Firewall-Restriktion nur in der Richtung Client zu Server offen sein. Somit könnte der Zabbix-Server keine Informationen von den zu überwachenden Rechnern abholen.

Mit zabbix_sender könnten Sie Informationen vom Client an den Server schicken. Die genaue Einrichtung des Trappers finden Sie ausführlich in der Dokumentation. 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 mit dem Aufruf von ./zabbix_sender –h.

Äquivalent hierzu arbeitet zabbix_get, nur 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 Fehlersuche bei einem Zabbix-Agent genommen.

zabbix_agentd.conf

Diese Datei ist äquivalent zu zabbix_server.conf für die Agenten-Seite 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 Agent 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, gibt ein Blick in die Dokumentation weiteren Aufschluss.

Letzte vorbereitende Schritte

Der Entwickler empfiehlt auf den zu überwachenden Rechnern die Datei /etc/services zu modifizieren. Sie sollte die Zeilen zabbix_agent 10050/tcp und zabbix_trap 10051/tcp hinzufügen. Haben Sie in den entsprechenden Konfigurations-Dateien von Zabbix andere Ports angegeben, so sind diese hier entsprechend zu verwenden.

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

Ebenso müssen Sie einen Benutzer zabbix anlegen. Nur diesem ist es erlaubt, die Zabbix-Daemons zu starten. Dies geschieht mit useradd –m zabbix.

Starten der Zabbix-Daemons

Sind alle Vorbereitungen geschafft, können Sie die Zabbix-Daemons als Benutzer zabbix (su - zabbix) starten. Die ausführbaren Dateien können Sie entweder mittels start/stop-Script steuern oder die Binär-Datei direkt aufrufen. Beispiel für start/stop-Scripte haben die Entwickler im Sourcen-Verzeichnis von Zabbix unter ./misc/init.d hinterlegt. Es gibt Beispiel-Scripte für Debian, Fedora, FreeBSD, Gentoo, Red Hat, SUSE und Tru64. Eventuell müssen Sie die Dateien noch Ihren Bedürfnissen 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

Nun sollten diverse Zabbix-Daemons laufen. Sie können das zum Beispiel so überprüfen:

ps -aef | grep zabbix

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

Erfolg! Laut Logdatei sind diverse Zabbix-Server-Daemons gestartet.

Dieser Beitrag hat sich zunächst auf die Installation von Zabbix beschränkt. Der zweite Teil wird Ihnen zeigen, wie Zabbix im täglichen Gebrauch von Nutzen sein kann.

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 Konfigurations-Datei einrichten. Zum Beispiel kann dies c:\zabbix_agentd.conf sein. Die Syntax ist dieselbe, wie unter Linux/Unix. Deswegen können Sie eine solche auch einfach an die gewünschte Stelle kopieren und anpassen.

Danach erfolgt die Installation des Zabbix-Agenten als selbst startender Dienst. Hierzu ist die Eingabe von zabbix_agentd.exe --install notwendig. Sie finden die Datei im Verzeichnis ./bin der Sourcen. Haben Sie die Konfigurations-Datei nicht in c:\ abgelegt, geben Sie den Pfad via --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.

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

In unserem Test funktionierte dies mit Windows Vista allerdings nicht. Der Dienst ließ sich zwar installieren, aber nicht starten. Abhilfe schaffte hier das Installations-Paket von http://www.suiviperf.com/zabbix/. Hiermit können Sie in gewohnter Windows-Manier, ohne Kommandozeile, den Agenten installieren, die Server-IP-Adresse hinterlegen und der Dienst startet sich automatisch. Vergessen Sie nicht, die entsprechenden Ports in der Windows-Firewall freizugeben. Sonst kann der Server nicht mit dem Agenten kommunizieren. (jdo)