Komplette Server- und Client-Überwachung mit Zabbix

01.07.2005 von Jürgen Donauer
Die Zahl der zu überwachenden Dienste und Anwendungen für unternehmenskritische Prozesse steigt eher, als dass sie sinkt. Für Administratoren ist es deshalb essenziell, über eventuelle Ausfälle sofort Nachricht zu erhalten. Dies erledigen Monitoring-Tools.

Entsprechende Überwachungs-Tools kosten leicht mehrere Tausend Euro. Und dann ist immer noch nicht sichergestellt, dass wirklich alle oder zumindest die wichtigsten Dienste überwacht werden. Da diese Closed-Source-Produkte auch nicht unbedingt erweiterbar sind, ist es häufig unmöglich, eigene Produkte in die Überwachung einzubinden.

Mit Zabbix steht ein beliebig erweiterbares Monitoring-Programm unter der Open-Source-Lizenz zur Verfügung, das eine Vielzahl von Betriebssystemen wie Linux, Solaris, HP-UX, AIX, FreeBSD oder Mac OS X unterstützt. In einer Anmerkung des Entwicklers ist zu lesen, dass es auf jeder anderen Unix-Like-Plattform ebenfalls funktionieren kann, jedoch nicht getestet ist. Für Windows gibt es zumindest einen Überwachungsagenten.

Zabbix besteht prinzipiell aus drei funktionalen Komponenten: Agenten sammeln die Daten ein und speichern sie auf dem Zabbix-Server in einer Datenbank. Über ein Webfrontend lassen sich diese Informationen abrufen und grafisch darstellen.

Um Zabbix benutzen zu können, benötigen Sie zusätzlich Apache, PHP 4 und das PHP 4 GD-Modul. Je nach gewünschter Datenbank kommen dann MySQL oder PostgreSQL sowie das entsprechende PHP-Modul dazu. OpenSSL und NETSNMP oder UCD-SNMP stellen optional benötigte Komponenten dar, die allerdings durchaus Sinn machen. Bei den gängigen Distributionen sind alle für Zabbix benötigten Komponenten in der Regel auf CD vorhanden. Wahlweise lassen sich Programme über apt-get/yum nachinstallieren.

In diesem Beitrag gehen wir zunächst auf die Installation von Zabbix ein. Im zweiten Teil, der in wenigen Tagen erscheinen wird, erfahren Sie dann, wie Sie Zabbix bei Ihrer täglichen Arbeit nutzen.

Installation

