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:
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.
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.
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)