Zabbix Agent installieren
Aus Das vierte Labor
Inhaltsverzeichnis |
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 Agent ü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 1.8 sind, sollten Sie nicht mehr verwenden.
Für Nutzer von SuSE, CentOS und RedHat 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- oder DEB-Paket anfertigen.
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 aus den Quellen installieren
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 Agent 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 zabbix_agents_1.8.7.win.zip 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_1.8.7.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
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.
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.
Nach der erfolgreichen Installation sollten Sie den Zabbix Agenten in der Windows Diensteverwaltung finden.
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 http://www.zabbix.com/documentation/1.8/manual/processes/zabbix_agentd_win.
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. Z.B. 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 Konfigdateien 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. Z.B. ist das Semikolon als Parameter nicht erlaubt. So wird verhindert, dass der Start eines zweiten Programms als Option hinter das erste Programm gehängt werden kann. Die komplette Liste der nicht erlaubten Parameter finden Sie hier. http://www.zabbix.com/documentation/1.8/manual/config/user_parameters. 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.

