Budowanie Zabbix agent 2 w systemie Windows

Przegląd

Ta strona przedstawia sposób kompilowania agent 2 Zabbix ze źródeł w systemie Windows 10 (64-bitowym lub 32-bitowym).

Zarówno wersję 32-bitową, jak i 64-bitową można zbudować na platformie 64-bitowej, ale na platformie 32-bitowej można zbudować tylko wersję 32-bitową.

Kompilowanie agent 2 Zabbix wymaga:

  • narzędzi do kompilowania MinGW
  • języka programowania Go
  • OpenSSL (dla funkcji szyfrowania w Zabbix)
  • PCRE2 (Perl Compatible Regular Expressions; dla funkcji dopasowywania wzorców wyrażeń regularnych w Zabbix)

Agent 2 Zabbix można zbudować przy użyciu jednej z następujących metod:

  • Korzystanie z vcpkg — zautomatyzowane podejście upraszczające zarządzanie zależnościami za pomocą menedżera pakietów C++.
  • Kompilowanie ręczne — ręczne podejście wymagające zainstalowania wszystkich zależności przed skompilowaniem agenta.

Przed rozpoczęciem procesu kompilowania należy pamiętać:

  • Do wykonywania poleceń używaj wiersza polecenia uruchomionego przez użytkownika z wystarczającymi uprawnieniami do zapisu w chronionych folderach. Jednak podczas instalowania OpenSSL i PCRE2 używaj terminala MSYS2.
  • Zaleca się utworzenie katalogu roboczego C:\Zabbix na wszystkie pliki źródłowe i foldery kompilowania. Jednak skompilowane komponenty należy zainstalować w C:\Zabbix\x64 (lub C:\Zabbix\x86 w przypadku kompilowania wersji 32-bitowych).

Budowanie agenta Zabbix 2 za pomocą vcpkg

Ta sekcja zawiera instrukcje dotyczące budowania agenta Zabbix za pomocą vcpkg, menedżera pakietów upraszczającego zarządzanie zależnościami i integrację z projektami C++.

1. Pobierz i zainstaluj Build Tools for Visual Studio 2022. Podczas instalacji wybierz obciążenie Desktop development with C++, które obejmuje menedżera pakietów vcpkg.

2. Pobierz i zainstaluj Go (dostępny jako instalator MSI). Podczas instalacji określ C:\Zabbix\Go jako folder instalacyjny.

3. Pobierz dystrybucję MinGW korzystającą z biblioteki wykonawczej Microsoft Visual C; na przykład:

  • Dla kompilacji 64-bitowych: x86_64-15.1.0-release-win32-seh-msvcrt-rt_v12-rev0.7z
  • Dla kompilacji 32-bitowych: i686-15.1.0-release-win32-dwarf-msvcrt-rt_v12-rev0.7z

Wersja MinGW musi spełniać minimalne wymagania.

Następnie wypakuj ją do C:\Zabbix\mingw64 (lub C:\Zabbix\mingw32 dla kompilacji 32-bitowych).

4. Zainicjuj vcpkg i zainstaluj zależności wymagane do zbudowania agenta Zabbix 2 (pamiętaj, że może to potrwać):

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

# Dla kompilacji 64-bitowych:
set PATH=C:\Zabbix\mingw64\bin;%PATH%
vcpkg install --triplet x64-mingw-static --x-install-root=x64

# Dla kompilacji 32-bitowych:
set PATH=C:\Zabbix\mingw32\bin;%PATH%
vcpkg install --triplet x86-mingw-static --x-install-root=x86

5. Pobierz archiwum źródłowe Zabbix i wypakuj je do C:\Zabbix\zabbix-8.0.0.

6. Przejdź do katalogu kompilacji Zabbix (C:\Zabbix\zabbix-8.0.0\build\mingw) i utwórz następujący skrypt build.bat:

  • Dla kompilacji 64-bitowych:
:: 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
  • Dla kompilacji 32-bitowych:
:: 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. Skompiluj agenta Zabbix 2, wykonując skrypt:

build.bat

Po kompilacji plik binarny agenta Zabbix 2 będzie znajdować się w C:\Zabbix\zabbix-8.0.0\bin\win64 (dla kompilacji 64-bitowych) lub C:\Zabbix\zabbix-8.0.0\bin\win32 (dla kompilacji 32-bitowych). Pliki konfiguracyjne agenta Zabbix 2 znajdują się w C:\Zabbix\zabbix-8.0.0\src\go\conf.

Aby uruchomić agenta, skopiuj zabbix_agent2.exe i jego pliki konfiguracyjne do dedykowanego folderu (np. C:\Zabbix\agent2), a następnie uruchom agenta:

