Zabbix Agent installieren

Hinweise zum Zabbix-Agenten

Der Zabbix-Agent ist ein Dienst, welcher auf den überwachten Hosts läuft und Daten an den Zabbix-Server sendet. So kann der Zabbix-Server z.B. ermitteln, wie stark eine CPU ausgelastet ist oder wie viele Daten über eine Netzwerkschnittstelle transferiert werden.

Die Installation des Zabbix-Agenten ist nicht zwingend notwendig. Der Zabbix-Server kann eine Reihe anderer Quellen "anzapfen", z.B. SNMP, SSH, IPMI.

Wenn Sie die Möglichkeit haben, den Zabbix-Agenten zu installieren, dann sollten Sie dies auch tun. Für Sie als Zabbix-Administrator ist es immer am leichtesten, Daten über den Zabbix-Agenten zu sammeln. Die Weboberfläche bietet Menüs zur Auswahl aller Items, die der Agent bedienen kann. Außerdem können Sie den Agenten leicht mit Ihren eigenen Checks erweitern.

Wenn Sie den Zabbix-Server mit den im Kapitel Zabbix_Server_installieren genannten Optionen kompiliert haben, wurde der Agent ebenfalls kompiliert und installiert. Im Verzeichnis /opt/zabbix/sbin sollten Sie die ausführbaren Dateien zabbix_agent, zabbix_agentd und zabbix_sender finden.

Die Distributionen Debian und Ubuntu stellen fertige Pakete für den Zabbix-Agenten zur Verfügung. Im Gegensatz zum Zabbix-Server ist es nicht zwingend notwendig, immer die aktuellste Version des Agenten zu verwenden. Sie können auch die Pakete der Distribution verwenden.

Leider gibt es keine Kompatibilitätsliste, der Sie zuverlässig entnehmen können, welcher Agent mit welchem Server kompatibel ist. Erfahrungen haben aber gezeigt, dass man z.B. mit dem Agent 1.8.2 von Debian Squeeze problemlos die Daten an einen Zabbix-Server der Version 1.8.7 liefert. Wenn Sie den Zabbix-Agenten über den Paketmanager installieren, dann ist nur der Abschnitt "Zabbix-Agent als Daemon einrichten" relevant.

Mit der Version Zabbix 2.0 sind auch neue Funktionen in den Zabbix-Agenten eingeflossen. Wenn Sie einen Agenten der Version 1.8 zusammen mit den Zabbix-Server 2.0 verwenden, stehen einige Funktionen nicht zur Verfügung. Es ist ratsam, auch den Agenten in der Version 2 zu verwenden.

Zabbix-Agenten, die älter als Version 2.0 sind, sollten Sie nicht mehr verwenden.

Für Nutzer von Open SuSE und SLES bleibt nur der Weg über den Quellcode. Wenn Sie planen, den Zabbix-Agenten auf eine große Anzahl von Hosts auszurollen, dann sollten Sie ein RPM-Paket anfertigen.

Face-wink.png
Tipp:Sie können den Zabbix-Agenten auch auf demselben Host wie den Zabbix-Server kompilieren und von dort aus verteilen. Wenn Sie eine heterogene Umgebung überwachen möchten, in der verschiedene Distributionen oder verschiedene Betriebssysteme eingesetzt werden, muss der Zabbix-Agent ggf. für abweichende Systeme neu kompiliert werden.

Die Komponenten des Zabbix-Agenten

