Zabbix-Server Installation

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:

Zabbix-Install_1

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.

 

12 Kommentare

    • 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

  1. 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.

  2. 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?

  3. 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.

    • 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.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

To create code blocks or other preformatted text, indent by four spaces:

    This will be displayed in a monospaced font. The first four 
    spaces will be stripped off, but all other whitespace
    will be preserved.
    
    Markdown is turned off in code blocks:
     [This is not a link](http://example.com)

To create not a block, but an inline code span, use backticks:

Here is some inline `code`.

For more help see http://daringfireball.net/projects/markdown/syntax