mkdir C:\Zabbix\agent2

# Dla kompilacji 64-bitowych:
copy C:\Zabbix\zabbix-8.0.0\bin\win64\zabbix_agent2.exe C:\Zabbix\agent2\

# Dla kompilacji 32-bitowych:
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

W razie potrzeby kontynuuj, kompilując ładowalne wtyczki agenta Zabbix 2.

Kompilowanie ładowalnych wtyczek Zabbix agent 2

1. Pobierz źródła wtyczki Zabbix zgodne z wersją Zabbix agent 2 (np. zabbix-agent2-plugin-postgresql-8.0.0.tar.gz) i rozpakuj je do C:\Zabbix.

Przed zainstalowaniem wtyczki sprawdź plik README. Może on zawierać szczegółowe wymagania i instrukcje instalacji.

2. Przejdź do rozpakowanego katalogu wtyczki i skompiluj wtyczkę:

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

# Dla kompilacji 64-bitowej:
mingw32-make ARCH=AMD64

# Dla kompilacji 32-bitowej:
mingw32-make ARCH=x86

Po kompilacji plik binarny wtyczki Zabbix agent 2 oraz jej plik konfiguracyjny będą znajdować się w tym samym katalogu wtyczki.

Plik wykonywalny wtyczki może znajdować się w dowolnym miejscu, o ile może być załadowany przez Zabbix agent 2. Określ ścieżkę do pliku binarnego wtyczki w pliku konfiguracyjnym wtyczki, np. w pliku postgresql.conf dla wtyczki PostgreSQL:

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

Ścieżka do pliku konfiguracyjnego wtyczki musi być określona w parametrze Include pliku konfiguracyjnego Zabbix agent 2:

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

Przejdź do konfiguracji, aby uzyskać więcej informacji na temat konfigurowania wtyczek.

Ręczne budowanie Zabbix agent 2

Ta metoda budowania Zabbix agent 2 jest odpowiednia dla użytkowników, którzy wymagają pełnej kontroli nad środowiskiem budowania lub działają w ograniczonym środowisku, w którym użycie vcpkg nie jest możliwe.

Ta sekcja zawiera instrukcje dotyczące ręcznego budowania Zabbix agent 2, co obejmuje instalację wymaganych narzędzi do budowania i zależności, a następnie kompilację agenta.

Konfiguracja narzędzi do budowania

1. Pobierz i zainstaluj MSYS2 (dostępny jako instalator MSI). Podczas instalacji upewnij się, że jako folder instalacyjny wskazano C:\Zabbix\msys64.

2. Pobierz i zainstaluj Go (dostępny jako instalator MSI; zobacz aktualnie obsługiwane wersje Go). Podczas instalacji upewnij się, że jako folder instalacyjny wskazano C:\Zabbix\Go.

3. Pobierz dystrybucję MinGW, która korzysta z biblioteki uruchomieniowej Microsoft Visual C; na przykład:

  • Dla kompilacji 64-bitowych: x86_64-15.1.0-release-win32-seh-msvcrt-rt_v12-rev0.7z
  • Dla kompilacji 32-bitowych: i686-15.1.0-release-win32-dwarf-msvcrt-rt_v12-rev0.7z

Wersja MinGW musi spełniać minimalne wymagania.

Następnie rozpakuj ją do C:\Zabbix\mingw64 (lub C:\Zabbix\mingw32 dla kompilacji 32-bitowych).

Instalowanie OpenSSL

Aby skompilować agent Zabbix bez obsługi TLS, przejdź do sekcji Instalowanie PCRE2.

1. Otwórz terminal MSYS2 MSYS z uprawnieniami administratora i uruchom następujące polecenia:

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

2. Pobierz archiwum źródłowe OpenSSL i rozpakuj je do katalogu C:\Zabbix\openssl-3.5.0.

3. Przejdź do rozpakowanego katalogu OpenSSL i utwórz następujący skrypt build.sh:

  • Dla kompilacji 64-bitowych:
#!/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
  • Dla kompilacji 32-bitowych:
#!/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