zabbix_agentd
Dies ist das Client-Programm, welches dem Zabbix-Server die Daten des überwachten Hosts liefert. I.d.R. läuft der Zabbix-Agent dauerhaft und als eigenständiger Dienst. Dazu wird das Programm zabbix_agentd verwendet.
zabbix_agent
Wenn nötig kann der Zabbix-Agent auch über einen Superserver wie Xinetd gestartet werden. Dann wird das Programm zabbix_agent vom Xinetd gestartet. Das Programm kann aber auch zum Testen von Items auf der Kommandozeile verwendet werden.
zabbix_get
zabbix_get wird zum Testen der Agenten verwendet. Mit zabbix_get simuliert man die Kontaktaufnahme des Servers mit dem Agenten und erhält den Rückgabewert.
zabbix_sender
Mit zabbix_sender können Daten vom Client an den Server geschickt werden. Zabbix_sender findet in selbst entwickelten Skripten seine Anwendung.

Zabbix-Agent mit den DEB Pakten von Zabbix SIA installieren

Die Firma Zabbix SIA stellt eine Repository für Debian und Ubuntu zur Verfügung, über das Sie immer eine aktuelle Version des Zabbix-Agenten über den Paketmanager installieren können. Für Debian Wheezy führen Sie folgende Kommandos aus.

wget http://repo.zabbix.com/zabbix/2.2/debian/pool/main/z/zabbix-release/zabbix-release_2.2-1+wheezy_all.deb
dpkg -i zabbix-release_2.2-1+wheezy_all.deb
apt-get update
apt-get install zabbix-agent zabbix-sender

Zabbix-Agent aus den Quellen installieren

Zabbix-Agent kompilieren

Der Zabbix-Agent ist sehr anspruchslos, was die Voraussetzungen für das Kompilieren der Programmdateien angeht. Die Installation aus den Quellen sollte auf jedem Linux System schnell und einfach vonstatten gehen.

Installieren Sie die nötigen Pakete, damit Sie anschließend den Zabbix-Agenten kompilieren können:

apt-get install make gcc libc6-dev #Debian
yum install make gcc               # Red Hat,CentOs
zypper install gcc make            # SuSE

Sobald der GNU-C-Kompiler und das Kommando make installiert sind, wird der Zabbix-Agent wie folgt installiert: Den Installationsort können Sie mit der Option --prefix Ihren Wünschen anpassen.

cd /usr/src
wget http://mesh.dl.sourceforge.net/sourceforge/zabbix/zabbix-1.8.7.tar.gz
tar xzf zabbix-1.8.7.tar.gz
cd /usr/src/zabbix-1.8.7
./configure  --enable-agent --prefix==/opt/zabbix/
make
make install

Zabbix-Agent als statische Binary kompilieren
Benutzen Sie die Option --enable-static, um die ausführbaren Dateien zabbix_agent und zabbix_agentd unabhängig von anderen Bibliotheken zu machen. Wenn Sie planen, die Binärdateien des Zabbix-Agenten auf verschiedene Systeme zu verteilen, kann diese Option hilfreich sein.

Beachten Sie, dass die Option --enable-static nicht unter Solaris funktioniert.

Nachdem Sie den Zabbix-Agenten als statische Datei kompiliert haben, können Sie mit dem Kommando ldd testen, ob wirklich keine Abhängigkeiten zu anderen Bibliotheken bestehen.

ldd zabbix_static/sbin/zabbix_agentd
not a dynamic executable

Hier der Vergleich mit einer dynamisch gelinkten Version

ldd zabbix/sbin/zabbix_agentd
 linux-vdso.so.1 ==>  (0x00007fffb69ff000)
 libm.so.6 ==> /lib64/libm.so.6 (0x00007f213b091000)
 libresolv.so.2 ==> /lib64/libresolv.so.2 (0x00007f213ae7a000)
 libc.so.6 ==> /lib64/libc.so.6 (0x00007f213ab0d000)
 /lib64/ld-linux-x86-64.so.2 (0x00007f213b2e8000)

Zabbix-Agent als Daemon einrichten

Aus Sicherheitsgründen lässt sich der Zabbix-Agent nicht als root-User starten. Legen Sie also einen neuen User für Zabbix an.

adduser --system --home /opt/zabbix --no-create-home zabbix # Debian
useradd -r -d /opt/zabbix/ -m zabbix                        # Red Hat, CentOS

