2 Erstellen von Zabbix Agent 2 unter Windows

Überblick

Diese Seite zeigt, wie Zabbix Agent 2 unter Windows 10 (64-Bit oder 32-Bit) aus den Quellen erstellt wird.

Sowohl 32-Bit- als auch 64-Bit-Versionen können auf einer 64-Bit-Plattform erstellt werden, aber auf einer 32-Bit-Plattform kann nur die 32-Bit-Version erstellt werden.

Für das Erstellen von Zabbix Agent 2 werden folgende Komponenten benötigt:

  • MinGW-Build-Tools
  • Programmiersprache Go
  • OpenSSL (für Verschlüsselungs-Funktionen in Zabbix)
  • PCRE2 (Perl Compatible Regular Expressions; für Funktionen zur Mustererkennung mit regulären Ausdrücken in Zabbix)

Sie können Zabbix Agent 2 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 Agenten alle Abhängigkeiten installiert werden müssen.

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

  • Um Befehle auszuführen, verwenden Sie die Eingabeaufforderung, die von einem Benutzer mit ausreichenden Berechtigungen zum Schreiben in geschützte Ordner gestartet wurde. Verwenden Sie jedoch bei der Installation von OpenSSL und PCRE2 das MSYS2-Terminal.
  • Es wird empfohlen, ein Arbeitsverzeichnis unter C:\Zabbix für alle Quelldateien und Build-Ordner zu erstellen. Kompilierte Komponenten sollten jedoch in C:\Zabbix\x64 installiert werden (oder in C:\Zabbix\x86 für 32-Bit-Builds).

Erstellen von Zabbix agent 2 mit vcpkg

Dieser Abschnitt enthält Anweisungen zum Erstellen von 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. Achten Sie während der Installation darauf, die Workload Desktop development with C++ auszuwählen, die den vcpkg-Paketmanager enthält.

2. Laden Sie Go herunter und installieren Sie es (als MSI-Installer verfügbar). Geben Sie während der Installation unbedingt C:\Zabbix\Go als Installationsordner an.

3. Laden Sie die MinGW-Distribution herunter, die die Microsoft Visual C-Laufzeitbibliothek verwendet; zum Beispiel:

  • Für 64-Bit-Builds: x86_64-15.1.0-release-win32-seh-msvcrt-rt_v12-rev0.7z
  • Für 32-Bit-Builds: i686-15.1.0-release-win32-dwarf-msvcrt-rt_v12-rev0.7z

Extrahieren Sie sie anschließend nach C:\Zabbix\mingw64 (oder für 32-Bit-Builds nach C:\Zabbix\mingw32).

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

cd C:\Zabbix

set PATH=%PATH%;"C:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools\VC\vcpkg"
vcpkg new --application
vcpkg add port pcre2
vcpkg add port libiconv
vcpkg add port openssl

# For 64-bit builds:
set PATH=C:\Zabbix\mingw64\bin;%PATH%
vcpkg install --triplet x64-mingw-static --x-install-root=x64

# For 32-bit builds:
set PATH=C:\Zabbix\mingw32\bin;%PATH%
vcpkg install --triplet x86-mingw-static --x-install-root=x86

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

6. Wechseln Sie in das Zabbix-Build-Verzeichnis (C:\Zabbix\zabbix-7.4.0\build\mingw) und erstellen Sie das folgende build.bat-Skript:

  • Für 64-Bit-Builds:
:: Add MinGW and Go to the system `PATH` variable for the current session:
set PATH=C:\Zabbix\mingw64\bin;%PATH%
set PATH=C:\Zabbix\Go\bin;%PATH%

:: Set vcpkg installation path:
set vcpkg="C:\Zabbix\x64\x64-mingw-static"

:: Set linker flags for Crypt32 library:
SET CGO_LDFLAGS="-lCrypt32"

:: Run the build process:
mingw32-make GOFLAGS="-buildvcs=false" ARCH=AMD64 ^
    PCRE2="%vcpkg%" ^
    OPENSSL="%vcpkg%" ^
    all
  • Für 32-Bit-Builds:
