Ohne Frage eignet sich der Raspberry PI hervorragent als kleiner „Wachhund“ in einem Netzwerk. Die neue Version Raspberry PI 2 umso mehr, da er durch seine vier CPU-Kerne und 1 GB RAM über genügend Ressourcen verfügt, um auch eine entsprechende Visualisierung vorzunehmen.
Diese Anleitung hier beschreibt die Installation des Zabbix Servers unter dem Betriebssystem Raspbian (Wheezy).
Um Zabbix zu installieren sollte als erstes das Betriebssystem aktualisiert sein. Dieses erledigen wir mir folgenden Befehlen:
sudo apt-get update sudo apt-get upgrade
Im Anschluss werden die notwendigen Module für Zabbix installiert. Dieses wird mit dem folgenden Befehl erledigt:
apt-get install make gcc libc6-dev libmysqlclient-dev libcurl4-openssl-dev libssh2-1-dev libsnmp-dev libiksemel-dev mysql-server libopenipmi-dev fping php5-gd snmp libsnmp-base openjdk-6-jdk unixodbc unixodbc-dev libxml2 libxml2-dev snmp-mibs-downloader snmpd python-pywbem php5-ldap php5-mysql
Während der Installation der Module wird ein Fenster für die Abfrage des Root-Passworts des mySQL-Servers erscheinen:
Hier sollte man ein entsprechendes Passwort festlegen. Wichtig zu beachten: Der mySQL-Server hat eine eigene Benutzerverwaltung und somit einen eigenenen Root-Benutzer. Somit ist dieses nicht automatisch das gleiche Passwort, welches eventuell für den System-Root-Benutzer definiert wurde. Diese können unterschiedlich sein!
Zabbix herunterladen und konfigurieren
Als nächstes laden wir die aktuellen Zabbix-Quellen herunter. Dazu gehen wir zunächst in das Standard-Verzeichnis für Quelldateien:
cd /usr/src
und laden dann das entsprechende Dateiarchiv herunter:
sudo wget "http://downloads.sourceforge.net/project/zabbix/ZABBIX%20Latest%20Stable/2.4.4/zabbix-2.4.4.tar.gz"
Nun erfolgt das Entpacken:
sudo tar -xzvf zabbix-2.4.4.tar.gz
Es entsteht ein neues Verzeichnis „zabbix-2.4.4„, in dem die Dateien mit Verzeichnisbaum entpackt werden.
Jetzt müssen die grundlegenden Konfigurationen vorgenommen werden. Hierzu wird dieser Befehl eingegeben:
./configure --enable-server --enable-agent --with-mysql --with-net-snmp --with-libcurl --with-openipmi --with-ssh2 --with-libxml2 --enable-ipv6 --enable-java --with-jabber --with-unixodbc --with-ldap
Im Standard wird die Installtion im Verzeichnis „/usr/local/sbin“ erfolgen. Dieses lässt sich jedoch auch anpassen. Dazu wird dem oben gezeigten Befehl einfach der zusätzliche Parameter:
--prefix=/opt/zabbix
hinzugefügt. In diesem Fall würde die Installation in „/opt/zabbix“ erfolgen.
Soll diese Installation nicht der Hauptserver sein, sondern ein Proxy, der dann einem anderen Zabbix-Proxy die Informationen weiterleitet, sollte für die Konfiguration der folgende Befehl verwendet werden:
./configure --enable-proxy --enable-agent --with-mysql --with-net-snmp --with-libcurl --with-openipmi --with-ssh2 --with-libxml2 --enable-ipv6 --with-unixodbc
Sofern die Konfiguration fehlerfrei durchläuft erscheint am Ende diese Meldung:
*********************************************************** * Now run 'make install' * * * * Thank you for using Zabbix! * * <http://www.zabbix.com> * ***********************************************************
Kompilieren und installieren
Ich möchte hier aber das Kompilieren und Installieren nicht in einem Schritt, sondern getrennt ausführen. Der Hintergrund ist, dass man so eine bessere Fehlerbehandlich bei eventuellen Fehlern hat, da der Vorgang einfach übersichtlicher ist.
Also geben wir zum Kompilieren zunächst diesen Befehl ein:
make
Damit es beginnt der Vorgang, die entsprechenden Programme zu kompilieren. Auf dem Raspberry PI 2 dauert das ca. fünf Minuten. Auf dem Raspberry PI dauert dieser Vorgang ca. 25 Minuten. Am Ende sollten die letzten Zeilen so aussehen, wenn alles fehlerfrei gelaufen ist:
make[1]: Entering directory '/usr/src/zabbix-2.4.4/upgrades' make[1]: Nothing to be done for 'all'. make[1]: Leaving directory '/usr/src/zabbix-2.4.4/upgrades' make[1]: Entering directory '/usr/src/zabbix-2.4.4' make[1]: Nothing to be done for 'all-am'. make[1]: Leaving directory '/usr/src/zabbix-2.4.4'
Nun installieren wir die Programme mit dem Befehl
sudo sudo make install
Das dauert nur ein paar Sekunden, da nun nur noch die fertigen Dateien an die korrekten Orte kopiert werden.
Zabbix Benutzer und Datenbank anlegen
Jetzt legen wir zunächst einen Zabbix-Benutzer an. Dieser ist für die Ausführung von Zabbix und eventuellen Skripten zuständig. Er wird jedoch nicht für eine interaktive Anmeldung an das System benutigt.
Mit dem folgenden Befehl wird der User angelegt, und sein Homeverzeichnis auf das Verzeichnis gelenkt, in dem sich die Zabbix-Installation befindet:
sudo adduser --system --home /usr/local/sbin --no-create-home zabbix
Nun geht es mit der Datenbank weiter. Wir melden uns am mySQL-Server mit dem folgenden Befehl an:
mysql -u root -p
Nach dem Absenden des Befehls muss das Passwort des mySQL-Root-Benutzers eingegeben werden. Danach erscheint folgende Loginmeldung:
Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 37 Server version: 5.5.41-0+wheezy1 (Debian) Copyright (c) 2000, 2014, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql>
Jetzt sind wir eingeloggt und können zunächst die Datenbank anlegen:
mysql> create database zabbix; Query OK, 1 row affected (0.01 sec)
Jetzt legen wir einen Benutzer für Zabbix an und geben ihm die Berechtigungen auf die Datenbank:
mysql> grant all on zabbix.* to zabbix@localhost identified by 'zabbix'; Query OK, 0 rows affected (0.00 sec)
Jetzt hat der Benutzer „zabbix“ mit dem Passwort „zabbix“ die Berechtigung auf der Datenbank. Allerdings darf er sich nur lokal anmelden, also nicht von einem anderen System aus.
Wir melden uns nun vom mySQL-Server wieder ab:
quit
Jetzt werden die Tabellen angelegt und die Basisdaten in die Datenbank geschrieben. Dazu liefert Zabbix SQL-Skripte mit, die mit den folgenden drei Befehlen ausgeführt werden:
mysql -u zabbix --password=zabbix zabbix </usr/src/zabbix-2.4.4/database/mysql/schema.sql mysql -u zabbix --password=zabbix zabbix </usr/src/zabbix-2.4.4/database/mysql/images.sql mysql -u zabbix --password=zabbix zabbix </usr/src/zabbix-2.4.4/database/mysql/data.sql
Der erste Befehl läuft einige Sekunden. Der zweite und der dritte jeweils deutlich schneller.
Wichtig: Auf einem Zabbix-Proxy-Server wird nur der erste Befehl (shhema.sql) ausgeführt. Die anderen beiden dürfen hier nicht verwendet werden!
Konfigurationsdatei von Zabbix anpassen
Jetzt müssen ein paar Anpassungen an der Zabbix Konfigurationsdatei vorgenommen werden. Dazu rufen wir den Editor nano mit folgendem Befehl auf:
sudo nano /usr/local/etc/zabbix_server.conf
Jetzt ändern Parameter wie folgt ab:
DBHost=localhost DBName=zabbix DBUser=zabbix DBPassword=zabbix Timeout=30 ExternalScripts=/usr/local/share/zabbix/externalscripts FpingLocation=/usr/bin/fping Fping6Location=/usr/bin/fping6
Bei einem Zabbix-Proxy-Server heißt die Konfigurationsdatei nicht zabbix_server.conf, sondern zabbix_proxy.conf.
Automatischer Start beim Booten
Nun richten wir ein, dass Zabbix beim Booten automatisch gestartet wird. Hierzu kopieren wir zunächst die Start-Skripte von Zabbix in das richtige Verzeichnis:
nano cp /usr/src/zabbix-2.4.4/misc/init.d/debian/zabbix-* /etc/init.d/
Nun lassen wir diese Skripte entsprechend verlinken. Das geschieht mit diesen Befehlsn:
update-rc.d zabbix-agent defaults update-rc.d zabbix-server defaults
Nun starten wir den Zabbix-Server und den Zabbix-Agent mit
service zabbix-server start service zabbix-agent start
Nun prüfen wir, ob die beiden Programme gestartet sind. Dazu geben wir den folgenden Befehl ein:
ps aux | grep zabbix
Die Ausgabe sollte dann so aussehen:
zabbix 1485 0.0 0.6 71188 6592 ? S 13:23 0:00 /usr/local/sbin/zabbix_server zabbix 1491 0.0 0.4 71188 4604 ? S 13:23 0:00 /usr/local/sbin/zabbix_server: configuration syncer [synced configuration in 0.006689 sec, idle 60 sec] zabbix 1492 0.0 0.4 71188 4152 ? S 13:23 0:00 /usr/local/sbin/zabbix_server: db watchdog [synced alerts config in 0.002124 sec, idle 60 sec] zabbix 1493 0.0 0.6 73008 5756 ? S 13:23 0:00 /usr/local/sbin/zabbix_server: poller #1 [got 0 values in 0.000015 sec, idle 5 sec] zabbix 1494 0.0 0.6 73008 5756 ? S 13:23 0:00 /usr/local/sbin/zabbix_server: poller #2 [got 0 values in 0.000014 sec, idle 5 sec] zabbix 1495 0.0 0.6 73008 5756 ? S 13:23 0:00 /usr/local/sbin/zabbix_server: poller #3 [got 0 values in 0.000014 sec, idle 5 sec] zabbix 1496 0.0 0.6 73008 5756 ? S 13:23 0:00 /usr/local/sbin/zabbix_server: poller #4 [got 0 values in 0.000014 sec, idle 5 sec] zabbix 1497 0.0 0.6 73008 5756 ? S 13:23 0:00 /usr/local/sbin/zabbix_server: poller #5 [got 0 values in 0.000013 sec, idle 5 sec] zabbix 1498 0.0 0.6 73008 5756 ? S 13:23 0:00 /usr/local/sbin/zabbix_server: unreachable poller #1 [got 0 values in 0.000013 sec, idle 5 sec] zabbix 1499 0.0 0.6 71264 6496 ? S 13:23 0:00 /usr/local/sbin/zabbix_server: trapper #1 [processed data in 0.041068 sec, waiting for connection] zabbix 1500 0.0 0.6 71264 6500 ? S 13:23 0:00 /usr/local/sbin/zabbix_server: trapper #2 [processed data in 0.036535 sec, waiting for connection] zabbix 1502 0.0 0.6 71264 6500 ? S 13:23 0:00 /usr/local/sbin/zabbix_server: trapper #3 [processed data in 0.039294 sec, waiting for connection] zabbix 1503 0.0 0.6 71264 6500 ? S 13:23 0:00 /usr/local/sbin/zabbix_server: trapper #4 [processed data in 0.001646 sec, waiting for connection] zabbix 1504 0.0 0.6 71264 6500 ? S 13:23 0:00 /usr/local/sbin/zabbix_server: trapper #5 [processed data in 0.035820 sec, waiting for connection] zabbix 1505 0.0 0.3 71508 2972 ? S 13:23 0:00 /usr/local/sbin/zabbix_server: icmp pinger #1 [got 0 values in 0.000024 sec, idle 5 sec] zabbix 1509 0.0 0.4 71188 4092 ? S 13:23 0:00 /usr/local/sbin/zabbix_server: alerter [sent alerts: 0 success, 0 fail in 0.000484 sec, idle 30 sec] zabbix 1510 0.0 0.3 71188 2972 ? S 13:23 0:00 /usr/local/sbin/zabbix_server: housekeeper [startup idle for 30 minutes] zabbix 1511 0.0 0.4 71188 4200 ? S 13:23 0:00 /usr/local/sbin/zabbix_server: timer #1 [processed 0 triggers, 0 events in 0.000048 sec, 0 maintenances in 0.000000 sec, idle 30 zabbix 1513 0.0 0.4 71188 4084 ? S 13:23 0:00 /usr/local/sbin/zabbix_server: http poller #1 [got 0 values in 0.002717 sec, idle 5 sec] zabbix 1518 0.0 0.6 72688 5756 ? S 13:23 0:00 /usr/local/sbin/zabbix_server: discoverer #1 [processed 0 rules in 0.002126 sec, idle 60 sec] zabbix 1519 0.0 0.4 71188 4220 ? S 13:23 0:00 /usr/local/sbin/zabbix_server: history syncer #1 [synced 0 items in 0.000004 sec, idle 5 sec] zabbix 1520 0.0 0.4 71188 4220 ? S 13:23 0:00 /usr/local/sbin/zabbix_server: history syncer #2 [synced 0 items in 0.000023 sec, idle 5 sec] zabbix 1521 0.0 0.4 71188 4220 ? S 13:23 0:00 /usr/local/sbin/zabbix_server: history syncer #3 [synced 0 items in 0.000004 sec, idle 5 sec] zabbix 1522 0.0 0.4 71188 4220 ? S 13:23 0:00 /usr/local/sbin/zabbix_server: history syncer #4 [synced 0 items in 0.000003 sec, idle 5 sec] zabbix 1523 0.0 0.4 71188 4084 ? S 13:23 0:00 /usr/local/sbin/zabbix_server: escalator [processed 0 escalations in 0.000451 sec, idle 3 sec] zabbix 1524 0.0 0.4 71188 4212 ? S 13:23 0:00 /usr/local/sbin/zabbix_server: proxy poller #1 [exchanged data with 0 proxies in 0.000015 sec, idle 5 sec] zabbix 1525 0.0 0.3 71188 2908 ? S 13:23 0:00 /usr/local/sbin/zabbix_server: self-monitoring [processed data in 0.000027 sec, idle 1 sec] zabbix 1554 0.0 0.2 9480 2424 ? S 13:24 0:00 /usr/local/sbin/zabbix_agentd zabbix 1559 0.0 0.2 9480 2584 ? S 13:24 0:00 /usr/local/sbin/zabbix_agentd: collector [idle 1 sec] zabbix 1560 0.0 0.1 9480 1696 ? S 13:24 0:00 /usr/local/sbin/zabbix_agentd: listener #1 [waiting for connection] zabbix 1561 0.0 0.1 9480 1696 ? S 13:24 0:00 /usr/local/sbin/zabbix_agentd: listener #2 [waiting for connection] zabbix 1562 0.0 0.1 9480 1696 ? S 13:24 0:00 /usr/local/sbin/zabbix_agentd: listener #3 [waiting for connection] zabbix 1563 0.0 0.2 9480 2508 ? S 13:24 0:00 /usr/local/sbin/zabbix_agentd: active checks #1 [idle 1 sec]
Wir sehen somit, dass einige Prozesse des Zabbix-Servers laufen und der Agent aus sechs Prozessen besteht. Somit laufen die Programme also fehlerfrei. Erscheinen hier deutlich weniger oder keine Einträge, gibt es ein Problem. Dieses kann man dann im Log nachschauen:
less /tmp/zabbix_server.log
Die letzten Zeilen sollten dann einen Fehler auswerfen, der behoben werden muss.
Weboberfläche installieren
Die Weboberfläche ist die GUI, mit der der Zabbix Server bedient und administriert wird. Zunächst müssen die fertigen Dateien für den Webserver in das korrekte Verzeichnis kopiert werden. In diesem Fall nutzen wir das Standardverzeichnis des installierten Apache-Servers:
sudo cp -r -f /usr/src/zabbix-2.4.4/frontends/php/* /var/www
Nun müssen noch die richtigen Berechtigungen gesetzt und die Testdatei des Webservers gelöscht werden:
chown -R www-data:www-data /var/www/* rm /var/www/index.htm
Nun müssen noch ein paar Anpassungen an der PHP-Konfiguration vorgenommen werden. Dazu edizieren wir die Konfigurationsdatei mit dem Befehl
nano /etc/php5/apache2filter/php.ini
Hier müssen folgende Einträge entsprechend angepasst werden:
post_max_size = 16M max_execution_time = 300 max_input_time = 300 date.timezone = Europe/Berlin
Damit diese Einstellungen aktiviert werden, muss der Apache Webserver die aktuelle Konfiguration neu laden:
service apache2 force-reload
Jetzt können wir mit einem aktuellen Browser auf die Weboberfläche zugreifen und den Zabbix-Server in Betrieb nehmen.
Zusätzliche Tips
Möchte man auf den Zabbix-Server gerne auch die Systemlogs (z.B. /var/log/messages) überwachen, so muss man den Zabbix-User in die Gruppe adm aufnehmen, damit Zabbix Leserechte für diese Logs gekommt. Dieses geschieht mit folgendem Befehl:
usermod -a -G adm zabbix
Wenn man über den Zabbix Agent externe Skripte ausführen möchte, so ist der Timeout für solche Aktionen im Standard bei drei Sekunden. Das kann schnell zu kurz sein. In diesem Fall muss in der zabbix_agentd.conf die folgende Zeile z.B. auf das Maximum von 30 Sekunden angepasst werden.
### Option: Timeout # Spend no more than Timeout seconds on processing # # Mandatory: no # Range: 1-30 # Default: Timeout=30 # <- hier die gewünschte Dauer eintragen.
Hi,
sag mal hast du das Setup so noch im Einsatz? Mich würde interessieren wie den die Performance des Systems auf dem Pi 2 ist? Plane gerade ähnliches 🙂
Danke für die Info und viele Grüße
Robert
Hallo Robert,
ja, das Setup läuft so bei mir noch. Die WebGUI läuft problemlos und die Antwortzeiten sind gut. Ich habe derzeit fast 1000 Sensonren einrerichtet und der Server schreibt etwas über 15 Werte die Sekunde in die Datenbank. Dabei ist die SD-Karte aber nicht am Limit. Da ginge noch mehr.
Also für kleinere Umgebungen (z.B. 2 ESX-Server mit 25 VMs und Storage etc.) funktioniert das ohne Probleme.
Viele Grüße
Thomas
Hi,
danke für die schnelle Antwort. Das wollte ich hören 😉 und danke für den tollen Artikel.
Schöne Grüße
Eines der besten How-Tos das ich je gelesen habe.
Daumen hoch und weiter so!
Super HowTo!
Eine Frage habe ich:
Zu überwachen sind etwa 30 unterschiedliche Server, bei allen soll CPU, RAM und HDD überwacht werden evtl. noch einer mit 4-6 Datenbanken..
Schafft das ein RasPi3 im Dauerbetrieb ?
Hallo Pat,
ja, das schafft der RasPi3 ohne Probleme. Wichtig ist dabei nur, dass die MicroSD schnell genug ist. Sollte eine gute (z.B. SanDisk) sein mit einer Übertragungsrate von min. 20 MB/s beim Schreiben. Dann kann der RasPi alle Daten schnell genug loswerden.
Entschuldigt meine Rechtschreibung ich bin auf Grund meiner Erkältung völlig neben der Spur.
Ich installiere alles auf einen Raspi3 mit raspbian-jessie-lite Version 2017-03-02 , muss dazu sagen das ich Linux Anfänger bin.
openjdk-6-jdk geht nicht habe nach etwas googeln einen passenden befehl gefunden.
openjdk-8-jre
dann wie beschrieben
cd /usr/src
sudo wget „https://sourceforge.net/projects/zabbix/files/ZABBIX%20Latest%20Stable/3.2.4/zabbix-3.2.4.tar.gz“
sudo tar -xzvf zabbix-3.2.4.tar.gz
habe einfach mal die neuste version genommen.
als nächstes: ./configure –enable-server –enable-agent –with-mysql –with-net-snmp –with-libcurl –with-openipmi –with-ssh2 –with-libxml2 –enable-ipv6 –enable-java –with-jabber –with-unixodbc –with-ldap
Jetzt bekomme ich diese Fehlermeldung :
configure: error: Unable to find „javac“ executable in path
und finde keine Lösung.
Könnte mir jemand bitte weiterhelfen?
Hallo Pat,
ist der Java Compiler installiert? Ansonsten versuche mal bitte „
sudo apt-get install openjdk-7-jdk
„. Und dann den./configure
erneut ausführen.Danke für die Anleitung. Es scheint, dass hier einige Voraussetzungen nicht erfüllt sind. So ist z.B. Apache nicht installiert, ebenfalls ist PHP nicht korrekt installiert.
Ansonsten wirklich gute Anleitung.
Die Voraussetzungen Apache und PHP sollten in der Raspbian Basisinstallation bereits enthalten sein. Daher habe ich sie nicht extra aufgeführt.
Hallo, möchte das mal auf einem Rpi3 probieren. Wie sieht es den mit dem upaten von zabbix aus?
Das Zabbix Update funktioniert genau, wie in der Zabbix-Doku vorgegeben. Also einfach aus den Quellen erneut compilieren und dann ein „make install“. Bei einem neuen Major-Release muss jedoch die Datenbank mit dem Zabbix-Update-Skript aktualisiert werden.