Wenn Sie sich für ein anderes Installationsverzeichnis als /opt/zabbix entschieden haben, dann müssen Sie das Homeverzeichnis des neuen Users entsprechend anpassen.

Der Zabbix-Agent sollte als Daemon permanent auf die Anfragen des Zabbix-Server hören und diese sofort beantworten.

Zusammen mit den Quellen von Zabbix wird auch eine Beispielkonfiguration für den Zabbix-Agenten geliefert, welche Sie an einen geeigneten Ort, z.B. /etc/zabbix kopieren sollten.

mkdir /etc/zabbix
cp /usr/src/zabbix-1.8.7/misc/conf/zabbix_agentd.conf /etc/zabbix/

Legen Sie auch einen symbolischen Link an, damit man wie gewohnt die Konfigurationsdatei unter /etc findet:

ln -s /opt/zabbix/etc /etc/zabbix

Öffnen Sie die Datei /opt/zabbix/etc/zabbix_agentd.conf mit einem Editor und tragen Sie die IP-Adresse des Zabbix-Servers ein:

### Option: Server
# List of comma delimited IP addresses (or hostnames) of Zabbix servers.
# No spaces allowed. First entry is used for receiving list of and sending active checks.
# If IPv6 support is enabled then '127.0.0.1', '::127.0.0.1', 
# '::ffff:127.0.0.1' are treated equally.
#
# Mandatory: yes
# Default:
# Server=
Server=127.0.0.1

Start-Stop-Skripte für den Zabbix-Agenten

Im Verzeichnis mit dem Quellcode befinden sich Vorlagen mit Start-Stop-Skripten für fast alle Distributionen. Kopieren Sie diese Vorlagen und nehmen Sie kleine Änderungen vor.

Achten Sie darauf, dass der Pfad zur ausführbaren Datei zabbix_agentd und zur Konfig-Datei korrekt eingetragen sind. Die von Zabbix gelieferten Skripte erwarten den zabbix_agentd unter /opt/zabbix/sbin und die Konfiguration unter /etc/zabbix.

Stellen Sie außerdem sicher, dass der Pfad zum Pid-File im Start-Stop-Skript exakt derselbe ist, wie er in der Datei zabbix_server.conf angeben wurde. Wenn der pid-File nicht in /tmp sondern z.B. in /var/run/zabbix abgelegt wird, müssen Sie dem Zabbix-User Schreibrechte auf dieses Verzeichnis geben.
Gleiches gilt für das Logfile. Nicht-Root-User dürfen nicht nach /var/log schreiben. Wenn Sie /var/log/zabbix als Verzeichnis für die Logfiles verwenden, müssen Sie Zabbix zuerst die Berechtigung erteilen.

chown zabbix /var/run/zabbix
chown zabbix /var/log/zabbix

Start-Stop-Skripte für Debian-Systeme
Kopieren Sie das Skript für Debian in Ihr System.

 cp /usr/src/zabbix-1.8.7/misc/init.d/debian/zabbix-agent /etc/init.d/

Fügen Sie in das Skript folgende Zeilen ein, damit es den Anforderungen von Debian entspricht:

#! /bin/sh
### BEGIN INIT INFO
# Provides:          zabbix-agent
# Required-Start:    $remote_fs $network
# Required-Stop:     $remote_fs
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Start zabbix-agent daemon
### END INIT INFO

set -e
# define LSB log_* functions.
. /lib/lsb/init-functions

Machen Sie das Start-Stop-Skript ausführbar und registrieren Sie den neuen Dienst, so dass er beim Systemstart automatisch gestartet wird.

chmod +x /opt/zabbix/etc/init.d/zabbix_agent
update-rc.d zabbix_agent defaults

Start-Stop-Skripte für Red Hat und CentOs-Systeme
Kopieren Sie das mitgelieferte init-Skript an den passenden Ort und machen Sie es ausfühbar

