Installation aus den Quellen

Sie können die allerneueste Version von Zabbix erhalten, indem Sie sie aus den Quellen kompilieren. Siehe auch Zabbix-Quellcode beziehen.

Eine Schritt-für-Schritt-Anleitung zur Installation von Zabbix aus den Quellen wird hier bereitgestellt.

Installation von Zabbix-Daemons

1 Quellarchiv herunterladen

Gehen Sie zur Zabbix-Download-Seite und laden Sie das Quellarchiv herunter. Nach dem Herunterladen entpacken Sie die Quellen, indem Sie Folgendes ausführen:

tar -zxvf zabbix-8.0.0.tar.gz

Geben Sie im Befehl die richtige Zabbix-Version an. Sie muss mit dem Namen des heruntergeladenen Archivs übereinstimmen.

2 Benutzerkonto erstellen

Alle Zabbix-Daemon-Prozesse werden unter nicht privilegierten Systembenutzern ausgeführt. Wenn ein Zabbix-Daemon von einem nicht privilegierten Benutzerkonto gestartet wird, läuft er weiterhin unter diesem Benutzer.

In der Standardkonfiguration wechselt ein als root gestarteter Daemon zum Benutzerkonto zabbix, das vorhanden sein muss. Um einen Systembenutzer und eine Gruppe zabbix zu erstellen, führen Sie die unten aufgeführten Befehle aus.

RedHat-basiertes System:

groupadd --system zabbix
useradd --system -g zabbix -d /usr/lib/zabbix -s /sbin/nologin -c "Zabbix Monitoring System" zabbix

Debian-basiertes System:

addgroup --system --quiet zabbix
adduser --quiet --system --disabled-login --ingroup zabbix --home /var/lib/zabbix --no-create-home zabbix

Es ist nicht erforderlich, ein separates Benutzerkonto für das Zabbix Frontend zu erstellen.

Sicherheitsempfehlung

Wenn der Zabbix Server und der Agent auf demselben Rechner ausgeführt werden, wird empfohlen, sie unter separaten Benutzerkonten auszuführen. Wenn beide unter demselben Benutzer ausgeführt werden, kann der Agent auf die Konfigurationsdatei des Servers zugreifen, wodurch vertrauliche Informationen – wie etwa das Datenbankpasswort – für jeden Benutzer mit Admin-Rechten in Zabbix offengelegt werden könnten.

Die Ausführung von Zabbix als root, bin oder unter einem anderen Konto mit besonderen Rechten stellt ein Sicherheitsrisiko dar.

Home-Verzeichnis (optional)

Zabbix-Prozesse benötigen kein Home-Verzeichnis, daher wird dessen Erstellung im Allgemeinen nicht empfohlen. Wenn Sie jedoch Funktionen benötigen, die ein Home-Verzeichnis voraussetzen (zum Beispiel das Speichern von MySQL-Zugangsdaten in $HOME/.my.cnf), können Sie es mit den unten aufgeführten Befehlen erstellen.

Führen Sie auf RedHat-basierten Systemen Folgendes aus:

mkdir -m u=rwx,g=rwx,o= -p /usr/lib/zabbix
chown zabbix:zabbix /usr/lib/zabbix

Führen Sie auf Debian-basierten Systemen Folgendes aus:

mkdir -m u=rwx,g=rwx,o= -p /var/lib/zabbix
chown zabbix:zabbix /var/lib/zabbix
3 Zabbix-Datenbank erstellen

Für die Zabbix-Server- und Proxy-Daemons sowie das Zabbix-Frontend wird eine Datenbank benötigt. Für den Betrieb des Zabbix- Agent ist sie nicht erforderlich.

SQL-Skripte werden bereitgestellt, um das Datenbankschema zu erstellen und den Datensatz einzufügen. Die Zabbix-Proxy-Datenbank benötigt nur das Schema, während die Zabbix-Server-Datenbank zusätzlich zum Schema auch den Datensatz erfordert.

Nachdem Sie eine Zabbix-Datenbank erstellt haben, fahren Sie mit den folgenden Schritten zum Kompilieren von Zabbix fort.

4 Quellen konfigurieren

C99 mit GNU-Erweiterungen ist für das Erstellen von Zabbix Server, Zabbix Proxy oder Zabbix Agent erforderlich. Diese Version kann explizit angegeben werden, indem CFLAGS="-std=gnu99" gesetzt wird:

export CFLAGS="-std=gnu99"

Wenn die Installation aus dem Zabbix Git repository erfolgt, muss zuerst Folgendes ausgeführt werden:\

