Erstellen von Zabbix Agent 2 unter Windows

Übersicht

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, auf einer 32-Bit-Plattform jedoch nur die 32-Bit-Version.

Zum 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 zum Musterabgleich 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 Agent alle Abhängigkeiten installiert werden müssen.

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

  • Verwenden Sie zum Ausführen von Befehlen die Eingabeaufforderung, die von einem Benutzer mit ausreichenden Berechtigungen zum Schreiben in geschützte Ordner gestartet wurde. Bei der Installation von OpenSSL und PCRE2 verwenden Sie jedoch 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 (bzw. 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. Stellen Sie während der Installation sicher, dass Sie die Workload Desktop development with C++ auswählen, die den vcpkg-Paketmanager enthält.

2. Laden Sie Go herunter und installieren Sie es (verfügbar als MSI-Installer). 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 C:\Zabbix\mingw32 für 32-Bit-Builds).

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-8.0.0.

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

  • 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-8.0.0\bin\win64 (für 64-Bit-Builds) oder C:\Zabbix\zabbix-8.0.0\bin\win32 (für 32-Bit-Builds). Die Konfigurationsdateien von Zabbix Agent 2 befinden sich in C:\Zabbix\zabbix-8.0.0\src\go\conf.

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

mkdir C:\Zabbix\agent2

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

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

copy C:\Zabbix\zabbix-8.0.0\src\go\conf\zabbix_agent2.win.conf C:\Zabbix\agent2\
xcopy /E /I C:\Zabbix\zabbix-8.0.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-loadable plugins fort.

Kompilieren von ladbaren Plugins für Zabbix Agent 2

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

Bevor Sie ein Plugin installieren, prüfen Sie bitte dessen 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-8.0.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 Binärdatei des Zabbix Agent 2-Plugins und seine Konfigurationsdatei im selben Plugin-Verzeichnis.

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.

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 die anschließende Kompilierung des Agenten.

Build-Tools einrichten

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

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 C:\Zabbix\Go als Installationsordner angegeben ist.

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 dann nach C:\Zabbix\mingw64 (oder nach C:\Zabbix\mingw32 für 32-Bit-Builds).

Installation von OpenSSL

Um den Zabbix Agent ohne TLS-Unterstützung zu kompilieren, fahren Sie mit dem Abschnitt Installation von 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. Wechseln Sie in das entpackte OpenSSL-Verzeichnis und erstellen Sie das folgende Skript build.sh:

  • 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 Nicht-Administrator-Benutzern 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 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 auf andere Windows-Rechner kopiert werden können, ohne OpenSSL-Bibliotheken mitzukopieren; 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.

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
Installation 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 Verzeichnis build und wechseln Sie dorthin:

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" ..

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 möglicherweise im Build-Verzeichnis des entpackten PCRE2-Verzeichnisses.

4. Installieren Sie PCRE2:

make install
Zabbix Agent 2 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 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-Rechner kopiert werden kann.

2. Öffnen Sie die Eingabeaufforderung mit Administratorrechten. Navigieren Sie dann zum Zabbix-Build-Verzeichnis und kompilieren Sie den Zabbix Agent; achten Sie darauf, die Verzeichnisse, in denen OpenSSL und PCRE2 installiert sind, korrekt anzugeben:

  • Für 64-Bit-Builds:
cd C:\Zabbix\zabbix-8.0.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-8.0.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-8.0.0\bin\win64 (oder C:\Zabbix\zabbix-8.0.0\bin\win32 für 32-Bit-Builds). Die Konfigurationsdateien von Zabbix Agent 2 befinden sich in C:\Zabbix\zabbix-8.0.0\src\go\conf.

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

mkdir C:\Zabbix\agent2
copy C:\Zabbix\zabbix-8.0.0\bin\win64\zabbix_agent2.exe C:\Zabbix\agent2\
copy C:\Zabbix\zabbix-8.0.0\src\go\conf\zabbix_agent2.win.conf C:\Zabbix\agent2\
xcopy /E /I C:\Zabbix\zabbix-8.0.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 ladbarer Plugins für Zabbix Agent 2 fort.