cp /usr/src/zabbix-1.8.7/misc/init.d/redhat/zabbix_agentd_ctl /etc/init.d/
chmod +x /etc/init.d/zabbix_agentd_ctl

Öffnen Sie die Datei /etc/init.d/zabbix_agentd_ctl mit einem Editor und passen die Variablen PIDFILE und BASEDIR an. Diese müssen exakt mit den Vorgaben aus der Datei zabbix_server.conf übereinstimmen. Fügen Sie außerdem folgenden Block an den Anfang der Datei unterhalb der ersten Zeile ein:

# chkconfig: 2345 55 25
# description: zabbix_agentd daemon
#
# processname: zabbix_agentd 

Registrieren Sie den neuen Dienst, so dass er beim Systemstart automatisch gestartet wird.

chkconfig --add zabbix_agentd_ctl
chkconfig zabbix_agentd_ctl on

Start-Stop-Skripte für SuSE Linux
Kopieren Sie das mitgelieferte init-Skript an den passenden Ort und machen Sie es ausführbar. Registrieren Sie anschließend den neuen Dienst, so dass er beim Systemstart automatisch gestartet wird:

cp /usr/src/zabbix-1.8.7/misc/init.d/suse/9.3/zabbix_agentd /etc/init.d/
chmod +x /etc/init.d/zabbix_agentd
chkconfig --add zabbix_agentd
chkconfig zabbix_agentd on

Wenn Sie den Zabbix-Agenten per Internet Superserver (inetd) betreiben möchten, fügen Sie folgende Zeilen in Ihre Konfiguration ein:

zabbix_agent stream tcp nowait.3600 zabbix /opt/zabbix/bin/zabbix_agent

Zabbix-Agent testen

Starten Sie den Zabbix-Agenten.

/etc/init.d/zabbix_agentd start

In der Prozessliste sollte nun der Zabbix-Agent auftauchen und der lokale Port 10050 sollte offen sein.

ps aux|grep zabbix_agent
zabbix 4466  0.0  0.1   9196   580 ? SN 17:55 0:00 /opt/zabbix/sbin/zabbix_agentd

netstat -ln|grep 10050
tcp  0  0  0.0.0.0:10050           0.0.0.0:*     LISTEN

Sollte der Agent nicht über das Start-Stop-Skript starten, rufen Sie den Agenten testweise über die Konsole auf. Dies bringt oft Aufschluss über Fehler in der Konfiguration oder fehlende Schreibberechtigungen auf den Ordnern für den Pid-File und den Logfile.

/opt/zabbix/sbin/zabbix_agentd -c /etc/zabbix/zabbix_agentd.conf
zabbix_agentd [19459]: 
Cannot open [/var/log/zabbix/zabbix_agentd.log] [Permission denied]

Zabbix-Agent für Windows installieren

Laden Sie den Zabbix-Agenten für Windows über http://www.zabbix.com/download.php herunter.

Nach dem Entpacken der Datei erhalten Sie die Ordner win32 und win64.

Der Zabbix-Agent für Windows enthält keinen Installer, so dass die Installation manuell erfolgen muss. Starten Sie die Eingabeaufforderung cmd.exe und wechseln Sie in das Verzeichnis, welches die für das System passende Version des Zabbix-Agenten enthält, z.B.

C:\Dokumente und Einstellungen\Administrator\Eigene Dateien\Downloads>
cd zabbix_agents_2.2.1.win/win32
dir
13.08.2010  16:13           236.032 zabbix_agentd.exe
13.08.2010  16:14           108.544 zabbix_get.exe
13.08.2010  16:14           121.344 zabbix_sender.exe

Legen Sie einen Ordner im Standardverzeichnis für Programminstallationen an und kopieren Sie die ausführbaren Dateien in das neue Verzeichnis.