./bootstrap.sh

Beim Konfigurieren der Quellen für einen Zabbix Server oder Proxy müssen Sie den zu verwendenden Datenbanktyp angeben. Es kann jeweils nur ein Datenbanktyp mit einem Server- oder Proxy-Prozess gleichzeitig kompiliert werden.

Um alle unterstützten Konfigurationsoptionen anzuzeigen, führen Sie im entpackten Zabbix-Quellverzeichnis Folgendes aus:

./configure --help

Um die Quellen für einen Zabbix Server und Agent zu konfigurieren, können Sie zum Beispiel Folgendes ausführen:

./configure --enable-server --enable-agent --with-mysql --enable-ipv6 --with-net-snmp --with-libcurl --with-libxml2 --with-openipmi --with-ares

Um die Quellen für einen Zabbix Server (mit PostgreSQL usw.) zu konfigurieren, können Sie zum Beispiel Folgendes ausführen:

./configure --enable-server --with-postgresql --with-net-snmp

Um die Quellen für einen Zabbix Proxy (mit SQLite usw.) zu konfigurieren, können Sie zum Beispiel Folgendes ausführen:

./configure --prefix=/usr --enable-proxy --with-net-snmp --with-sqlite3 --with-ssh2

Um die Quellen für einen Zabbix Agent zu konfigurieren, können Sie Folgendes ausführen:

./configure --enable-agent

oder für Zabbix Agent 2:

./configure --enable-agent2

Zum Erstellen von Zabbix Agent 2 muss eine unterstützte Go-Version installiert sein.

Hinweise zu Kompilierungsoptionen:

  • --enable-agent - kompiliert Zabbix Agent sowie die Befehlszeilenwerkzeuge Zabbix get und Zabbix sender.
  • --with-libcurl - erforderlich für die Überwachung virtueller Maschinen, SMTP-Authentifizierung und web.page.*-Zabbix Agent-Datenpunkte. Siehe auch: Anforderungen (libcurl).
  • --with-libxml2 - erforderlich für die Überwachung virtueller Maschinen.
  • --with-libpcre2[=DIR] - Zabbix wird immer mit der PCRE2-Bibliothek kompiliert; diese Option ermöglicht nur die Angabe eines benutzerdefinierten Installationspfads für PCRE2.
  • --with-mysql=/path/to/mysql_config - gibt den Pfad zu einer bestimmten Konfiguration der MySQL-Client-Bibliothek an. Nützlich, wenn mehrere Versionen von MySQL oder MariaDB installiert sind.
  • --enable-static - verknüpft Bibliotheken statisch (nicht unterstützt unter Solaris). Verwenden Sie dies, wenn Sie kompilierte Binärdateien auf Systeme ohne die erforderlichen Bibliotheken verteilen möchten. Nicht empfohlen beim Erstellen von Zabbix Server. Um den Server statisch zu erstellen, ist eine statische Version jeder externen Bibliothek erforderlich. Das configure-Skript prüft dies nicht automatisch.
  • --with-stacksize=<value> - legt die Stack-Größe pro Thread in Kilobyte fest (z. B. --with-stacksize=512). Sie können diesen Wert erhöhen, wenn Zabbix aufgrund von Stack-Überläufen abstürzt oder hängen bleibt (z. B. während der Vorverarbeitung auf Systemen mit niedrigen Standardgrenzen für den Thread-Stack).

Wenn ./configure aufgrund fehlender Bibliotheken oder anderer Probleme fehlschlägt, prüfen Sie bitte die Datei config.log auf detaillierte Fehlerinformationen.

Wenn zum Beispiel libssl fehlt, kann die unmittelbare Fehlermeldung irreführend sein:

checking for main in -lmysqlclient... no
configure: error: Not found mysqlclient library

In diesem Fall zeigt config.log die tatsächliche Ursache:

/usr/bin/ld: cannot find -lssl
/usr/bin/ld: cannot find -lcrypto

Siehe auch:

5 Alles erstellen und installieren

Wenn die Installation aus dem Zabbix Git repository erfolgt, muss zunächst Folgendes ausgeführt werden:\

$ make dbschema

make install

Dieser Schritt sollte von einem Benutzer mit ausreichenden Berechtigungen ausgeführt werden (üblicherweise 'root' oder unter Verwendung von sudo).

Durch Ausführen von make install werden standardmäßig die Daemon-Binärdateien (zabbix_server, zabbix_agentd, zabbix_proxy) in /usr/local/sbin und die Client-Binärdateien (zabbix_get, zabbix_sender) in /usr/local/bin installiert.

