Erstellen des Zabbix Agent unter Windows

Übersicht

Diese Seite zeigt, wie der Zabbix Agent unter Windows 10 (64-Bit) aus dem Quellcode erstellt wird.

Diese Anweisungen gelten für Windows-Versionen, die Visual Studio 2022 unterstützen.

Zum Erstellen des Zabbix Agent werden folgende Komponenten benötigt:

  • C-Compiler (in den Build Tools für Visual Studio 2022 enthalten)
  • OpenSSL (für Verschlüsselungs-Funktionen in Zabbix)
  • PCRE2 (Perl Compatible Regular Expressions; für Funktionen zum Musterabgleich mit regulären Ausdrücken in Zabbix)

Sie können den Zabbix Agent mit einer der folgenden Methoden erstellen:

  • Mit vcpkg – ein automatisierter Ansatz, der die Verwaltung von Abhängigkeiten mithilfe eines C++-Paketmanagers vereinfacht.
  • Manueller Build – ein manueller Ansatz, bei dem vor dem Kompilieren des Agent alle Abhängigkeiten installiert werden müssen.

Abhängig von Ihren Monitoring-Anforderungen können zusätzliche Bibliotheken erforderlich sein. Weitere Informationen finden Sie unter Anforderungen.

Bevor Sie mit dem Build-Prozess beginnen, beachten Sie bitte Folgendes:

  • Verwenden Sie zum Ausführen von Befehlen die x64 Native Tools Command Prompt (in den Build Tools für Visual Studio 2022 enthalten), gestartet von einem Benutzer mit ausreichenden Berechtigungen zum Schreiben in geschützte Ordner.
  • Es wird empfohlen, ein Arbeitsverzeichnis unter C:\Zabbix für alle Quelldateien und Build-Ordner zu erstellen. Kompilierte Komponenten sollten jedoch unter C:\Program Files\Zabbix\x64 installiert werden.

Zabbix Agent mit vcpkg erstellen

Dieser Abschnitt enthält Anweisungen zum Erstellen des Zabbix Agent mit vcpkg, einem Paketmanager, der die Verwaltung von Abhängigkeiten und die Integration in C++-Projekte vereinfacht.

1. Laden Sie Build Tools for Visual Studio 2022 herunter und installieren Sie sie. Stellen Sie während der Installation sicher, dass Sie die Workload Desktop development with C++ auswählen, die die für das Erstellen des Agent mit vcpkg erforderlichen Werkzeuge enthält:

  • C-Compiler (Microsoft Visual C++)
  • NMake-Befehlszeilentool
  • vcpkg-Paketmanager
  • x64 Native Tools Command Prompt

2. Initialisieren Sie vcpkg und installieren Sie die für das Erstellen des Zabbix Agent erforderlichen Abhängigkeiten (beachten Sie, dass dies einige Zeit dauern kann):

cd C:\Zabbix
vcpkg new --application
vcpkg add port pcre2
vcpkg add port openssl
vcpkg install --triplet x64-windows-static --x-install-root="C:\Program Files\Zabbix\x64"

3. Laden Sie das Zabbix-Quellarchiv herunter und entpacken Sie es nach C:\Zabbix\zabbix-8.0.0.

4. Wechseln Sie in das Zabbix-Build-Verzeichnis (C:\Zabbix\zabbix-8.0.0\build\win32\project) und erstellen Sie das folgende Skript build.bat; stellen Sie sicher, dass Sie die Verzeichnisse, in denen OpenSSL und PCRE2 installiert sind, korrekt angeben:

:: Setzen Sie den vcpkg-Installationspfad:
set vcpkg=C:\Program Files\Zabbix\x64\x64-windows-static

:: Führen Sie den Build-Prozess aus:
nmake -f Makefile CPU=AMD64 ^
    PCRE2INCDIR="%vcpkg%\include" ^
    PCRE2LIBDIR="%vcpkg%\lib" ^
    TLS=openssl ^
    TLSINCDIR="%vcpkg%\include" ^
    TLSLIBDIR="%vcpkg%\lib" ^
    LIBS="$(LIBS) Crypt32.lib" ^
    all

