2 Budowanie Zabbix agent 2 w systemie Windows
Omówienie
Ta strona pokazuje, jak zbudować agent Zabbix 2 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ą.
Do zbudowania agenta Zabbix 2 wymagane są:
- narzędzia kompilacyjne MinGW
- język programowania Go
- OpenSSL (dla funkcji szyfrowania w Zabbix)
- PCRE2 (wyrażenia regularne zgodne z Perlem; dla funkcji dopasowywania wzorców wyrażeń regularnych w Zabbix)
Agenta Zabbix 2 można zbudować przy użyciu jednej z następujących metod:
- Użycie vcpkg - zautomatyzowane podejście upraszczające zarządzanie zależnościami za pomocą menedżera pakietów C++.
- Kompilacja ręczna - ręczne podejście wymagające zainstalowania wszystkich zależności przed skompilowaniem agenta.
Przed rozpoczęciem procesu kompilacji 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:\Zabbixna wszystkie pliki źródłowe i foldery kompilacji. Jednak skompilowane komponenty powinny zostać zainstalowane wC:\Zabbix\x64(lubC:\Zabbix\x86w przypadku kompilacji 32-bitowych).
Kompilacja Zabbix agent 2 z użyciem vcpkg
Ta sekcja zawiera instrukcje dotyczące kompilacji Zabbix agent z użyciem 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 zaznaczono 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 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 w przypadku kompilacji 32-bitowych).
4. Zainicjuj vcpkg i zainstaluj zależności wymagane do kompilacji Zabbix agent 2 (uwaga: 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
# 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 źródeł Zabbix i rozpakuj je do C:\Zabbix\zabbix-7.4.0.
6. Przejdź do katalogu kompilacji Zabbix (C:\Zabbix\zabbix-7.4.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-7.4.0\bin\win64 (dla kompilacji 64-bitowych) lub C:\Zabbix\zabbix-7.4.0\bin\win32 (dla kompilacji 32-bitowych).
Pliki konfiguracyjne Zabbix agent 2 znajdują się w C:\Zabbix\zabbix-7.4.0\src\go\conf.
Aby uruchomić agenta, skopiuj zabbix_agent2.exe oraz jego pliki konfiguracyjne do dedykowanego folderu (np. C:\Zabbix\agent2), a następnie uruchom agenta:
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
W razie potrzeby kontynuuj, kompilując wtyczki ładowalne dla Zabbix agent 2.
Kompilowanie ładowalnych wtyczek Zabbix agent 2
1. Pobierz źródła wtyczki Zabbix, które odpowiadają wersji Twojego Zabbix agent 2 (np. zabbix-agent2-plugin-postgresql-7.4.0.tar.gz), i rozpakuj je do C:\Zabbix.
Przed zainstalowaniem wtyczki sprawdź jej 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-7.4.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ć podana 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 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 kompilacji lub znajdują się w środowisku o ograniczeniach, w którym użycie vcpkg nie jest możliwe.
Ta sekcja zawiera instrukcje dotyczące ręcznego budowania Zabbix agent 2, obejmujące instalację wymaganych narzędzi i zależności kompilacyjnych, a następnie skompilowanie agenta.
Konfiguracja narzędzi do budowania
1. Pobierz i zainstaluj MSYS2 (dostępny jako instalator MSI).
Podczas instalacji upewnij się, że jako folder instalacyjny zostanie wskazany 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 zostanie wskazany 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ć agenta 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 wypakuj je do C:\Zabbix\openssl-3.5.0.
3. Przejdź do wypakowanego katalogu OpenSSL i utwórz następujący skrypt build.sh:
- W przypadku 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
- W przypadku 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 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-sharedsprawia, ż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-sharedZabbix 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 na temat innych opcji 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
Instalowanie 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-bitowej:
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-bitowej:
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ą powtórzenia procesu kompilacji 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-7.4.0.
Jeśli musisz 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-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
# 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-7.4.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-7.4.0\bin\win64 (lub w C:\Zabbix\zabbix-7.4.0\bin\win32 w przypadku kompilacji 32-bitowych).
Pliki konfiguracyjne Zabbix agent 2 znajdują się w C:\Zabbix\zabbix-7.4.0\src\go\conf.
Aby uruchomić agenta, skopiuj plik binarny zabbix_agent2.exe oraz jego pliki konfiguracyjne do dedykowanego folderu (np. C:\Zabbix\agent2), a następnie uruchom agenta:
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
W razie potrzeby przejdź do sekcji kompilowanie ładowalnych wtyczek Zabbix agent 2.