mkdir %PROGRAMFILES%\zabbix
xcopy * %PROGRAMFILES%\zabbix
Dateien des Zabbix-Agenten unter Windows

Legen Sie anschließend eine Konfigurationsdatei %PROGRAMFILES%\zabbix\zabbix_agentd.conf mit einem Texteditor an. Der Aufbau der Konfigurationsdatei ist auf allen Betriebssystemen identisch. Eine minimale Konfigurationsdatei für Windows könnte z.B. wie folgt aussehen:

# This is a config file for Zabbix-Agent (windows)
# To get more information about Zabbix, visit http://www.zabbix.com
LogFile=zabbix_agentd.log
DebugLevel=0
Server==<IP FROM YOUR Zabbix SERVER>

Sie müssen nur noch die IP Ihres Zabbix-Servers eintragen. Registrieren Sie nun den Zabbix-Agenten als Windows-Dienst und starten sie diesen anschließend.

C:\Program Files\zabbix>
zabbix_agentd.exe --config "%PROGRAMFILES%\zabbix\zabbix_agentd.conf" --install
zabbix_agentd.exe [4028]: Service "Zabbix-Agent" installed successfully.
zabbix_agentd.exe [4028]: Event source "Zabbix-Agent" installed successfully.

C:\Programme\zabbix>net start "Zabbix-Agent"
Zabbix-Agent wird gestartet.
Zabbix-Agent wurde erfolgreich gestartet.
Important.png

Hinweis: Das Verzeichnis, in dem der Agent die Logfiles ablegt, muss existieren. Andernfalls wird der Dienst zwar installiert, kann aber nicht gestartet werden. Oben gezeigtes Beispiel bezieht sich auf Windows XP und Windows 2003. Ab Version Windows Server 2008, Vista und Windows 7 sollten Sie c:\Program Files verwenden. Leider können die Variablen der Windows-Umgebung wie z.B. %PROGRAMFILES% nicht in der Zabbix Konfigurationsdatei verwendet werden.

Sie können die Option LogFile auch weglassen. Dann verwendet Zabbix das Windows Event Log zum Loggen.

Nach der erfolgreichen Installation sollten Sie den Zabbix-Agenten in der Windows Diensteverwaltung finden.

Der Zabbix-Agent läuft als Windowsdienst.

Denken Sie auch an die Firewalleinstellungen. Unter Umständen müssen Sie eine neue Regel hinzufügen, die eingehende Verbindungen auf TCP-Port 10050 erlaubt.

Weitere Information zum Zabbix-Agent für Windows finden Sie in der offiziellen Dokumentation unter https://www.zabbix.com/documentation/2.2/manual/appendix/install/windows_agent.

Zabbix-Agent konfigurieren

Der Zabbix-Agent wird unter allen Betriebssystemen über eine Textdatei konfiguriert. Unter Unix-Systemen heißt diese Datei i.d.R. /etc/zabbix/zabbix_agentd.conf.

Unter Microsoft Windows heißt die Datei i.d.R. zabbix_agent.conf. Einen etablierten Speicherort gibt es unter Windows nicht. Wenn Sie den Standards von Microsoft folgen, sollten Sie im Programmordner einen Unterordner Zabbix anlegen und dort auch die Konfigurationsdatei und ggf. auch die Logdatei speichern.

Die Konfigurationsdatei ist dank der zahlreichen und gut verständlichen Kommentare im Grunde selbsterklärend. An dieser Stelle werden daher nur einige wenige Optionen des Zabbix-Agenten erklärt.

Optionen des Zabbix-Agenten, die Sie in die Datei zabbix_agentd.conf eintragen:

