Budowanie Zabbix agent 2 w systemie Windows
Przegląd
Ta strona pokazuje, jak zbudować Zabbix agent 2 ze źródeł w systemie Windows 10 (64-bitowym lub 32-bitowym).
Zarówno wersje 32-bitowe, jak i 64-bitowe można zbudować na platformie 64-bitowej, ale na platformie 32-bitowej można zbudować tylko wersję 32-bitową.
Budowanie Zabbix agent 2 wymaga:
- narzędzi build 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)
Możesz zbudować Zabbix agent 2, korzystając z jednej z następujących metod:
- Użycie vcpkg — zautomatyzowane podejście, które upraszcza zarządzanie zależnościami przy użyciu menedżera pakietów C++.
- Budowanie ręczne — ręczne podejście wymagające zainstalowania wszystkich zależności przed kompilacją agent.
Przed rozpoczęciem procesu budowania pamiętaj o następujących kwestiach:
- Do wykonywania poleceń używaj Wiersza polecenia uruchomionego przez użytkownika z wystarczającymi uprawnieniami do zapisu w chronionych folderach. Jednak podczas instalacji OpenSSL i PCRE2 używaj terminala MSYS2.
- Zaleca się utworzenie katalogu roboczego
C:\Zabbixdla wszystkich plików źródłowych i folderów build. Jednak skompilowane komponenty powinny być instalowane wC:\Zabbix\x64(lubC:\Zabbix\x86dla buildów 32-bitowych).
Budowanie Zabbix agent 2 przy użyciu vcpkg
Ta sekcja zawiera instrukcje dotyczące budowania Zabbix agent przy użyciu vcpkg, menedżera pakietów, który upraszcza zarządzanie zależnościami i integrację z projektami C++.
1. Pobierz i zainstaluj Build Tools for Visual Studio 2022. Podczas instalacji upewnij się, że wybrano obciążenie Desktop development with C++, które zawiera menedżer pakietów vcpkg.
2. Pobierz i zainstaluj Go (dostępny jako instalator MSI).
Podczas instalacji upewnij się, że jako folder instalacyjny wskazano C:\Zabbix\Go.
3. Pobierz dystrybucję MinGW, która używa 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
Następnie rozpakuj ją do C:\Zabbix\mingw64 (lub C:\Zabbix\mingw32 dla kompilacji 32-bitowych).
4. Zainicjuj vcpkg i zainstaluj zależności wymagane do budowania Zabbix agent 2 (pamiętaj, że może to zająć trochę czasu):
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. Pobierz archiwum kodu źródłowego Zabbix i rozpakuj je do C:\Zabbix\zabbix-8.0.0.
6. Przejdź do katalogu budowania 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 Zabbix agent 2, uruchamiając skrypt:
build.bat
Po kompilacji plik binarny Zabbix agent 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 Zabbix agent 2 znajdują się w C:\Zabbix\zabbix-8.0.0\src\go\conf.
Aby uruchomić agent, skopiuj zabbix_agent2.exe oraz jego pliki konfiguracyjne do dedykowanego folderu (np. C:\Zabbix\agent2), a następnie uruchom 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
W razie potrzeby kontynuuj, kompilując wtyczki ładowalne dla Zabbix agent 2.
Kompilowanie ładowalnych wtyczek Zabbix agent 2
1. Pobierz kod źródłowy wtyczki Zabbix zgodny z wersją Zabbix agent 2 (np. zabbix-agent2-plugin-postgresql-8.0.0.tar.gz) i rozpakuj go do C:\Zabbix.
Przed zainstalowaniem wtyczki sprawdź jej plik README. Może on zawierać szczegółowe wymagania i instrukcje instalacji.
2. Przejdź do katalogu rozpakowanej wtyczki i skompiluj wtyczkę:
cd C:\Zabbix\zabbix-agent2-plugin-ember-plus-8.0.0
# Dla kompilacji 64-bitowych:
mingw32-make ARCH=AMD64
# Dla kompilacji 32-bitowych:
mingw32-make ARCH=x86
Po kompilacji plik binarny wtyczki Zabbix agent 2 oraz jego plik konfiguracyjny będą znajdować się w tym samym katalogu wtyczki.
Plik wykonywalny wtyczki można umieścić w dowolnym miejscu, o ile może zostać załadowany przez Zabbix agent 2. Ścieżkę do pliku binarnego wtyczki należy określić w pliku konfiguracyjnym wtyczki, np. w pliku postgresql.conf dla wtyczki PostgreSQL:
Plugins.PostgreSQL.System.Path=/path/to/executable/zabbix-agent2-plugin-postgresql
Ścieżkę do pliku konfiguracyjnego wtyczki należy określić w parametrze Include pliku konfiguracyjnego Zabbix agent 2:
Include=/path/to/plugin/configuration/file/postgresql.conf
Przejdź do sekcji konfiguracja, aby uzyskać więcej informacji o konfigurowaniu 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.
Konfigurowanie narzędzi do budowania
1. Pobierz i zainstaluj MSYS2 (dostępny jako instalator MSI).
Podczas instalacji upewnij się, że jako folder instalacyjny podano C:\Zabbix\msys64.
2. Pobierz i zainstaluj Go (dostępny jako instalator MSI; zobacz obecnie obsługiwane wersje Go).
Podczas instalacji upewnij się, że jako folder instalacyjny podano 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
Następnie rozpakuj ją do C:\Zabbix\mingw64 (lub C:\Zabbix\mingw32 dla kompilacji 32-bitowych).
Instalacja OpenSSL
Aby skompilować agent Zabbix bez obsługi TLS, przejdź do sekcji Installing 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 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żytkownicy niebędący administratorami nie mają uprawnień do zapisu w katalogu C:\Zabbix\x64\OpenSSL-Win64-350-static.
W przeciwnym razie agent będzie ładować ustawienia SSL ze ścieżki, którą mogą modyfikować użytkownicy bez uprawnień, co stwarza potencjalną lukę bezpieczeństwa.
- Opcja
no-sharedpowoduje, że statyczne biblioteki OpenSSL libcrypto.lib i libssl.lib są samowystarczalne, dzięki czemu pliki binarne Zabbix zawierają OpenSSL bez potrzeby używania 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-sharedZabbix korzysta z bibliotek DLL OpenSSL w czasie działania. Oznacza to, że aktualizacje OpenSSL mogą nie wymagać ponownej kompilacji agent Zabbix; jednak podczas kopiowania go na inne komputery należy również skopiować biblioteki DLL OpenSSL.
Aby uzyskać więcej informacji o innych opcjach konfiguracji OpenSSL, zobacz dokumentację OpenSSL.
4. Skonfiguruj i zainstaluj OpenSSL, wykonując skrypt (pamiętaj, że może to zająć trochę czasu):
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
Kompilacja Zabbix agent 2
1. Pobierz archiwum kodu źródłowego Zabbix i rozpakuj je do C:\Zabbix\zabbix-8.0.0.
Jeśli musisz wygenerować archiwum kodu źródłowego z surowego repozytorium źródeł (np. aby zastosować własne poprawki lub zbudować z najnowszego kodu źródłowego), uruchom następujące polecenia na komputerze z systemem 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 --enable-agent2 --enable-ipv6 --prefix=`pwd`
make dist
Spowoduje to utworzenie archiwum kodu źródłowego, które następnie można skopiować na komputer z systemem Windows.
2. Otwórz Wiersz polecenia z uprawnieniami administratora. Następnie przejdź do katalogu kompilacji Zabbix i skompiluj agent Zabbix; pamiętaj, aby poprawnie określić katalogi, w których zainstalowano OpenSSL i PCRE2:
- Dla kompilacji 64-bitowych:
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
# With TLS support:
mingw32-make ARCH=AMD64 PCRE2="C:\Zabbix\x64\PCRE2" OPENSSL="C:\Zabbix\x64\OpenSSL-Win64-350-static"
# Without TLS support:
mingw32-make ARCH=AMD64 PCRE2="C:\Zabbix\x64\PCRE2"
- Dla kompilacji 32-bitowych:
cd C:\Zabbix\zabbix-8.0.0\build\mingw
set PATH=C:\Zabbix\mingw32\bin;%PATH%
# With TLS support:
mingw32-make ARCH=x86 PCRE2="C:\Zabbix\x86\PCRE2" OPENSSL="C:\Zabbix\x86\OpenSSL-Win64-350-static"
# Without TLS support:
mingw32-make ARCH=x86 PCRE2="C:\Zabbix\x86\PCRE2"
Po zakończeniu kompilacji plik binarny Zabbix agent 2 będzie znajdować się w C:\Zabbix\zabbix-8.0.0\bin\win64 (lub C:\Zabbix\zabbix-8.0.0\bin\win32 dla kompilacji 32-bitowych).
Pliki konfiguracyjne Zabbix agent 2 znajdują się w C:\Zabbix\zabbix-8.0.0\src\go\conf.
Aby uruchomić agent, skopiuj plik binarny zabbix_agent2.exe oraz jego pliki konfiguracyjne do dedykowanego folderu (np. C:\Zabbix\agent2), a następnie uruchom 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
W razie potrzeby przejdź dalej do sekcji kompilacja ładowalnych wtyczek Zabbix agent 2.