5. Kompilieren Sie den Zabbix Agent, indem Sie das Skript ausführen:

build.bat

Nach der Kompilierung befinden sich die Binärdateien der Zabbix-Komponenten in C:\Zabbix\zabbix-8.0.0\bin\win64. Die Konfigurationsdatei des Zabbix Agent befindet sich in C:\Zabbix\zabbix-8.0.0\conf.

Um den Agent auszuführen, kopieren Sie zabbix_agent.exe und seine Konfigurationsdatei in einen eigenen Ordner (z. B. C:\Zabbix\agent) und starten Sie dann den Agent:

mkdir C:\Zabbix\agent
copy C:\Zabbix\zabbix-8.0.0\bin\win64\zabbix_agent.exe C:\Zabbix\agent\
copy C:\Zabbix\zabbix-8.0.0\conf\zabbix_agent.win.conf C:\Zabbix\agent\

C:\Zabbix\agent\zabbix_agent.exe -c C:\Zabbix\agent\zabbix_agent.win.conf

Zabbix Agent manuell erstellen

Diese Methode zum Erstellen des Zabbix Agent ist für Benutzer geeignet, die die vollständige Kontrolle über die Build-Umgebung benötigen oder sich in einer eingeschränkten Umgebung befinden, in der die Verwendung von vcpkg nicht möglich ist.

Dieser Abschnitt enthält Anweisungen zum manuellen Erstellen des Zabbix Agent. Dazu gehören die Installation der erforderlichen Build-Tools und Abhängigkeiten (Perl, OpenSSL, PCRE2) sowie die anschließende Kompilierung des Agent.

Installation der Build-Tools

1. Laden Sie Build Tools for Visual Studio 2022 herunter und installieren Sie sie. Stellen Sie während der Installation sicher, dass Sie die Workload Desktop development with C++ auswählen, die die für das manuelle Erstellen des Agent erforderlichen Werkzeuge enthält:

  • C-Compiler (Microsoft Visual C++)
  • NMake-Befehlszeilentool
  • x64 Native Tools Command Prompt
Installation von OpenSSL

Um den Zabbix Agent ohne TLS-Unterstützung zu kompilieren, fahren Sie mit dem Abschnitt Installing PCRE2 fort.

1. Laden Sie Strawberry Perl herunter und installieren Sie es (als MSI-Installer verfügbar). Stellen Sie während der Installation sicher, dass Sie C:\Zabbix\Strawberry als Installationsordner angeben.

2. Installieren Sie das Perl-Modul Text::Template:

cpanm Text::Template

3. Vergewissern Sie sich, dass der Netwide Assembler (NASM; erforderlich zum Kompilieren von OpenSSL) während der Installation von Strawberry Perl kompiliert wurde:

nasm -v
# NASM version 2.16.01 compiled on May  3 2024

Falls NASM nicht kompiliert wurde, installieren Sie es manuell. Weitere Informationen finden Sie in der NASM-Dokumentation.

4. Laden Sie das OpenSSL-Quellarchiv herunter und entpacken Sie es nach C:\Zabbix\openssl-3.5.0.

5. Wechseln Sie in das entpackte Verzeichnis und konfigurieren Sie OpenSSL, zum Beispiel:

cd C:\Zabbix\openssl-3.5.0
perl Configure VC-WIN64A no-shared no-capieng no-winstore no-srp no-gost no-dgram no-dtls1-method no-dtls1_2-method --api=1.1.0 --prefix="C:\Program Files\Zabbix\x64\OpenSSL" --openssldir="C:\Program Files\Zabbix\x64\OpenSSL"