:: Add MinGW and Go to the system `PATH` variable for the current session:
set PATH=C:\Zabbix\mingw32\bin;%PATH%
set PATH=C:\Zabbix\Go\bin;%PATH%

:: Set vcpkg installation path:
set vcpkg="C:\Zabbix\x86\x86-mingw-static"

:: Set linker flags for Crypt32 library:
SET CGO_LDFLAGS="-lCrypt32"

:: Run the build process:
mingw32-make GOFLAGS="-buildvcs=false" ARCH=x86 ^
    PCRE2="%vcpkg%" ^
    OPENSSL="%vcpkg%" ^
    all

7. Kompilieren Sie Zabbix agent 2, indem Sie das Skript ausführen:

build.bat

Nach der Kompilierung befindet sich die Binärdatei von Zabbix agent 2 in C:\Zabbix\zabbix-7.4.0\bin\win64 (für 64-Bit-Builds) oder C:\Zabbix\zabbix-7.4.0\bin\win32 (für 32-Bit-Builds). Die Konfigurationsdateien von Zabbix agent 2 befinden sich in C:\Zabbix\zabbix-7.4.0\src\go\conf.

Um den Agent auszuführen, kopieren Sie zabbix_agent2.exe und die zugehörigen Konfigurationsdateien in einen separaten Ordner (z. B. C:\Zabbix\agent2) und starten Sie dann den Agent:

mkdir C:\Zabbix\agent2

# For 64-bit builds:
copy C:\Zabbix\zabbix-7.4.0\bin\win64\zabbix_agent2.exe C:\Zabbix\agent2\

# For 32-bit builds:
copy C:\Zabbix\zabbix-7.4.0\bin\win32\zabbix_agent2.exe C:\Zabbix\agent2\

copy C:\Zabbix\zabbix-7.4.0\src\go\conf\zabbix_agent2.win.conf C:\Zabbix\agent2\
xcopy /E /I C:\Zabbix\zabbix-7.4.0\src\go\conf\zabbix_agent2.d C:\Zabbix\agent2\zabbix_agent2.d\

C:\Zabbix\agent2\zabbix_agent2.exe -c C:\Zabbix\agent2\zabbix_agent2.win.conf

Falls erforderlich, fahren Sie mit dem Kompilieren von Zabbix agent 2 ladbaren Plugins fort.

Kompilieren von ladbaren Zabbix Agent 2-Plugins

1. Laden Sie den Zabbix-Plugin-Quellcode herunter, der zu Ihrer Zabbix Agent 2-Version passt (z. B. zabbix-agent2-plugin-postgresql-7.4.0.tar.gz), und entpacken Sie ihn nach C:\Zabbix.

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

2. Wechseln Sie in das entpackte Plugin-Verzeichnis und kompilieren Sie das Plugin:

cd C:\Zabbix\zabbix-agent2-plugin-ember-plus-7.4.0

# Für 64-Bit-Builds:
mingw32-make ARCH=AMD64

# Für 32-Bit-Builds:
mingw32-make ARCH=x86

Nach der Kompilierung befinden sich die Plugin-Binärdatei von Zabbix Agent 2 und ihre Konfigurationsdatei im selben Plugin-Verzeichnis.

Die ausführbare Plugin-Datei kann sich an beliebiger Stelle befinden, 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 PostgreSQL-Plugin:

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

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

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

Weitere Details zur Konfiguration von Plugins finden Sie unter Einrichtung.

Zabbix Agent 2 manuell erstellen

Diese Methode zum Erstellen von Zabbix Agent 2 eignet sich für Benutzer, 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 von Zabbix Agent 2. Dazu gehören die Installation der erforderlichen Build-Tools und Abhängigkeiten sowie anschließend das Kompilieren des Agent.

Einrichten der Build-Tools

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