Um einen anderen Speicherort als /usr/local anzugeben, verwenden Sie im vorherigen Schritt der Quellcode-Konfiguration den Schlüssel --prefix, zum Beispiel --prefix=/home/zabbix. In diesem Fall werden die Daemon-Binärdateien unter <prefix>/sbin und die Dienstprogramme unter <prefix>/bin installiert. Die Manpages werden unter <prefix>/share installiert.

6 Konfigurationsdateien überprüfen und bearbeiten
  • Bearbeiten Sie die Zabbix-Agent-Konfigurationsdatei /usr/local/etc/zabbix_agentd.conf

Sie müssen diese Datei für jeden Host konfigurieren, auf dem zabbix_agentd installiert ist.

Sie müssen die IP-Adresse des Zabbix-Servers in der Datei angeben. Verbindungen von anderen Hosts werden abgelehnt.

  • Bearbeiten Sie die Zabbix-Server-Konfigurationsdatei /usr/local/etc/zabbix_server.conf

Sie müssen den Datenbanknamen, den Benutzer und das Passwort angeben (falls verwendet).

Die übrigen Parameter sind mit ihren Standardwerten für eine kleine Installation (bis zu zehn überwachte Hosts) ausreichend. Sie sollten die Standardparameter jedoch ändern, wenn Sie die Leistung des Zabbix-Servers (oder Proxys) maximieren möchten.

  • Wenn Sie einen Zabbix-Proxy installiert haben, bearbeiten Sie die Proxy-Konfigurationsdatei /usr/local/etc/zabbix_proxy.conf

Sie müssen die IP-Adresse des Servers und den Proxy-Hostnamen angeben (muss dem Server bekannt sein), ebenso wie den Datenbanknamen, den Benutzer und das Passwort (falls verwendet).

Bei SQLite muss der vollständige Pfad zur Datenbankdatei angegeben werden; DB-Benutzer und Passwort sind nicht erforderlich.

7 Daemons starten

Führen Sie zabbix_server auf der Server-Seite aus.

zabbix_server

Stellen Sie sicher, dass Ihr System die Zuweisung von 36 MB (oder etwas mehr) Shared Memory erlaubt, andernfalls startet der Server möglicherweise nicht und Sie sehen „Cannot allocate shared memory for <type of cache>.“ in der Server-Logdatei. Dies kann unter FreeBSD und Solaris 8 passieren.\

Führen Sie zabbix_agentd auf allen überwachten Rechnern aus.

zabbix_agentd

Stellen Sie sicher, dass Ihr System die Zuweisung von 2 MB Shared Memory erlaubt, andernfalls startet der Agent möglicherweise nicht und Sie sehen „Cannot allocate shared memory for collector.“ in der Agent-Logdatei. Dies kann unter Solaris 8 passieren.

Wenn Sie den Zabbix Proxy installiert haben, führen Sie zabbix_proxy aus.

zabbix_proxy

Installation des Zabbix-Web-Interface

Kopieren von PHP-Dateien

Das Zabbix Frontend ist in PHP geschrieben, daher wird für den Betrieb ein PHP-unterstützender Webserver benötigt. Die Installation erfolgt einfach durch Kopieren der PHP-Dateien aus dem Verzeichnis ui in das HTML-Dokumentenverzeichnis des Webservers.

Gängige Speicherorte für HTML-Dokumentenverzeichnisse von Apache-Webservern sind:

  • /usr/local/apache2/htdocs (Standardverzeichnis bei der Installation von Apache aus dem Quellcode)
  • /srv/www/htdocs (OpenSUSE, SLES)
  • /var/www/html (Debian, Ubuntu, Fedora, RHEL)

Es wird empfohlen, ein Unterverzeichnis anstelle des HTML-Wurzelverzeichnisses zu verwenden. Um ein Unterverzeichnis zu erstellen und die Dateien des Zabbix Frontends hineinzukopieren, führen Sie die folgenden Befehle aus und ersetzen Sie dabei <htdocs> durch das tatsächliche Verzeichnis:

mkdir <htdocs>/zabbix
cd ui
cp -a . <htdocs>/zabbix

Wenn Sie eine andere Sprache als Englisch verwenden möchten, finden Sie Anweisungen unter Installation zusätzlicher Frontend-Sprachen.

Installation des Frontends

Informationen zum Installationsassistenten des Zabbix-Frontends finden Sie auf der Seite Installation der Weboberfläche.

Installation ladbarer Plugins für Zabbix Agent 2