Wenn Sie beim Kompilieren des Zabbix Agent unter Windows ein benutzerdefiniertes Verzeichnis für OpenSSL wählen (z. B. C:\zabbix oder C:\openssl-64bit), stellen Sie sicher, dass Sie Nicht-Administrator-Benutzern den Schreibzugriff auf dieses Verzeichnis entziehen. Andernfalls lädt der Agent SSL-Einstellungen aus einem Pfad, der von nicht privilegierten Benutzern geändert werden kann, was zu einer potenziellen Sicherheitslücke führt.

  • Die Option no-shared sorgt dafür, dass die statischen OpenSSL-Bibliotheken libcrypto.lib und libssl.lib in sich geschlossen sind, sodass Zabbix-Binärdateien OpenSSL enthalten, ohne externe DLLs zu benötigen. Das bedeutet, dass Zabbix-Binärdateien ohne OpenSSL-Bibliotheken auf andere Windows-Rechner kopiert werden können; wenn jedoch eine neue OpenSSL-Bugfix-Version veröffentlicht wird, muss der Zabbix Agent neu kompiliert werden.
  • Ohne die Option no-shared verwendet Zabbix zur Laufzeit OpenSSL-DLLs. Das bedeutet, dass OpenSSL-Updates möglicherweise keine Neukompilierung des Zabbix Agent erfordern; beim Kopieren auf andere Rechner müssen jedoch auch die OpenSSL-DLLs mitkopiert werden.

Weitere Informationen zu anderen OpenSSL-Konfigurationsoptionen finden Sie in der OpenSSL-Dokumentation.

6. Kompilieren Sie OpenSSL und führen Sie Tests aus (beachten Sie, dass dies einige Zeit dauern kann):

Führen Sie die Tests ohne Administratorrechte aus; andernfalls kann dies zu unerwarteten Ergebnissen oder Sicherheitsrisiken führen. Falls einige Tests fehlschlagen, finden Sie Hinweise zur Fehlerbehebung in der OpenSSL-Dokumentation.

nmake
nmake test
...
All tests successful.
Files=325, Tests=3101, 822 wallclock secs ( 4.81 usr +  0.81 sys =  5.62 CPU)
Result: PASS

7. Installieren Sie OpenSSL:

nmake install

Um nur Softwarekomponenten (Bibliotheken, Header-Dateien, aber keine Dokumentation) zu installieren, können Sie nmake install_sw verwenden.

Installation von PCRE2

1. Laden Sie CMake herunter und installieren Sie es (als MSI-Installer verfügbar). Achten Sie während der Installation darauf, C:\Zabbix\CMake als Installationsordner anzugeben und die Option Add CMake to the PATH environment variable auszuwählen.

2. Laden Sie das PCRE2-Quellarchiv herunter und entpacken Sie es nach C:\Zabbix\pcre2-10.45.

3. Erstellen Sie im entpackten PCRE2-Verzeichnis ein build-Verzeichnis und wechseln Sie dorthin:

mkdir C:\Zabbix\pcre2-10.45\build
cd C:\Zabbix\pcre2-10.45\build

4. Konfigurieren Sie PCRE2:

cmake -G "NMake Makefiles" -DPCRE_SUPPORT_UNICODE_PROPERTIES=ON -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX="C:\Program Files\Zabbix\x64\PCRE2" "C:\Zabbix\pcre2-10.45"

Falls Fehler auftreten, wird empfohlen, den CMake-Cache zu löschen, bevor Sie versuchen, den CMake-Build-Prozess zu wiederholen. Der Cache (CMakeCachecache.txt) befindet sich im build-Verzeichnis des entpackten PCRE2-Verzeichnisses.

5. Erstellen Sie PCRE2 mit NMake:

nmake

6. Installieren Sie PCRE2:

cmake --install .
Zabbix Agent kompilieren

1. Laden Sie das Zabbix-Quellarchiv herunter und entpacken Sie es nach C:\Zabbix\zabbix-8.0.0.