2. Laden Sie Go herunter und installieren Sie es (als MSI-Installer verfügbar; siehe die derzeit unterstützten Go-Versionen). Stellen Sie während der Installation sicher, dass Sie C:\Zabbix\Go als Installationsordner angeben.

3. Laden Sie die MinGW-Distribution herunter, die die Microsoft Visual C-Laufzeitbibliothek verwendet; zum Beispiel:

  • Für 64-Bit-Builds: x86_64-15.1.0-release-win32-seh-msvcrt-rt_v12-rev0.7z
  • Für 32-Bit-Builds: i686-15.1.0-release-win32-dwarf-msvcrt-rt_v12-rev0.7z

Extrahieren Sie sie anschließend nach C:\Zabbix\mingw64 (oder bei 32-Bit-Builds nach C:\Zabbix\mingw32).

Installieren von OpenSSL

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

1. Öffnen Sie das MSYS2-MSYS-Terminal mit Administratorrechten und führen Sie die folgenden Befehle aus:

pacman -S perl-Locale-Maketext-Simple
pacman -S nasm
pacman -S make
pacman -S cmake

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

3. Navigieren Sie zum entpackten OpenSSL-Verzeichnis und erstellen Sie das folgende build.sh-Skript:

  • Für 64-Bit-Builds:
#!/usr/bin/env bash

export PATH="/c/Zabbix/mingw64/bin:$PATH"
export d="/c/Zabbix/x64/OpenSSL-Win64-350-static"

perl Configure mingw64 no-shared no-capieng no-winstore no-srp no-gost no-dgram no-dtls1-method no-dtls1_2-method thread_scheme=winthreads --api=1.1.0 --prefix=$d --openssldir=$d

make
make install
  • Für 32-Bit-Builds:
#!/usr/bin/env bash

export PATH="/c/Zabbix/mingw32/bin:$PATH"
export d="/c/Zabbix/x86/OpenSSL-Win64-350-static"

perl Configure mingw no-shared no-capieng no-winstore no-srp no-gost no-dgram no-dtls1-method no-dtls1_2-method thread_scheme=winthreads --api=1.1.0 --prefix=$d --openssldir=$d

make
make install

Stellen Sie sicher, dass Sie Benutzern ohne Administratorrechte den Schreibzugriff auf das Verzeichnis C:\Zabbix\x64\OpenSSL-Win64-350-static 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 macht die statischen OpenSSL-Bibliotheken libcrypto.lib und libssl.lib eigenständig, sodass Zabbix-Binärdateien OpenSSL ohne externe DLLs enthalten. Das bedeutet, dass Zabbix-Binärdateien auf andere Windows-Computer ohne OpenSSL-Bibliotheken 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 ist Zabbix zur Laufzeit auf OpenSSL-DLLs angewiesen. Das bedeutet, dass OpenSSL-Updates möglicherweise keine Neukompilierung des Zabbix Agent erfordern; beim Kopieren auf andere Computer müssen jedoch auch die OpenSSL-DLLs mitkopiert werden.

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

4. Konfigurieren und installieren Sie OpenSSL, indem Sie das Skript ausführen (beachten Sie, dass dies einige Zeit dauern kann):

cd /c/Zabbix/openssl-3.5.0
./build.sh
Installieren von PCRE2

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

2. Öffnen Sie das MSYS2-MSYS-Terminal mit Administratorrechten. Erstellen Sie dann im entpackten PCRE2-Verzeichnis ein build-Verzeichnis und wechseln Sie in dieses:

mkdir /c/Zabbix/pcre2-10.45/build
cd /c/Zabbix/pcre2-10.45/build

3. Konfigurieren Sie PCRE2:

# Für 64-Bit-Builds:
export PATH="/c/Zabbix/mingw64/bin:$PATH"
cmake -DCMAKE_C_COMPILER=gcc -DCMAKE_C_FLAGS="-O2 -g" -DCMAKE_INSTALL_PREFIX="/c/Zabbix/x64/PCRE2" ..

