1 Erstellen des Zabbix Agent auf 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.

Für die Erstellung des Zabbix Agent werden folgende Komponenten benötigt:

  • C-Compiler (in den Build Tools für Visual Studio 2022 enthalten)
  • OpenSSL (für Verschlüsselungsfunktionen in Zabbix)
  • PCRE2 (Perl-kompatible reguläre Ausdrücke; für Funktionen zum Abgleichen von Mustern regulärer Ausdrücke in Zabbix)

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

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

Je nach Ihren Überwachungsanforderungen können zusätzliche Bibliotheken erforderlich sein. Weitere Informationen finden Sie unter Anforderungen.

Beachten Sie vor Beginn des Erstellungsprozesses 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), die von einem Benutzer mit ausreichenden Berechtigungen zum Schreiben in geschützte Ordner gestartet wurde.
  • Es wird empfohlen, ein Arbeitsverzeichnis unter C:\Zabbix für alle Quelldateien und Build-Ordner zu erstellen. Die kompilierten 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 die Build Tools für Visual Studio 2022 herunter und installieren Sie sie. Wählen Sie während der Installation unbedingt die Workload Desktopentwicklung mit C++ aus. Sie enthält die für das Erstellen des Agent mit vcpkg erforderlichen Tools:

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

2. Öffnen Sie cmd.exe mit Administratorrechten, initialisieren Sie vcpkg und installieren Sie die für das Erstellen des Zabbix Agent erforderlichen Abhängigkeiten (dies kann einige Zeit dauern):

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 extrahieren Sie es nach C:\Zabbix\zabbix-7.0.0.

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

:: Set vcpkg installation path:
set vcpkg=C:\Program Files\Zabbix\x64\x64-windows-static

:: Run the build process:
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. Öffnen Sie die „x64 Native Tools Command Prompt“ und kompilieren Sie den Zabbix Agent, indem Sie das Skript ausführen:

cd C:\Zabbix\zabbix-7.0.0\build\win32\project
build.bat

Wenn Sie eine andere Eingabeaufforderung geöffnet haben, initialisieren Sie zuerst die Build-Umgebung von Visual Studio:

"%ProgramFiles(x86)%\Microsoft Visual Studio\2022\BuildTools\VC\Auxiliary\Build\vcvarsall.bat" x64
cd C:\Zabbix\zabbix-7.0.0\build\win32\project
build.bat

Pfade, die Leerzeichen enthalten, müssen in Anführungszeichen eingeschlossen werden.

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

Um den Agent auszuführen, kopieren Sie zabbix_agent.exe und die zugehörige Konfigurationsdatei in einen dedizierten Ordner (z. B. C:\Zabbix\agent) und starten Sie anschließend den Agent:

mkdir C:\Zabbix\agent
copy C:\Zabbix\zabbix-7.0.0\bin\win64\zabbix_agent.exe C:\Zabbix\agent\
copy C:\Zabbix\zabbix-7.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.

Installieren der Buildtools

1. Laden Sie Build Tools for Visual Studio 2022 herunter und installieren Sie sie. Wählen Sie während der Installation unbedingt die Workload Desktopentwicklung mit C++ aus, die die für die manuelle Erstellung des Agent erforderlichen Tools enthält:

  • C-Compiler (Microsoft Visual C++)
  • NMake-Befehlszeilentool
  • „x64 Native Tools Command Prompt“
OpenSSL installieren

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

1. Laden Sie Strawberry Perl herunter und installieren Sie es (als MSI-Installationsprogramm verfügbar). Geben Sie während der Installation C:\Zabbix\Strawberry als Installationsordner an.

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

cpanm Text::Template

3. Überprüfen Sie, ob der Netwide Assembler (NASM; für die Kompilierung von OpenSSL erforderlich) während der Installation von Strawberry Perl kompiliert wurde:

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

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

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

5. Wechseln Sie in das extrahierte 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 auswählen (z. B. C:\zabbix oder C:\openssl-64bit), stellen Sie sicher, dass Sie Nicht-Administratoren 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ühren kann.

  • Die Option no-shared macht libcrypto.lib und libssl.lib zu eigenständigen statischen OpenSSL-Bibliotheken, sodass Zabbix-Binärdateien OpenSSL enthalten und keine externen DLLs benötigen. Das bedeutet, dass Zabbix-Binärdateien auf andere Windows-Computer kopiert werden können, ohne OpenSSL-Bibliotheken zu benötigen. Wenn jedoch eine neue OpenSSL-Fehlerbehebungsversion veröffentlicht wird, muss der Zabbix Agent neu kompiliert werden.
  • Ohne die Option no-shared ist Zabbix zur Laufzeit auf OpenSSL-DLLs angewiesen. Das bedeutet, dass OpenSSL-Aktualisierungen möglicherweise keine Neukompilierung des Zabbix Agent erfordern. Beim Kopieren auf andere Computer müssen jedoch auch die OpenSSL-DLLs kopiert werden.

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

6. Kompilieren Sie OpenSSL und führen Sie die 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. Wenn einige Tests fehlschlagen, finden Sie Informationen 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 und Headerdateien, jedoch 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 .
Kompilieren des Zabbix Agent

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

Wenn Sie ein Quellarchiv aus dem unaufbereiteten Quellcode-Repository erstellen müssen (z. B. um benutzerdefinierte Patches anzuwenden oder den neuesten Quellcode zu kompilieren), führen Sie die folgenden Befehle auf einem Linux-Computer aus:

git clone https://git.zabbix.com/scm/zbx/zabbix.git
cd zabbix
./bootstrap.sh
./configure
make dist

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

2. Navigieren Sie zum Zabbix-Build-Verzeichnis, öffnen Sie die „x64 Native Tools Command Prompt“ 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:

# Wenn Sie eine andere Eingabeaufforderung geöffnet haben, initialisieren Sie zuerst die Visual-Studio-Buildumgebung:
"%ProgramFiles(x86)%\Microsoft Visual Studio\2022\BuildTools\VC\Auxiliary\Build\vcvarsall.bat" x64

cd C:\Zabbix\zabbix-7.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"

Pfade, die Leerzeichen enthalten, müssen in Anführungszeichen eingeschlossen werden.

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

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

mkdir C:\Zabbix\agent
copy C:\Zabbix\zabbix-7.0.0\bin\win64\zabbix_agentd.exe C:\Zabbix\agent\
copy C:\Zabbix\zabbix-7.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