Building Zabbix agent on Windows

Pārskats

Šajā lapā ir parādīts, kā būvēt Zabbix aģents no pirmkoda operētājsistēmā Windows 10 (64 bitu).

Šīs instrukcijas attiecas uz Windows versijām, kas atbalsta Visual Studio 2022.

Lai būvētu Zabbix aģents, ir nepieciešams:

  • C kompilators (iekļauts Build Tools for Visual Studio 2022)
  • OpenSSL (Zabbix šifrēšanas funkcijām)
  • PCRE2 (Perl Compatible Regular Expressions; regulāro izteiksmju šablonu saskaņošanas funkcijām Zabbix)

Jūs varat būvēt Zabbix aģents, izmantojot vienu no šīm metodēm:

  • Izmantojot vcpkg — automatizēta pieeja, kas vienkāršo atkarību pārvaldību, izmantojot C++ pakotņu pārvaldnieku.
  • Manuāla būvēšana — manuāla pieeja, kurā pirms aģents kompilēšanas ir jāinstalē visas atkarības.

Atkarībā no jūsu uzraudzības vajadzībām var būt nepieciešamas papildu bibliotēkas. Plašāku informāciju skatiet sadaļā Prasības.

Pirms būvēšanas procesa sākšanas, lūdzu, ņemiet vērā:

  • Lai izpildītu komandas, izmantojiet x64 Native Tools Command Prompt (iekļauts Build Tools for Visual Studio 2022), ko palaiž lietotājs ar pietiekamām atļaujām rakstīšanai aizsargātās mapēs.
  • Ieteicams izveidot darba direktoriju C:\Zabbix visiem pirmkoda failiem un būvēšanas mapēm. Tomēr kompilētie komponenti jāinstalē mapē C:\Program Files\Zabbix\x64.

Zabbix aģenta būvēšana ar vcpkg

Šajā sadaļā ir sniegtas instrukcijas Zabbix aģenta būvēšanai ar vcpkg — pakotņu pārvaldnieku, kas vienkāršo atkarību pārvaldību un integrāciju ar C++ projektiem.

1. Lejupielādējiet un instalējiet Build Tools for Visual Studio 2022. Instalēšanas laikā noteikti atlasiet Desktop development with C++ darba slodzi, kas ietver rīkus, kuri nepieciešami aģenta būvēšanai ar vcpkg:

  • C kompilators (Microsoft Visual C++)
  • NMake komandrindas rīks
  • vcpkg pakotņu pārvaldnieks
  • x64 Native Tools Command Prompt

2. Inicializējiet vcpkg un instalējiet atkarības, kas nepieciešamas Zabbix aģenta būvēšanai (ņemiet vērā, ka tas var aizņemt kādu laiku):

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. Lejupielādējiet Zabbix pirmkoda arhīvu un izpakojiet to uz C:\Zabbix\zabbix-8.0.0.

4. Pārejiet uz Zabbix būvēšanas direktoriju (C:\Zabbix\zabbix-8.0.0\build\win32\project) un izveidojiet šādu build.bat skriptu; noteikti pareizi norādiet direktorijus, kuros ir instalēti OpenSSL un 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. Kompilējiet Zabbix aģentu, izpildot skriptu:

build.bat

Pēc kompilēšanas Zabbix komponentu binārie faili atradīsies C:\Zabbix\zabbix-8.0.0\bin\win64. Zabbix aģenta konfigurācijas fails atrodas C:\Zabbix\zabbix-8.0.0\conf.

Lai palaistu aģentu, nokopējiet zabbix_agent.exe un tā konfigurācijas failu uz atsevišķu mapi (piemēram, C:\Zabbix\agent) un pēc tam palaidiet aģentu:

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

Zabbix aģenta manuāla būvēšana

Šī Zabbix aģenta būvēšanas metode ir piemērota lietotājiem, kuriem nepieciešama pilnīga kontrole pār būvēšanas vidi vai kuri strādā ierobežotā vidē, kur vcpkg izmantošana nav iespējama.

Šajā sadaļā ir sniegtas instrukcijas Zabbix aģenta manuālai būvēšanai, kas ietver nepieciešamo būvēšanas rīku un atkarību (Perl, OpenSSL, PCRE2) instalēšanu un pēc tam aģenta kompilēšanu.

Būvēšanas rīku instalēšana

1. Lejupielādējiet un instalējiet Build Tools for Visual Studio 2022. Instalēšanas laikā noteikti atlasiet Desktop development with C++ darba slodzi, kas ietver rīkus, kuri nepieciešami, lai manuāli būvētu aģents:

  • C kompilators (Microsoft Visual C++)
  • NMake komandrindas rīks
  • x64 Native Tools Command Prompt
OpenSSL instalēšana

Lai kompilētu Zabbix aģents bez TLS atbalsta, pārejiet uz sadaļu PCRE2 instalēšana.

1. Lejupielādējiet un instalējiet Strawberry Perl (pieejams kā MSI instalētājs). Instalēšanas laikā noteikti norādiet C:\Zabbix\Strawberry kā instalēšanas mapi.

2. Instalējiet Text::Template Perl moduli:

cpanm Text::Template