Die Installation ladbarer Plugins für Zabbix Agent 2 ist nur erforderlich, wenn Sie Ziele überwachen möchten, die nicht von integrierten Plugins abgedeckt werden (z. B. MongoDB-Server oder -Cluster, PostgreSQL und seine Forks usw.). Eine vollständige Liste der ladbaren Plugins und integrierten Plugins finden Sie hier.

Bevor Sie ein Plugin installieren, prüfen Sie bitte dessen README-Datei. Sie kann spezifische Anforderungen und Installationsanweisungen enthalten.

Um aus den Quellen zu installieren, laden Sie zunächst das Quellarchiv des ladbaren Plugins herunter und entpacken Sie es.

Um das Plugin zu kompilieren, wechseln Sie in das entpackte Plugin-Verzeichnis und führen Sie make aus:

make

Zum Erstellen ladbarer Plugins für Zabbix Agent 2 muss eine unterstützte Go-Version installiert sein.

Die ausführbare Plugin-Datei kann an einem beliebigen Ort abgelegt werden, solange sie von Zabbix Agent 2 geladen werden kann. Geben Sie den Pfad zur Plugin-Binärdatei in der Plugin-Konfigurationsdatei an, z. B. in postgresql.conf für das Plugin PostgreSQL:

Plugins.PostgreSQL.System.Path=/path/to/executable/zabbix-agent2-plugin-postgresql

Der Pfad zur Plugin-Konfigurationsdatei muss im Parameter Include der Zabbix-Agent-2-Konfigurationsdatei angegeben werden:

Include=/path/to/plugin/configuration/file/postgresql.conf

Weitere Informationen zur Konfiguration von Plugins finden Sie unter Einrichtung.

Von Zabbix bereitgestellte ladbare Plugins verwenden einfache Makefiles mit den folgenden Build-Zielen:

  • make - das Plugin erstellen
  • make clean - alle Dateien löschen, die beim Erstellen des Plugins erzeugt werden
  • make check - Selbsttests ausführen (erfordert ein echtes Überwachungsziel, z. B. eine PostgreSQL-Datenbank)
  • make style - den Go-Code-Stil mit golangci-lint prüfen
  • make format - Go-Code mit go fmt formatieren
  • make dist - ein Quellarchiv einschließlich aller Abhängigkeiten erstellen

Installation des Java gateway

Die Installation des Java gateway ist nur erforderlich, wenn Sie JMX-Anwendungen überwachen möchten. Der Java gateway ist schlank und benötigt keine Datenbank.

Für die Installation aus den Quellen müssen Sie zunächst das Quellarchiv herunterladen und entpacken.

Um den Java gateway zu kompilieren, führen Sie das Skript ./configure mit der Option --enable-java aus. Es wird empfohlen, zusätzlich die Option --prefix anzugeben, um einen anderen Installationspfad als den Standardpfad /usr/local festzulegen, da bei der Installation des Java gateway ein kompletter Verzeichnisbaum und nicht nur eine einzelne ausführbare Datei erstellt wird.

./configure --enable-java --prefix=$PREFIX

Um den Java gateway zu kompilieren und in eine JAR-Datei zu paketieren, führen Sie make aus. Beachten Sie, dass Sie für diesen Schritt die ausführbaren Dateien javac und jar in Ihrem Pfad benötigen.

make

Nun haben Sie eine Datei zabbix-java-gateway-$VERSION.jar in src/zabbix_java/bin. Wenn Sie den Java gateway direkt aus src/zabbix_java im Distributionsverzeichnis ausführen möchten, können Sie mit den Anweisungen zur Konfiguration und Ausführung des Java gateway fortfahren. Andernfalls stellen Sie sicher, dass Sie über ausreichende Berechtigungen verfügen, und führen Sie make install aus.

make install

Weitere Details zur Konfiguration und Ausführung des Java gateway finden Sie unter Einrichtung.

Installation des Zabbix-Web-Service

Die Installation des Zabbix-Web-Service ist nur erforderlich, wenn Sie geplante Berichte verwenden möchten.

Für die Installation aus den Quellen müssen Sie zunächst das Quellarchiv herunterladen und entpacken.

Um den Zabbix-Web-Service zu kompilieren, führen Sie das Skript ./configure mit der Option --enable-webservice aus.

Zum Erstellen des Zabbix-Web-Service muss eine unterstützte Go-Version installiert sein.

Führen Sie zabbix_web_service auf dem Rechner aus, auf dem der Web-Service installiert ist:

zabbix_web_service