# Für 32-Bit-Builds:
export PATH="/c/Zabbix/mingw32/bin:$PATH"
cmake -DCMAKE_C_COMPILER=gcc -DCMAKE_C_FLAGS="-m32 -O2 -g" -DCMAKE_EXE_LINKER_FLAGS="-Wl,-mi386pe" -DCMAKE_INSTALL_PREFIX="/c/Zabbix/x86/PCRE2" ..

Wenn Fehler auftreten, wird empfohlen, den CMake-Cache zu löschen, bevor Sie den CMake-Build-Prozess erneut ausführen. Der Cache (CMakeCachecache.txt) befindet sich im Build-Verzeichnis des entpackten PCRE2-Verzeichnisses.

4. Installieren Sie PCRE2:

make install
Kompilieren von Zabbix Agent 2

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

Wenn Sie aus dem reinen Quellcode-Repository ein Quellarchiv 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-System mit installiertem Go aus (erforderlich für die Konfiguration von Zabbix Agent 2):

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

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

2. Öffnen Sie die Eingabeaufforderung mit Administratorrechten. Navigieren Sie dann zum Zabbix-Build-Verzeichnis und kompilieren Sie Zabbix Agent; stellen Sie sicher, dass Sie die Verzeichnisse, in denen OpenSSL und PCRE2 installiert sind, korrekt angeben:

  • Für 64-Bit-Builds:
cd C:\Zabbix\zabbix-7.4.0\build\mingw
set PATH=C:\Zabbix\mingw64\bin;%PATH%
mklink /D C:\Zabbix\x64\OpenSSL-Win64-350-static\lib C:\Zabbix\x64\OpenSSL-Win64-350-static\lib64

# Mit TLS-Unterstützung:
mingw32-make ARCH=AMD64 PCRE2="C:\Zabbix\x64\PCRE2" OPENSSL="C:\Zabbix\x64\OpenSSL-Win64-350-static"

# Ohne TLS-Unterstützung:
mingw32-make ARCH=AMD64 PCRE2="C:\Zabbix\x64\PCRE2"
  • Für 32-Bit-Builds:
cd C:\Zabbix\zabbix-7.4.0\build\mingw
set PATH=C:\Zabbix\mingw32\bin;%PATH%

# Mit TLS-Unterstützung:
mingw32-make ARCH=x86 PCRE2="C:\Zabbix\x86\PCRE2" OPENSSL="C:\Zabbix\x86\OpenSSL-Win64-350-static"

# Ohne TLS-Unterstützung:
mingw32-make ARCH=x86 PCRE2="C:\Zabbix\x86\PCRE2"

Nach der Kompilierung befindet sich die Binärdatei von Zabbix Agent 2 in C:\Zabbix\zabbix-7.4.0\bin\win64 (oder in C:\Zabbix\zabbix-7.4.0\bin\win32 für 32-Bit-Builds). Die Konfigurationsdateien von Zabbix Agent 2 befinden sich in C:\Zabbix\zabbix-7.4.0\src\go\conf.

Um den Agent auszuführen, kopieren Sie die Binärdatei zabbix_agent2.exe und die zugehörigen Konfigurationsdateien in einen separaten Ordner (z. B. C:\Zabbix\agent2) und starten Sie dann den Agent:

mkdir C:\Zabbix\agent2
copy C:\Zabbix\zabbix-7.4.0\bin\win64\zabbix_agent2.exe C:\Zabbix\agent2\
copy C:\Zabbix\zabbix-7.4.0\src\go\conf\zabbix_agent2.win.conf C:\Zabbix\agent2\
xcopy /E /I C:\Zabbix\zabbix-7.4.0\src\go\conf\zabbix_agent2.d C:\Zabbix\agent2\zabbix_agent2.d\

C:\Zabbix\agent2\zabbix_agent2.exe -c C:\Zabbix\agent2\zabbix_agent2.win.conf

Falls erforderlich, fahren Sie mit Kompilieren von ladbaren Zabbix Agent 2-Plugins fort.