3. Pārbaudiet, vai Netwide Assembler (NASM; nepieciešams OpenSSL kompilēšanai) tika kompilēts Strawberry Perl instalēšanas laikā:

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

Ja NASM nav kompilēts, instalējiet to manuāli. Papildinformāciju skatiet NASM dokumentācijā.

4. Lejupielādējiet OpenSSL pirmkoda arhīvu un izpakojiet to uz C:\Zabbix\openssl-3.5.0.

5. Pārejiet uz izpakoto direktoriju un konfigurējiet OpenSSL, piemēram:

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"

Ja, kompilējot Zabbix aģents operētājsistēmā Windows, OpenSSL izvēlaties pielāgotu direktoriju (piemēram, C:\zabbix vai C:\openssl-64bit), noteikti atņemiet rakstīšanas piekļuvi šim direktorijam lietotājiem bez administratora tiesībām. Pretējā gadījumā aģents ielādēs SSL iestatījumus no ceļa, ko var mainīt lietotāji bez paaugstinātām tiesībām, radot iespējamu drošības ievainojamību.

  • Opcija no-shared padara libcrypto.lib un libssl.lib OpenSSL statiskās bibliotēkas pašpietiekamas, tāpēc Zabbix binārie faili ietver OpenSSL bez nepieciešamības pēc ārējiem DLL. Tas nozīmē, ka Zabbix bināros failus var kopēt uz citām Windows iekārtām bez OpenSSL bibliotēkām; tomēr, kad tiek izlaista jauna OpenSSL kļūdu labojumu versija, Zabbix aģents būs jāpārkompilē.
  • Bez opcijas no-shared Zabbix izpildlaikā paļaujas uz OpenSSL DLL. Tas nozīmē, ka OpenSSL atjauninājumiem var nebūt nepieciešama Zabbix aģents pārkompilēšana; tomēr, kopējot to uz citām iekārtām, būs jākopē arī OpenSSL DLL.

Papildinformāciju par citām OpenSSL konfigurācijas opcijām skatiet OpenSSL dokumentācijā.

6. Kompilējiet OpenSSL un palaidiet testus (ņemiet vērā, ka tas var aizņemt kādu laiku):

Palaidiet testus bez administratora privilēģijām; pretējā gadījumā tas var izraisīt neparedzētus rezultātus vai drošības riskus. Ja daži testi neizdodas, problēmu novēršanai skatiet OpenSSL dokumentāciju.

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. Instalējiet OpenSSL:

nmake install

Lai instalētu tikai programmatūras komponentus (bibliotēkas, galveņu failus, bet ne dokumentāciju), varat izmantot nmake install_sw.

PCRE2 instalēšana

1. Lejupielādējiet un instalējiet CMake (pieejams kā MSI instalētājs). Instalēšanas laikā noteikti norādiet C:\Zabbix\CMake kā instalēšanas mapi un atlasiet opciju Add CMake to the PATH environment variable.

2. Lejupielādējiet PCRE2 pirmkoda arhīvu un izpakojiet to uz C:\Zabbix\pcre2-10.45.

3. Izveidojiet build direktoriju izpakotajā PCRE2 direktorijā un pārejiet uz to:

mkdir C:\Zabbix\pcre2-10.45\build
cd C:\Zabbix\pcre2-10.45\build

4. Konfigurējiet 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"

Ja rodas kādas kļūdas, pirms mēģināt atkārtot CMake būvēšanas procesu, ieteicams dzēst CMake kešatmiņu. Kešatmiņa (CMakeCachecache.txt) var atrasties izpakotā PCRE2 direktorija build direktorijā.

5. Būvējiet PCRE2, izmantojot NMake:

nmake

6. Instalējiet PCRE2:

cmake --install .
Zabbix aģenta kompilēšana

1. Lejupielādējiet Zabbix pirmkoda arhīvu un izpakojiet to uz C:\Zabbix\zabbix-8.0.0.

Ja jums ir nepieciešams ģenerēt pirmkoda arhīvu no neapstrādātas pirmkoda repozitorija versijas (piemēram, lai lietotu pielāgotus ielāpus vai veidotu no jaunākā pirmkoda), izpildiet šādas komandas Linux datorā:

git clone https://git.zabbix.com/scm/zbx/zabbix.git
cd zabbix
./bootstrap.sh
./configure --enable-agent --enable-ipv6 --prefix=`pwd`
make dist

Tādējādi tiks izveidots pirmkoda arhīvs, kuru pēc tam var nokopēt uz Windows datoru.

2. Pārejiet uz Zabbix būvēšanas direktoriju un kompilējiet Zabbix aģentu (vai citus komponentus); pārliecinieties, ka pareizi norādāt direktorijus, kuros ir instalēti OpenSSL un PCRE2:

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

# Ar TLS atbalstu:
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 TLS atbalsta:
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"

Pēc kompilēšanas Zabbix komponentu binārie faili atradīsies C:\Zabbix\zabbix-8.0.0\bin\win64. Zabbix aģenta konfigurācijas fails atrodas C:\Zabbix\zabbix-8.0.0\conf.

Lai palaistu aģentu, nokopējiet zabbix_agent.exe un tā konfigurācijas failu uz atsevišķu mapi (piemēram, C:\Zabbix\agent) un pēc tam palaidiet aģentu:

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