Weitere Informationen zur Konfiguration der Generierung geplanter Berichte finden Sie unter Einrichtung.

Zabbix-Quellcode beziehen

Es gibt mehrere Möglichkeiten, den Zabbix-Quellcode zu beziehen:

  • Sie können die veröffentlichten stabilen Versionen von der offiziellen Zabbix-Website herunterladen
  • Sie können Nightly Builds von der Entwicklerseite der offiziellen Zabbix-Website herunterladen
  • Sie können die neueste Entwicklungsversion aus dem Git-Quellcode-Repository beziehen:

Zum Klonen des Repositorys muss ein Git-Client installiert sein. Das offizielle Git-Client-Paket für die Befehlszeile heißt in Distributionen üblicherweise git. Um es beispielsweise unter Debian/Ubuntu zu installieren, führen Sie Folgendes aus:

sudo apt-get update
sudo apt-get install git

Um den gesamten Zabbix-Quellcode zu holen, wechseln Sie in das Verzeichnis, in dem Sie den Code ablegen möchten, und führen Sie aus:

git clone https://git.zabbix.com/scm/zbx/zabbix.git

Kompilierungsprobleme

Dies sind die bekannten Probleme bei der Kompilierung von Zabbix aus den Quellen. Für alle anderen Fälle siehe die Seite Bekannte Probleme.

Bibliothek an einem nicht standardmäßigen Speicherort

Zabbix ermöglicht es Ihnen, eine Bibliothek an einem nicht standardmäßigen Speicherort anzugeben. Im folgenden Beispiel führt Zabbix curl-config vom angegebenen nicht standardmäßigen Speicherort aus und verwendet dessen Ausgabe, um die richtige zu verwendende libcurl zu bestimmen.

$ ./configure --enable-server --with-mysql --with-libcurl=/usr/local/bin/curl-config

Dies funktioniert, wenn dies die einzige im System installierte libcurl ist, möglicherweise jedoch nicht, wenn eine weitere libcurl an einem standardmäßigen Speicherort installiert ist (zum Beispiel durch den Paketmanager). Dies ist der Fall, wenn Sie für Zabbix eine neuere Version der Bibliothek benötigen und die ältere für andere Anwendungen.

Daher funktioniert die Angabe einer Komponente an einem nicht standardmäßigen Speicherort nicht immer, wenn dieselbe Komponente auch an einem standardmäßigen Speicherort vorhanden ist.

Wenn Sie beispielsweise eine neuere in /usr/local installierte libcurl verwenden, während das libcurl-Paket weiterhin installiert ist, könnte Zabbix die falsche Bibliothek auswählen und die Kompilierung schlägt fehl:

usr/bin/ld: ../../src/libs/zbxhttp/libzbxhttp.a(http.o): in function 'zbx_http_convert_to_utf8':
/tmp/zabbix-master/src/libs/zbxhttp/http.c:957: undefined reference to 'curl_easy_header'
collect2: error: ld returned 1 exit status

Hier ist die Funktion curl_easy_header() in der älteren /usr/lib/x86_64-linux-gnu/libcurl.so nicht verfügbar, jedoch in der neueren /usr/local/lib/libcurl.so.

Das Problem liegt in der Reihenfolge der Linker-Flags, und eine Lösung besteht darin, den vollständigen Pfad zur Bibliothek in einer LDFLAGS-Variablen anzugeben:

$ LDFLAGS="-Wl,--no-as-needed /usr/local/lib/libcurl.so" ./configure --enable-server --with-mysql --with-libcurl=/usr/local/bin/curl-config

Beachten Sie die Option -Wl,--no-as-needed, die auf einigen Systemen erforderlich sein kann (siehe auch: Standard-Linking-Optionen auf Debian-basierten Systemen).

Stack-Größe auf einigen Systemen zu klein

Wenn Zabbix aufgrund von Stack-Überläufen abstürzt oder einfriert, können Sie die Stack-Größe pro Thread mit der Option --with-stacksize erhöhen, wenn Sie die Quellen konfigurieren. Dieses Problem kann auf Systemen mit niedrigen Standardgrenzen für den Thread-Stack auftreten, insbesondere während der Vorverarbeitung, bei der mehrere Threads erstellt werden.

Das folgende Beispiel setzt die Stack-Größe auf 512 KB pro Thread:

./configure --enable-server --with-mysql --with-stacksize=512

Sie können die Systemgrenzen für den Thread-Stack zur Laufzeit mit dem Befehl ulimit -s auf Linux-basierten Systemen prüfen.