Building Zabbix agent on Windows

Przegląd

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

Instrukcje te 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 (Perl Compatible Regular Expressions; 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.

Kompilowanie agenta Zabbix za pomocą vcpkg

Ta sekcja zawiera instrukcje dotyczące kompilowania 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 zawiera narzędzia wymagane do kompilowania agenta 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 kompilowania agenta Zabbix (pamiętaj, że może to potrwać pewien czas):

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 wypakuj je do C:\Zabbix\zabbix-8.0.0.

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

:: Ustaw ścieżkę instalacji vcpkg:
set vcpkg=C:\Program Files\Zabbix\x64\x64-windows-static

:: Uruchom proces kompilacji:
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 agenta Zabbix, wykonując skrypt:

cd C:\Zabbix\zabbix-8.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-8.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-8.0.0\bin\win64. Plik konfiguracyjny agenta Zabbix znajduje się w C:\Zabbix\zabbix-8.0.0\conf.

Aby uruchomić agenta, skopiuj zabbix_agentd.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-8.0.0\bin\win64\zabbix_agentd.exe C:\Zabbix\agent\
copy C:\Zabbix\zabbix-8.0.0\conf\zabbix_agentd.conf C:\Zabbix\agent\

C:\Zabbix\agent\zabbix_agentd.exe -c C:\Zabbix\agent\zabbix_agentd.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 wypakuj je do C:\Zabbix\openssl-3.5.0.

5. Przejdź do wypakowanego 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 załaduje 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źć rozwiązanie problemu.

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 Zabbix agent

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

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 Zabbix agent (lub inne komponenty); upewnij się, że prawidłowo określono katalogi, w których zainstalowano OpenSSL i PCRE2:

"%ProgramFiles(x86)%\Microsoft Visual Studio\2022\BuildTools\VC\Auxiliary\Build\vcvarsall.bat" x64

cd C:\Zabbix\zabbix-8.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 ująć w cudzysłowy.

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

Aby uruchomić agent, skopiuj zabbix_agentd.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-8.0.0\bin\win64\zabbix_agentd.exe C:\Zabbix\agent\
copy C:\Zabbix\zabbix-8.0.0\conf\zabbix_agentd.conf C:\Zabbix\agent\

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