Wenn Sie ein Quellarchiv aus dem rohen Quellcode-Repository erzeugen müssen (z. B. um benutzerdefinierte Patches anzuwenden oder aus dem neuesten Quellcode zu bauen), führen Sie die folgenden Befehle auf einem Linux-Rechner aus:

git clone https://git.zabbix.com/scm/zbx/zabbix.git
cd zabbix
./bootstrap.sh
./configure --enable-agent --enable-ipv6 --prefix=`pwd`
make dist

Dadurch wird ein Quellarchiv erstellt, das anschließend auf einen Windows-Rechner kopiert werden kann.

2. Wechseln Sie in das Zabbix-Build-Verzeichnis und kompilieren Sie den Zabbix Agent (oder andere Komponenten); stellen Sie sicher, dass Sie die Verzeichnisse, in denen OpenSSL und PCRE2 installiert sind, korrekt angeben:

cd C:\Zabbix\zabbix-8.0.0\build\win32\project

# Mit TLS-Unterstützung:
nmake /K -f Makefile_agent PCRE2INCDIR="C:\Program Files\Zabbix\x64\PCRE2\include" PCRE2LIBDIR="C:\Program Files\Zabbix\x64\PCRE2\lib" TLS=openssl TLSINCDIR="C:\Program Files\Zabbix\x64\OpenSSL\include" TLSLIBDIR="C:\Program Files\Zabbix\x64\OpenSSL\lib"
nmake /K -f Makefile_get PCRE2INCDIR="C:\Program Files\Zabbix\x64\PCRE2\include" PCRE2LIBDIR="C:\Program Files\Zabbix\x64\PCRE2\lib" TLS=openssl TLSINCDIR="C:\Program Files\Zabbix\x64\OpenSSL\include" TLSLIBDIR="C:\Program Files\Zabbix\x64\OpenSSL\lib"
nmake /K -f Makefile_sender PCRE2INCDIR="C:\Program Files\Zabbix\x64\PCRE2\include" PCRE2LIBDIR="C:\Program Files\Zabbix\x64\PCRE2\lib" TLS=openssl TLSINCDIR="C:\Program Files\Zabbix\x64\OpenSSL\include" TLSLIBDIR="C:\Program Files\Zabbix\x64\OpenSSL\lib"

# Ohne TLS-Unterstützung:
nmake /K -f Makefile_agent PCRE2INCDIR="C:\Program Files\Zabbix\x64\PCRE2\include" PCRE2LIBDIR="C:\Program Files\Zabbix\x64\PCRE2\lib"
nmake /K -f Makefile_get PCRE2INCDIR="C:\Program Files\Zabbix\x64\PCRE2\include" PCRE2LIBDIR="C:\Program Files\Zabbix\x64\PCRE2\lib"
nmake /K -f Makefile_sender PCRE2INCDIR="C:\Program Files\Zabbix\x64\PCRE2\include" PCRE2LIBDIR="C:\Program Files\Zabbix\x64\PCRE2\lib"

Nach der Kompilierung befinden sich die Binärdateien der Zabbix-Komponenten in C:\Zabbix\zabbix-8.0.0\bin\win64. Die Konfigurationsdatei des Zabbix Agent befindet sich in C:\Zabbix\zabbix-8.0.0\conf.

Um den Agent zu starten, kopieren Sie zabbix_agent.exe und seine Konfigurationsdatei in einen dedizierten Ordner (z. B. C:\Zabbix\agent) und starten Sie dann den Agent:

mkdir C:\Zabbix\agent
copy C:\Zabbix\zabbix-8.0.0\bin\win64\zabbix_agentd.exe C:\Zabbix\agent\
copy C:\Zabbix\zabbix-8.0.0\conf\zabbix_agentd.win.conf C:\Zabbix\agent\

C:\Zabbix\agent\zabbix_agentd.exe -c C:\Zabbix\agent\zabbix_agentd.win.conf -f