1 Budowanie Zabbix agent na Windows

Przegląd

Ta strona pokazuje, jak zbudować agent Zabbix ze źródeł w systemie Windows 10 (64-bitowym).

Te instrukcje dotyczą wersji systemu Windows obsługujących Visual Studio 2022.

Do zbudowania agenta Zabbix wymagane są:

  • Kompilator C (zawarty w Build Tools for Visual Studio 2022)
  • 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 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.

W zależności od potrzeb związanych z monitorowaniem mogą być wymagane dodatkowe biblioteki. Więcej informacji można znaleźć w sekcji Wymagania.

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

  • Do wykonywania poleceń należy używać narzędzia „x64 Native Tools Command Prompt” (zawartego w Build Tools for Visual Studio 2022), uruchomionego przez użytkownika z wystarczającymi uprawnieniami do zapisu w chronionych folderach.
  • Zaleca się utworzenie katalogu roboczego C:\Zabbix na wszystkie pliki źródłowe i foldery kompilacji. Jednak skompilowane komponenty powinny zostać zainstalowane w C:\Program Files\Zabbix\x64.

Budowanie agent Zabbix za pomocą vcpkg

Ta sekcja zawiera instrukcje dotyczące budowania agent 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 zawiera narzędzia wymagane do budowania agent za pomocą vcpkg:

  • Kompilator C (Microsoft Visual C++)
  • Narzędzie wiersza poleceń NMake
  • Menedżer pakietów vcpkg
  • „x64 Native Tools Command Prompt”

2. Otwórz cmd.exe z uprawnieniami administratora, zainicjuj vcpkg i zainstaluj zależności wymagane do budowania agent Zabbix (pamiętaj, że może to zająć trochę czasu):

cd C:\Zabbix
vcpkg new --application
vcpkg add port pcre2
vcpkg add port openssl
vcpkg install --triplet x64-windows-static --x-install-root="C:\Program Files\Zabbix\x64"

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

4. Przejdź do katalogu kompilacji Zabbix (C:\Zabbix\zabbix-7.0.0\build\win32\project) i utwórz następujący skrypt build.bat; upewnij się, że prawidłowo określono katalogi, w których zainstalowano OpenSSL i PCRE2:

:: Set vcpkg installation path:
set vcpkg=C:\Program Files\Zabbix\x64\x64-windows-static

:: Run the build process:
nmake -f Makefile CPU=AMD64 ^
    PCRE2INCDIR="%vcpkg%\include" ^
    PCRE2LIBDIR="%vcpkg%\lib" ^
    TLS=openssl ^
    TLSINCDIR="%vcpkg%\include" ^
    TLSLIBDIR="%vcpkg%\lib" ^
    LIBS="$(LIBS) Crypt32.lib" ^
    all

5. Otwórz „x64 Native Tools Command Prompt” i skompiluj Zabbix, wykonując skrypt:

cd C:\Zabbix\zabbix-7.0.0\build\win32\project
build.bat

Jeśli otwarto inny wiersz poleceń, najpierw zainicjuj środowisko kompilacji Visual Studio:

"%ProgramFiles(x86)%\Microsoft Visual Studio\2022\BuildTools\VC\Auxiliary\Build\vcvarsall.bat" x64
cd C:\Zabbix\zabbix-7.0.0\build\win32\project
build.bat

Ścieżki zawierające spacje należy ujmować w cudzysłowy.

Po kompilacji pliki binarne komponentów Zabbix będą znajdować się w C:\Zabbix\zabbix-7.0.0\bin\win64. Plik konfiguracyjny agent Zabbix znajduje się w C:\Zabbix\zabbix-7.0.0\conf.

Aby uruchomić agent, skopiuj zabbix_agent.exe i jego plik konfiguracyjny do dedykowanego folderu (np. C:\Zabbix\agent), a następnie uruchom agent:

mkdir C:\Zabbix\agent
copy C:\Zabbix\zabbix-7.0.0\bin\win64\zabbix_agent.exe C:\Zabbix\agent\
copy C:\Zabbix\zabbix-7.0.0\conf\zabbix_agent.win.conf C:\Zabbix\agent\