Upewnij się, że użytkownikom niebędącym administratorami odebrano uprawnienia do zapisu w katalogu C:\Zabbix\x64\OpenSSL-Win64-350-static. W przeciwnym razie agent załaduje ustawienia SSL ze ścieżki, którą mogą modyfikować użytkownicy bez uprawnień administratora, co może prowadzić do luki w zabezpieczeniach.

  • Opcja no-shared sprawia, że biblioteki statyczne OpenSSL libcrypto.lib i libssl.lib są samowystarczalne, dzięki czemu pliki binarne Zabbix zawierają OpenSSL i nie wymagają zewnętrznych bibliotek DLL. Oznacza to, że pliki binarne Zabbix można kopiować na inne komputery z systemem Windows bez bibliotek OpenSSL; jednak po wydaniu nowej wersji OpenSSL zawierającej poprawki błędów agent Zabbix będzie wymagać ponownej kompilacji.
  • Bez opcji no-shared Zabbix korzysta w czasie działania z bibliotek DLL OpenSSL. Oznacza to, że aktualizacje OpenSSL mogą nie wymagać ponownej kompilacji Zabbix; jednak podczas kopiowania go na inne komputery należy skopiować również biblioteki DLL OpenSSL.

Więcej informacji o innych opcjach konfiguracji OpenSSL można znaleźć w dokumentacji OpenSSL.

4. Skonfiguruj i zainstaluj OpenSSL, wykonując skrypt (pamiętaj, że może to potrwać pewien czas):

cd /c/Zabbix/openssl-3.5.0
./build.sh
Instalacja PCRE2

1. Pobierz archiwum źródłowe PCRE2 i rozpakuj je do C:\Zabbix\pcre2-10.45.

2. Otwórz terminal MSYS2 MSYS z uprawnieniami administratora. Następnie utwórz katalog build w rozpakowanym katalogu PCRE2 i przejdź do niego:

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

3. Skonfiguruj PCRE2:

# Dla kompilacji 64-bitowych:
export PATH="/c/Zabbix/mingw64/bin:$PATH"
cmake -DCMAKE_C_COMPILER=gcc -DCMAKE_C_FLAGS="-O2 -g" -DCMAKE_INSTALL_PREFIX="/c/Zabbix/x64/PCRE2" ..

# Dla kompilacji 32-bitowych:
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" ..

Jeśli wystąpią jakiekolwiek błędy, zaleca się usunięcie pamięci podręcznej CMake przed ponowną próbą przeprowadzenia procesu budowania CMake. Pamięć podręczna (CMakeCachecache.txt) może znajdować się w katalogu build rozpakowanego katalogu PCRE2.

4. Zainstaluj PCRE2:

make install
Kompilowanie Zabbix agent 2

1. Pobierz archiwum źródłowe Zabbix i rozpakuj je do C:\Zabbix\zabbix-8.0.0.

Jeśli potrzebujesz wygenerować archiwum źródłowe z surowego repozytorium źródłowego (np. aby zastosować niestandardowe poprawki lub skompilować najnowszy kod źródłowy), uruchom następujące polecenia na komputerze Linux z zainstalowanym Go (wymaganym do konfiguracji Zabbix agent 2):

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

Spowoduje to utworzenie archiwum źródłowego, które można następnie skopiować na komputer z systemem Windows.

2. Otwórz wiersz polecenia z uprawnieniami administratora. Następnie przejdź do katalogu kompilacji Zabbix i skompiluj Zabbix agent; upewnij się, że prawidłowo określono katalogi, w których zainstalowano OpenSSL i PCRE2:

  • Kompilacje 64-bitowe:
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

# Z obsługą TLS:
mingw32-make ARCH=AMD64 PCRE2="C:\Zabbix\x64\PCRE2" OPENSSL="C:\Zabbix\x64\OpenSSL-Win64-350-static"

# Bez obsługi TLS:
mingw32-make ARCH=AMD64 PCRE2="C:\Zabbix\x64\PCRE2"
  • Kompilacje 32-bitowe:
cd C:\Zabbix\zabbix-8.0.0\build\mingw
set PATH=C:\Zabbix\mingw32\bin;%PATH%

# Z obsługą TLS:
mingw32-make ARCH=x86 PCRE2="C:\Zabbix\x86\PCRE2" OPENSSL="C:\Zabbix\x86\OpenSSL-Win32-350-static"

# Bez obsługi TLS:
mingw32-make ARCH=x86 PCRE2="C:\Zabbix\x86\PCRE2"

Po kompilacji plik binarny Zabbix agent 2 będzie znajdować się w C:\Zabbix\zabbix-8.0.0\bin\win64 (lub w C:\Zabbix\zabbix-8.0.0\bin\win32 w przypadku kompilacji 32-bitowych). Pliki konfiguracyjne Zabbix agent 2 znajdują się w C:\Zabbix\zabbix-8.0.0\src\go\conf.

Aby uruchomić agenta, skopiuj plik binarny zabbix_agent2.exe i jego pliki konfiguracyjne do dedykowanego folderu (np. C:\Zabbix\agent2), a następnie uruchom agenta:

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

W razie potrzeby przejdź do sekcji kompilowanie ładowalnych wtyczek Zabbix agent 2.