Erstellen von Zabbix Agent 2 unter Windows

Übersicht

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

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

Für die Erstellung von Zabbix Agent 2 benötigen Sie:

  • MinGW-Buildtools
  • Die Programmiersprache Go
  • OpenSSL (für Verschlüsselungs-Funktionen in Zabbix)
  • PCRE2 (Perl-kompatible reguläre Ausdrücke; für Funktionen zum Abgleichen von Mustern mit regulären Ausdrücken in Zabbix)

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

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

Bevor Sie mit dem Erstellungsprozess 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. Verwenden Sie jedoch bei der Installation von OpenSSL und PCRE2 das MSYS2-Terminal.
  • Es wird empfohlen, für alle Quelldateien und Build-Ordner ein Arbeitsverzeichnis unter C:\Zabbix zu erstellen. Die kompilierten Komponenten sollten jedoch in C:\Zabbix\x64 (oder bei 32-Bit-Builds in C:\Zabbix\x86) installiert werden.

Zabbix Agent 2 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 for Visual Studio 2022 herunter und installieren Sie sie. Wählen Sie während der Installation unbedingt die Workload Desktop development with C++ aus, 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 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

Die MinGW-Version muss die Mindestanforderungen erfüllen.

Entpacken 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 zum Erstellen des 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

# Für 64-Bit-Builds:
set PATH=C:\Zabbix\mingw64\bin;%PATH%
vcpkg install --triplet x64-mingw-static --x-install-root=x64

# Für 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 entpacken 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 build.bat-Skript:

  • Für 64-Bit-Builds:
:: MinGW und Go für die aktuelle Sitzung zur Systemvariablen `PATH` hinzufügen:
set PATH=C:\Zabbix\mingw64\bin;%PATH%
set PATH=C:\Zabbix\Go\bin;%PATH%

:: vcpkg-Installationspfad festlegen:
set vcpkg="C:\Zabbix\x64\x64-mingw-static"

:: Linker-Flags für die Crypt32-Bibliothek festlegen:
SET CGO_LDFLAGS="-lCrypt32"

:: Build-Prozess ausführen:
mingw32-make GOFLAGS="-buildvcs=false" ARCH=AMD64 ^
    PCRE2="%vcpkg%" ^
    OPENSSL="%vcpkg%" ^
    all
  • Für 32-Bit-Builds:
:: MinGW und Go für die aktuelle Sitzung zur Systemvariablen `PATH` hinzufügen:
set PATH=C:\Zabbix\mingw32\bin;%PATH%
set PATH=C:\Zabbix\Go\bin;%PATH%

:: vcpkg-Installationspfad festlegen:
set vcpkg="C:\Zabbix\x86\x86-mingw-static"

:: Linker-Flags für die Crypt32-Bibliothek festlegen:
SET CGO_LDFLAGS="-lCrypt32"

:: Build-Prozess ausführen:
mingw32-make GOFLAGS="-buildvcs=false" ARCH=x86 ^
    PCRE2="%vcpkg%" ^
    OPENSSL="%vcpkg%" ^
    all

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

build.bat

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

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

mkdir C:\Zabbix\agent2

# Für 64-Bit-Builds:
copy C:\Zabbix\zabbix-8.0.0\bin\win64\zabbix_agent2.exe C:\Zabbix\agent2\

# Für 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.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.conf

Falls erforderlich, fahren Sie mit der Kompilierung der ladbaren Plugins für den Zabbix Agent 2 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-8.0.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-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 die zugehörige 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 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.

Einrichtung 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

Die MinGW-Version muss die Mindestanforderungen erfüllen.

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

OpenSSL installieren

Um den Zabbix Agent ohne TLS-Unterstützung zu kompilieren, fahren Sie mit dem Abschnitt PCRE2 installieren 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 extrahieren Sie es nach C:\Zabbix\openssl-3.5.0.

3. Wechseln Sie in das extrahierte 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 Nicht-Administratoren der Schreibzugriff auf das Verzeichnis C:\Zabbix\x64\OpenSSL-Win64-350-static entzogen wird. Andernfalls lädt der Agent SSL-Einstellungen aus einem Pfad, der von nicht privilegierten Benutzern geändert werden kann, was eine potenzielle Sicherheitslücke darstellt.

  • Die Option no-shared sorgt dafür, dass libcrypto.lib und libssl.lib eigenständige statische OpenSSL-Bibliotheken sind. Dadurch enthalten Zabbix-Binärdateien OpenSSL, ohne dass externe DLLs erforderlich sind. Das bedeutet, dass Zabbix-Binärdateien auf andere Windows-Computer kopiert werden können, ohne OpenSSL-Bibliotheken mitzukopieren. 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-Updates 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.

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
Kompilieren von Zabbix Agent 2

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

Wenn Sie ein Quellarchiv aus dem unveränderten Quellcode-Repository erstellen müssen (z. B. um benutzerdefinierte Patches anzuwenden oder aus dem neuesten Quellcode zu erstellen), führen Sie die folgenden Befehle auf einem Linux-Computer 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
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 anschließend 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-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-Win32-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 bei 32-Bit-Builds in C:\Zabbix\zabbix-8.0.0\bin\win32). Die Konfigurationsdateien von Zabbix Agent 2 befinden sich in C:\Zabbix\zabbix-8.0.0\src\go\conf.

Um den Agent auszuführen, 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 anschließend 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.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.conf

Fahren Sie bei Bedarf mit dem Kompilieren ladbarer Plugins für Zabbix Agent 2 fort.