Als Testplattform dienen Fedora Core 3 und MySQL. Auf dem Server benötigen Sie für die Kompilation auf jeden Fall die Pakete openssl-devel, mysql-devel und net-snmp-devel. Nach dem Auspacken der Sourcen, die Sie auf der Zabbix-Website (http://www.zabbix.com) herunterladen können, geht das Kompilieren wie unter Linux gewohnt vor sich. Sie müssen nur dem Befehl ./configure mitteilen, mit welchen Komponenten Sie Zabbix kompilieren möchten. Für den Gebrauch mit MySQL und Net-SNMP sieht das beispielsweise so aus:

./configure -with-mysql -with-net-snmp

Sollten Sie viele verschiedene Versionen oder Distributionen von Linux im Einsatz haben, können Sie unter Umständen Schwierigkeiten mit den Versionen der verwendeten Bibliotheken bekommen, wenn Sie den Agenten verteilen. Für diesen Fall besteht die Möglichkeit einer statischen Kompilation. Das bedeutet, dass der Compiler alle verwendeten Bibliotheken in das Binary packt. Das hat den Vorteil, dass Sie den Agenten nur ein einziges Mal übersetzen und die Binärdatei dann auf die zu überwachenden Server kopieren müssen. Das Binary wird logischerweise dadurch größer. Die optional statische Einbindung der Libraries erfolgt mit dem Anhängsel --enable-static

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

Dies bereitet sowohl die Überwachungsagenten als auch die Daemons vor. Wollen Sie auf einem Client nur den Agenten übersetzen, reicht der Befehl

./configure

Setzen Sie gegebenenfalls den Switch --enable-static, wenn Sie den Agenten auf mehrere Systeme verteilen wollen. Eine Liste aller möglichen Optionen bekommen Sie mit diesem Kommando angezeigt

./configure --help

Nachdem Sie Ihre gewünschte Konfiguration ausgewählt haben, fordert Sie das Programm netterweise sogar auf, den Befehl make zu starten.

Ist dies erledigt, finden Sie im Verzeichnis ./bin/ die kompilierten Binaries. Diese kopieren Sie nun in ein Verzeichnis Ihrer Wahl, zum Beispiel nach

cp * /usr/local/bin/

Apache-Webserver

Als Nächstes gilt es, den Apache vorzubereiten. Stellen Sie sicher, dass der Webserver das php4-Modul aktiviert hat. Dies ist bei manchen Distributionen, wie beispielsweise bei SUSE, nicht der Fall. In der Datei

/etc/sysconfig/apache2

muss die Zeile mit APACHE_MODULES zum Beispiel so aussehen:

APACHE_MODULES="access actions alias auth auth_dbm autoindex .cgi dir env expires include log_config mime negotiation .setenvif ssl suexec userdir php4"

Danach können Sie den Webserver starten.

apachectl start

MySQL-Datenbank-Server

Nun gilt es, die Datenbank zu erstellen. Starten Sie hierzu den mysql-Daemon:

/etc/init.d/mysqld start

Loggen Sie sich in den Datenbank-Server ein und erstellen eine Datenbank namens zabbix. Als root mit einer frischen Installation sieht dies so aus:

mysql -uroot

create database zabbix;

quit;

Sollten Sie einen bestehenden Datenbank-Server nutzen, auf dem bereits ein Passwort gesetzt ist, erfolgt das Einloggen mit:

mysql -uroot -ppasswort

Danach erstellen Sie die Tabellen und Initialdaten in dieser Datenbank. Der Entwickler macht Ihnen dies denkbar einfach. In den ausgepackten Sourcen finden Sie die Verzeichnisse create und data. Am einfachsten ist es, die Daten mittels cat und einer Pipe in die Datenbank zu übertragen:

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

cat ./data/data.sql | mysql -uroot

Zabbix-Frontend

In den Zabbix-Sourcen finden Sie ein Verzeichnis mit dem Namen frontends und ein Unterverzeichnis php. Kopieren oder verschieben Sie dieses Verzeichnis an eine Stelle, die für den Webserver erreichbar ist. Von Vorteil ist es auch, diesem Verzeichnis einen entsprechenden Namen zu geben. In diesem Fall wäre das etwa

cd ./frontends

mv php /var/www/html/

mv /var/www/html/php /var/www/html/zabbix

Danach ist es notwendig, die Parameter für die Datenbankverbindung einzutragen. Dies geschieht in der Datei db.inc.php, welche sich im Unterverzeichnis include des Frontends befindet. Für die Konfiguration sind nur die Parameter ab $DB_TYPE bis $DB_PASSWORD interessant. Hier tragen Sie den Datenbanktyp, die IP-Adresse oder den Namen des Datenbank-Servers, den Datenbanknamen, Datenbank-User und -Passwort ein.

Vorbereitende Schritte zum Starten der Zabbix-Daemons

Zabbix kann Daten auf zwei verschiedene Arten sammeln. Entweder das Programm holt sich die Daten selbst ab oder es bekommt sie geschickt. Für das Abholen ist der Daemon zabbix_suckerd zuständig. Das Binary zabbix_trapperd kümmert sich um den Empfang von gesendeten Daten. Um die Daemons korrekt zu starten, müssen Sie allerdings zuerst ein Verzeichnis

/etc/zabbix

erstellen und

entsprechende Konfigurationsdateien anlegen. Am besten kopieren Sie hierfür die in den Sourcen enthaltenen Beispiele nach /etc/zabbix

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

und passen diese an Ihre Bedürfnisse an. Die Daemons zabbix_suckerd und zabbix_trapperd sind für den Server-Betrieb zuständig. Sie sammeln die gewünschten Daten und tragen diese in die Datenbank ein. Der Daemon zabbix_agentd muss auf den Rechnern laufen, die Sie überwachen möchten. Es macht übrigens durchaus Sinn, den Server selbst zu monitoren. Zum Beispiel schadet es nie, den Festplattenplatz, das ssh Binary oder die Datei

/etc/passwd

zu überwachen.

zabbix_suckerd.conf

Die wichtigsten Parameter kurz erklärt:

Konfiguration des Sucker-Daemon

Parameter

Bedeutung

StartSuckers=5

Gibt an, wie viele Sucker-Daemons Zabbix starten soll. Der Wert muss zwischen 5 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 Sucker-Daemon maximal auf eine Antwort des Agenten wartet. Der Wert muss zwischen 1 und 30 liegen.

LogFile=/var/log/zabbix_suckerd.log

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

DBName=zabbix

Name der Datenbank

DBUser=root

Datenbank-Benutzer

DBPassword=

Datenbank-Passwort

zabbix_trapperd.conf

Normalerweise benötigen Sie den zabbix_trapper nur in speziellen Konstellationen. Ein denkbares Beispiel ist, dass die von Zabbix benutzten Ports durch eine Firewall nur in eine Richtung offen sind – und zwar in der Richtung vom Client zum Zabbix-Server. Unter dieser Voraussetzung kann Zabbix keine Informationen von den zu überwachenden Maschinen abholen. Für solche Sonderfälle ermöglichen Ihnen die Entwickler ein Senden der Daten an den Zabbix-Server. Wie der Trapper einzurichten ist und was Sie dabei genau beachten sollten, lesen Sie ausführlich in der Zabbix-Dokumentation.

Die wichtigsten Parameter in einer Kurzübersicht zusammengefasst: Identische Parameter zur Datei zabbix_suckerd.conf werden an dieser Stelle nicht mehr erwähnt, sind aber, falls notwendig, dennoch anzupassen.

Konfiguration des Trapper-Daemon

Parameter

Bedeutung

StartTrappers=5

Gibt an, wie viele Trapper-Daemons Zabbix starten soll. Der Wert muss zwischen 2 und 255 liegen.

ListenPort=10001

Gibt an, auf welchen Port der Zabbix-Trapper horchen soll. 10001 ist der Default-Wert. Der Wert muss zwischen 1024 und 32767 liegen.

DBConnectOnEach=1

Verbindet sich jedes Mal neu zur Datenbank nach einem erhaltenen Wert. Mit 0 könnten Sie diese Option ausschalten.

Den Trapper können Sie auch als Nicht-Daemon-Variante benutzen. In diesem Fall ist die Datei zabbix_trapper.conf zuständig. Der Einsatz dieser Variante ist in der Zabbix-Dokumentation beschrieben. Das Manual befindet sich als PDF im Zabbix-Verzeichnis unter ./doc.

zabbix_agentd.conf

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=10000

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.

Auch der Agent muss nicht zwingend als Daemon im System gestartet werden. In diesem Fall wäre die Datei zabbix_agent.conf zuständig. Wie dieses Thema zu behandeln ist, finden Sie ausführlich in der Dokumentation beschrieben.

Letzte vorbereitende Schritte

Zu guter Letzt sind die verwendeten Ports noch in der Datei /etc/services einzutragen. Der Entwickler empfiehlt folgende Einträge in die Datei:

zabbix_agent 10000/tcp

zabbix_trap 10001/tcp

Diese Einträge sollten Sie auf jedem Rechner machen, den Sie monitoren möchten. Haben Sie in den Konfigurationsdateien zabbix_agentd.conf und zabbix_trapperd.conf andere Ports als 10000 und 10001 angegeben, so sind diese hier entsprechend zu verwenden. Zum Schluss benötigen Sie noch einen Benutzer namens zabbix, da dieser für das Starten der Dienste zuständig ist.

useradd -m zabbix

Wie Sie den Agenten zur Überwachung für Windows-Rechner konfigurieren und starten, können Sie in der Dokumentation nachlesen.

Starten der Zabbix-Daemons

Nachdem nun alle Vorbereitungen getroffen sind, ist es an der Zeit, die Daemons zu starten. Wechseln Sie zuerst zum Benutzer zabbix:

su - zabbix

Sie können die Daemons entweder über ein start/stop-Script aufrufen oder direkt das Binary starten. Beispiele für start/stop-Scripts finden Sie im Zabbix-Verzeichnis unter ./misc/init.d, die Sie eventuell auf Ihr System anpassen müssen. Für den ersten Test sollte ein direkter Aufruf genügen.

/user/local/bin/zabbix_suckerd

/user/local/bin/zabbix_trapperd

/user/local/bin/zabbix_agentd

Danach sollten von allen Daemons laut der Beispielkonfiguration fünf Versionen laufen. Das können Sie einfach überprüfen:

ps -aef | grep zabbix

Oder Sie sehen in den Logfiles nach. Wo diese stehen, können Sie für den jeweiligen Daemon in dessen Konfigurationsdatei unter /etc/zabbix finden.

In diesem Beitrag sind wir zunächst auf die Installation von Zabbix eingegangen. Im zweiten Teil, der in wenigen Tagen erscheinen wird, erfahren Sie, wie Sie Zabbix bei Ihrer täglichen Arbeit nutzen. (jdo)