C:\Zabbix\agent\zabbix_agent.exe -c C:\Zabbix\agent\zabbix_agent.win.conf

Ręczne budowanie Zabbix agent

Ta metoda budowania Zabbix agent jest odpowiednia dla użytkowników, którzy wymagają pełnej kontroli nad środowiskiem budowania lub znajdują się w środowisku z ograniczeniami, gdzie użycie vcpkg nie jest możliwe.

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

Instalowanie narzędzi do kompilowania

1. Pobierz i zainstaluj Build Tools for Visual Studio 2022. Podczas instalacji wybierz obciążenie Desktop development with C++, które zawiera narzędzia wymagane do ręcznego kompilowania agent:

  • Kompilator C (Microsoft Visual C++)
  • Narzędzie wiersza poleceń NMake
  • „x64 Native Tools Command Prompt”
Instalowanie OpenSSL

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

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

2. Zainstaluj moduł Perl Text::Template:

cpanm Text::Template

3. Sprawdź, czy podczas instalacji Strawberry Perl został skompilowany Netwide Assembler (NASM; wymagany do kompilowania OpenSSL):

nasm -v
# NASM version 2.16.01 compiled on May  3 2024

Jeśli NASM nie został skompilowany, zainstaluj go ręcznie. Więcej informacji znajdziesz w dokumentacji NASM.

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

5. Przejdź do rozpakowanego katalogu i skonfiguruj OpenSSL, na przykład:

cd C:\Zabbix\openssl-3.5.0
perl Configure VC-WIN64A no-shared no-capieng no-winstore no-srp no-gost no-dgram no-dtls1-method no-dtls1_2-method --api=1.1.0 --prefix="C:\Program Files\Zabbix\x64\OpenSSL" --openssldir="C:\Program Files\Zabbix\x64\OpenSSL"

Jeśli podczas kompilowania Zabbix agent w systemie Windows wybierzesz niestandardowy katalog dla OpenSSL (np. C:\zabbix lub C:\openssl-64bit), upewnij się, że użytkownicy niebędący administratorami nie mają uprawnień do zapisu w tym katalogu. W przeciwnym razie agent będzie ładować ustawienia SSL ze ścieżki, którą mogą modyfikować użytkownicy bez uprawnień administratora, co może prowadzić do powstania 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 konieczne będzie ponowne skompilowanie Zabbix agent.
  • Bez opcji no-shared Zabbix korzysta w czasie działania z bibliotek DLL OpenSSL. Oznacza to, że aktualizacje OpenSSL mogą nie wymagać ponownego kompilowania Zabbix agent; jednak podczas kopiowania go na inne komputery należy skopiować również biblioteki DLL OpenSSL.

Więcej informacji o innych opcjach konfiguracji OpenSSL znajdziesz w dokumentacji OpenSSL.

6. Skompiluj OpenSSL i uruchom testy (pamiętaj, że może to potrwać pewien czas):

Uruchom testy bez uprawnień administratora; w przeciwnym razie może to prowadzić do nieoczekiwanych wyników lub zagrożeń bezpieczeństwa. Jeśli niektóre testy zakończą się niepowodzeniem, zapoznaj się z dokumentacją OpenSSL, aby znaleźć informacje dotyczące rozwiązywania problemów.

nmake
nmake test
...
All tests successful.
Files=325, Tests=3101, 822 wallclock secs ( 4.81 usr +  0.81 sys =  5.62 CPU)
Result: PASS

7. Zainstaluj OpenSSL:

nmake install

Aby zainstalować tylko składniki oprogramowania (biblioteki i pliki nagłówkowe, ale bez dokumentacji), możesz użyć polecenia nmake install_sw.

Instalacja PCRE2

1. Pobierz i zainstaluj CMake (dostępny jako instalator MSI). Podczas instalacji upewnij się, że jako folder instalacyjny wskazano C:\Zabbix\CMake, oraz wybierz opcję Add CMake to the PATH environment variable.

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

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

4. Skonfiguruj PCRE2:

