Building Zabbix agent on Windows

Przegląd

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

Te instrukcje dotyczą wersji Windows, które obsługują Visual Studio 2022.

Budowanie Zabbix agent wymaga:

  • kompilatora C (dołączonego do 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)

Możesz zbudować Zabbix agent, korzystając z jednej z następujących metod:

  • Korzystanie z 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, które wymaga zainstalowania wszystkich zależności przed skompilowaniem agent.
  • W zależności od potrzeb monitorowania mogą być wymagane dodatkowe biblioteki. Więcej informacji można znaleźć w sekcji Wymagania.

Przed rozpoczęciem procesu budowania pamiętaj o następujących kwestiach:

  • Do wykonywania poleceń używaj x64 Native Tools Command Prompt (dołączonego do 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 dla wszystkich plików źródłowych i folderów budowania. Jednak skompilowane komponenty powinny być instalowane w C:\Program Files\Zabbix\x64.

Budowanie Zabbix agent 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 narzędzia wymagane do budowania agent przy użyciu vcpkg:

  • kompilator C (Microsoft Visual C++)
  • narzędzie wiersza poleceń NMake
  • menedżer pakietów vcpkg
  • x64 Native Tools Command Prompt

2. Zainicjuj vcpkg i zainstaluj zależności wymagane do budowania Zabbix agent (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 kodu źródłowego Zabbix i rozpakuj je do C:\Zabbix\zabbix-8.0.0.

4. Przejdź do katalogu budowania Zabbix (C:\Zabbix\zabbix-8.0.0\build\win32\project) i utwórz następujący skrypt build.bat; upewnij się, że poprawnie 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. Skompiluj Zabbix agent, uruchamiając skrypt:

build.bat

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_agent.exe oraz jego plik konfiguracyjny do dedykowanego folderu (na przykład C:\Zabbix\agent), a następnie uruchom agent:

mkdir C:\Zabbix\agent
copy C:\Zabbix\zabbix-8.0.0\bin\win64\zabbix_agent.exe C:\Zabbix\agent\
copy C:\Zabbix\zabbix-8.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.

Instalacja narzędzi kompilacyjnych

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 narzędzia wymagane do ręcznego zbudowania agenta:

  • kompilator C (Microsoft Visual C++)
  • narzędzie wiersza poleceń NMake
  • x64 Native Tools Command Prompt
Instalacja OpenSSL

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

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

2. Zainstaluj moduł Perl Text::Template:

cpanm Text::Template

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

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 kompilacji Zabbix agent w systemie Windows wybierzesz niestandardowy katalog dla OpenSSL (na przykład C:\zabbix lub C:\openssl-64bit), upewnij się, że odebrano uprawnienia do zapisu w tym katalogu użytkownikom niebędącym administratorami. 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-shared powoduje, że biblioteki statyczne 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 konieczna będzie ponowna kompilacja Zabbix agent.
  • Bez opcji no-shared Zabbix korzysta z bibliotek DLL OpenSSL w czasie działania. Oznacza to, że aktualizacje OpenSSL mogą nie wymagać ponownej kompilacji Zabbix agent; jednak podczas kopiowania go na inne komputery należy również skopiować 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 zająć trochę czasu):

Uruchamiaj testy bez uprawnień administracyjnych; 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 rozwiązać problem.

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 komponenty programowe (biblioteki, pliki nagłówkowe, ale bez dokumentacji), możesz użyć 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 kodu źródłowego Zabbix i rozpakuj je do C:\Zabbix\zabbix-8.0.0.

Jeśli chcesz 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:

git clone https://git.zabbix.com/scm/zbx/zabbix.git
cd zabbix
./bootstrap.sh
./configure --enable-agent --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. Przejdź do katalogu kompilacji Zabbix i skompiluj Zabbix agent (lub inne komponenty); upewnij się, że poprawnie określono katalogi, w których zainstalowano OpenSSL i PCRE2:

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"

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_agent.exe oraz 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.win.conf C:\Zabbix\agent\

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