PidFile
(Nicht für Windows) Sie sollten hier den für die Distribution üblichen Speicherort für PID-Files angeben. Der Pfad zum PID-File muss ebenfalls im Start-Stop-Skript eingetragen werden. Wenn das PID-File nicht unter /tmp/ oder /var/tmp/ liegt, müssen Sie ggf. die Berechtigung für den Ordner anpassen. Zum Beispiel liegen unter Debian die PID-Files in /var/run/zabbix/zabbix_agentd.pid. Diesen Ordner müssen Sie vor dem ersten Start des Agenten anlegen und mit chown zabbix für den User zabbix schreibbar machen.
LogFile
Datei mit Logmeldungen. Wählen Sie einen üblichen Speicherort wie /var/log/zabbix/zabbix-agent.log. Achten Sie auf die Berechtigungen. Da Zabbix nicht als Root läuft, muss der Ordner vor dem ersten Start existieren und dem User zabbix gehören. Unter Windows müssen Sie immer einen absoluten Pfad angeben, z.B. c:\zabbix.log. Um Fehlern auf die Schliche zu kommen, erhöhen Sie ggf. das DebugLevel, um mehr Informationen ins Log zu schreiben.
EnableRemoteCommands
Wenn EnableRemoteCommands==1, darf der Zabbix-Server über den Agenten beliebige Kommandos ausführen. Wenn diese Option aktiviert ist, gibt es keine weitere Kontrolle, welche Kommandos der Server ausführen darf. Wenn Sie nur eine fest definierte Anzahl von Kommandos zulassen wollen, belassen Sie die Option EnableRemoteCommands auf 0 und definieren Sie die einzelnen erlaubten Kommandos als UserParameter. Das Erlauben von Remote Commands ist eine potentielle Sicherheitslücke und sollte mit Bedacht verwendet werden. Unter Windows werden die Kommandos mit Administratorrechten ausgeführt, unter Unix-Systemen i.d.R. mit den Rechten des unpriviligierten Users zabbix.
Timeout
Wie viel Zeit darf der Agent mit einem Check verbringen? Nach Überschreiten des Timeouts wird der Check abgebrochen und der Status "unsupported" an den Server gemeldet. Der voreingestellte Wert von drei Sekunden ist knapp bemessen. Viele Skripte schaffen es nicht, in dieser Zeit Daten zu liefern. Besonders unter Windows brauchen auch noch so knappe Powershell-Skripte deutlich länger. Wenn Sie nur wenige externe Skripte nutzen, können Sie den Maximalwert 30 einstellen. Wenn Sie viele externe Skripte verwenden, sollten Sie darauf achten, dass sich nicht zu viele Prozesse "stauen", die vom Zabbix-Agenten gestartet werden.
Include
Sie können die Konfiguration des Zabbix-Agenten auf beliebig viele Dateien aufteilen. Über ein Include werden zusätzliche Konfigurationsdateien nachgeladen. Dies ist bei Rollouts auf viele Hosts oft hilfreich.
UnsafeUserParameters
Wenn Sie den Zabbix-Agenten mit Skripten und externen Programmen ergänzen, dürfen Sie diesen externen Programmen nicht alle beliebigen Zeichen als Parameter übergeben. Das Semikolon ist beispielsweise als Parameter nicht erlaubt. So wird verhindert, dass der Start eines zweiten Programms als Option hinter das erste Programm gehängt werden kann. Die folgenden Paramter sind nicht erlaubt: \ ' ” ` * ? [ ] { } ~ $ ! & ; ( ) < > | # @. Siehe auch https://www.zabbix.com/documentation/2.0/manual/config/items/userparameters. Mit der Option UnsafeUserParameters=1 heben Sie den Filter auf und erlauben alle Zeichen.
UserParameter
Diese Option können Sie beliebig oft verwenden. Mit UserParameter geben Sie ein externes Programm an, welches vom Zabbix-Agenten aufgerufen werden soll. Die Ausgabe des externen Programms wird als Item-Value an den Server übertragen. Eine ausführliche Anleitung zur Erweiterung des Agenten mit UserParametern finden Sie unter Zabbix_Agent_erweitern.