cmake -G "NMake Makefiles" -DPCRE_SUPPORT_UNICODE_PROPERTIES=ON -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX="C:\Program Files\Zabbix\x64\PCRE2" "C:\Zabbix\pcre2-10.45"

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) znajduje się w katalogu build rozpakowanego katalogu PCRE2.

5. Zbuduj PCRE2 za pomocą NMake:

nmake

6. Zainstaluj PCRE2:

cmake --install .
Kompilowanie agent

1. Pobierz archiwum źródłowe Zabbix i wypakuj je do C:\Zabbix\zabbix-7.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:

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. Przejdź do katalogu kompilacji Zabbix, otwórz „x64 Native Tools Command Prompt” i skompiluj agent (lub inne komponenty); upewnij się, że prawidłowo określono katalogi, w których zainstalowano OpenSSL i PCRE2:

# Jeśli otwarto inny wiersz polecenia, najpierw zainicjuj środowisko kompilacji Visual Studio:
"%ProgramFiles(x86)%\Microsoft Visual Studio\2022\BuildTools\VC\Auxiliary\Build\vcvarsall.bat" x64

cd C:\Zabbix\zabbix-7.0.0\build\win32\project

# Z obsługą TLS:
nmake /K -f Makefile_agent PCRE2INCDIR="C:\Program Files\Zabbix\x64\PCRE2\include" PCRE2LIBDIR="C:\Program Files\Zabbix\x64\PCRE2\lib" TLS=openssl TLSINCDIR="C:\Program Files\Zabbix\x64\OpenSSL\include" TLSLIBDIR="C:\Program Files\Zabbix\x64\OpenSSL\lib"
nmake /K -f Makefile_get PCRE2INCDIR="C:\Program Files\Zabbix\x64\PCRE2\include" PCRE2LIBDIR="C:\Program Files\Zabbix\x64\PCRE2\lib" TLS=openssl TLSINCDIR="C:\Program Files\Zabbix\x64\OpenSSL\include" TLSLIBDIR="C:\Program Files\Zabbix\x64\OpenSSL\lib"
nmake /K -f Makefile_sender PCRE2INCDIR="C:\Program Files\Zabbix\x64\PCRE2\include" PCRE2LIBDIR="C:\Program Files\Zabbix\x64\PCRE2\lib" TLS=openssl TLSINCDIR="C:\Program Files\Zabbix\x64\OpenSSL\include" TLSLIBDIR="C:\Program Files\Zabbix\x64\OpenSSL\lib"

# Bez obsługi TLS:
nmake /K -f Makefile_agent PCRE2INCDIR="C:\Program Files\Zabbix\x64\PCRE2\include" PCRE2LIBDIR="C:\Program Files\Zabbix\x64\PCRE2\lib"
nmake /K -f Makefile_get PCRE2INCDIR="C:\Program Files\Zabbix\x64\PCRE2\include" PCRE2LIBDIR="C:\Program Files\Zabbix\x64\PCRE2\lib"
nmake /K -f Makefile_sender PCRE2INCDIR="C:\Program Files\Zabbix\x64\PCRE2\include" PCRE2LIBDIR="C:\Program Files\Zabbix\x64\PCRE2\lib"

Ścieżki zawierające spacje należy ujmować w cudzysłowy.

Po kompilacji pliki binarne komponentów Zabbix będą znajdować się w C:\Zabbix\zabbix-7.0.0\bin\win64. Plik konfiguracyjny agenta Zabbix znajduje się w C:\Zabbix\zabbix-7.0.0\conf.

Aby uruchomić agenta, skopiuj zabbix_agent.exe i jego plik konfiguracyjny do dedykowanego folderu (np. C:\Zabbix\agent), a następnie uruchom agenta:

mkdir C:\Zabbix\agent
copy C:\Zabbix\zabbix-7.0.0\bin\win64\zabbix_agentd.exe C:\Zabbix\agent\
copy C:\Zabbix\zabbix-7.0.0\conf\zabbix_agentd.win.conf C:\Zabbix\agent\

C:\Zabbix\agent\zabbix_agentd.exe -c C:\Zabbix\agent\zabbix_agentd.win.conf -f