2 Compilant l'agent Zabbix 2 sota Windows

Vista general

Aquesta pàgina demostra com compilar l'agent 2 de Zabbix a partir de fonts a Windows 10 (64 bits o 32 bits).

Tant les versions de 32 bits com les de 64 bits es poden compilar en una plataforma de 64 bits, però només la versió de 32 bits es pot compilar en una plataforma de 32 bits.

Per compilar l'agent 2 de Zabbix cal:

  • Eines de compilació MinGW
  • Llenguatge de programació Go
  • OpenSSL (per a les funcions de xifratge a Zabbix)
  • PCRE2 (expressions regulars compatibles amb Perl; per a les funcions de coincidència de patrons d'expressions regulars a Zabbix)

Podeu compilar l'agent 2 de Zabbix mitjançant un dels mètodes següents:

  • Utilitzant vcpkg: un enfocament automatitzat que simplifica la gestió de dependències mitjançant un gestor de paquets C++. - Compilació manual: un mètode manual que requereix la instal·lació de totes les dependències abans de compilar l'agent.

Abans d'iniciar el procés de compilació, tingueu en compte:

  • Per executar ordres, utilitzeu la línia d'ordres, iniciada per un usuari amb permisos suficients per escriure a carpetes protegides. Tanmateix, quan instal·leu OpenSSL i PCRE2, utilitzeu el terminal MSYS2.

  • Es recomana crear un directori de treball a C:\Zabbix per a tots els fitxers font i les carpetes de compilació. Tanmateix, els components compilats s'han d'instal·lar a C:\Zabbix\x64 (o C:\Zabbix\x86 per a compilacions de 32 bits).

Compilació de l'agent Zabbix 2 amb vcpkg

Aquesta secció conté instruccions per compilar l'agent Zabbix amb vcpkg, un gestor de paquets que simplifica la gestió de dependències i la integració amb projectes C++.

1. Baixeu i instal·leu Build Tools for Visual Studio 2022. Durant la instal·lació, assegureu-vos de triar la càrrega de treball Desenvolupament d'escriptori amb C++, que inclou el gestor de paquets vcpkg.

2. Baixeu i instal·leu Go (disponible com a instal·lador MSI). Durant la instal·lació, assegureu-vos d'especificar C:\Zabbix\Go com a carpeta d'instal·lació.

3. Baixeu la distribució MinGW que utilitza la biblioteca d'execució de Microsoft Visual C; per exemple:

  • Per a compilacions de 64 bits: x86_64-15.1.0-release-win32-seh-msvcrt-rt_v12-rev0.7z
  • Per a compilacions de 32 bits: i686-15.1.0-release-win32-dwarf-msvcrt-rt_v12-rev0.7z

Tot seguit, extraieu-la a C:\Zabbix\mingw64 (o C:\Zabbix\mingw32 per a compilacions de 32 bits).

4. Inicialitzeu vcpkg i instal·leu les dependències necessàries per compilar l'agent 2 de Zabbix (tingueu en compte que això pot trigar una estona):

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
       
       # Per a compilacions de 64 bits:
       set PATH=C:\Zabbix\mingw64\bin;%PATH%
       vcpkg install --triplet x64-mingw-static --x-install-root=x64
       
       # Per a compilacions de 32 bits:
       set PATH=C:\Zabbix\mingw32\bin;%PATH%
       vcpkg install --triplet x86-mingw-static --x-install-root=x86

5. Baixeu l'arxiu font de Zabbix i extraieu-lo a C:\Zabbix\zabbix-7.2.0.

6. Navegueu fins al directori de compilació de Zabbix (C:\Zabbix\zabbix-7.2.0\build\mingw) i creeu el següent script build.bat:

  • Per a compilacions de 64 bits:
:: Afegiu MinGW i aneu a la variable `PATH` del sistema per a la sessió actual:
       set PATH=C:\Zabbix\mingw64\bin;%PATH%
       set PATH=C:\Zabbix\Go\bin;%PATH%
       
       :: Establiu la ruta d'instal·lació de vcpkg:
       set vcpkg="C:\Zabbix\x64\x64-mingw-static"
       
       :: Establiu els indicadors d'enllaç per a la biblioteca Crypt32:
       SET CGO_LDFLAGS="-lCrypt32"
       
       :: Executeu el procés de compilació:
       mingw32-make GOFLAGS="-buildvcs=false" ARCH=AMD64 ^
       PCRE2="%vcpkg%" ^
       OPENSSL="%vcpkg%" ^
       all
  • Per a compilacions de 32 bits:
:: Afegiu MinGW i aneu a la variable `PATH` del sistema per a la sessió actual:
       set PATH=C:\Zabbix\mingw32\bin;%PATH%
       set PATH=C:\Zabbix\Go\bin;%PATH%
       
       :: Establiu la ruta d'instal·lació de vcpkg:
       set vcpkg="C:\Zabbix\x86\x86-mingw-static"
       
       :: Establiu els indicadors d'enllaç per a la biblioteca Crypt32:
       SET CGO_LDFLAGS="-lCrypt32"
       
       :: Executeu el procés de compilació:
       mingw32-make GOFLAGS="-buildvcs=false" ARCH=x86 ^
       PCRE2="%vcpkg%" ^
       OPENSSL="%vcpkg%" ^
       tot

7. Compileu l'agent 2 de Zabbix executant l'script:

build.bat

Després de la compilació, el binari de l'agent 2 de Zabbix es trobarà a C:\Zabbix\zabbix-7.2.0\bin\win64 (per a compilacions de 64 bits) o C:\Zabbix\zabbix-7.2.0\bin\win32 (per a compilacions de 32 bits). Els fitxers de configuració de l'agent 2 de Zabbix es troben a C:\Zabbix\zabbix-7.2.0\src\go\conf.

Per executar l'agent, zabbix_agent2.exe i els seus fitxers de configuració a una carpeta dedicada (per exemple, C:\Zabbix\agent2) i després executeu l'agent:

mkdir C:\Zabbix\agent2
       
       # Per a compilacions de 64 bits:
       copieu C:\Zabbix\zabbix-7.2.0\bin\win64\zabbix_agent2.exe C:\Zabbix\agent2\
       
       # Per a compilacions de 32 bits:
       copieu C:\Zabbix\zabbix-7.2.0\bin\win32\zabbix_agent2.exe C:\Zabbix\agent2\
       
       copieu C:\Zabbix\zabbix-7.2.0\src\go\conf\zabbix_agent2.win.conf C:\Zabbix\agent2\
       xcopy /E /I C:\Zabbix\zabbix-7.2.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

Si cal, continueu amb la compilació dels complements carregables de l'agent 2 de Zabbix.

Compilació de complements carregables de l'agent 2 de Zabbix

1. Baixeu el font del complement de Zabbix que coincideixi amb la vostra versió de l'agent 2 de Zabbix (per exemple, zabbix-agent2-plugin-ember-plus-7.2.0.tar.gz) i extraieu-lo a C:\Zabbix.

2. Navegueu fins al directori del complement extret i compileu-lo:

cd C:\Zabbix\zabbix-agent2-plugin-ember-plus-7.2.0
       
       # Per a compilacions de 64 bits:
       mingw32-make ARCH=AMD64
       
       # Per a compilacions de 32 bits:
       mingw32-make ARCH=x86

Després de la compilació, el binari del complement Zabbix agent 2 i el seu fitxer de configuració es trobaran al mateix directori del complement.

L'executable del connector es pot posar a qualsevol lloc sempre que l'agent 2 de Zabbix el pugui carregar. Especifiqueu la ruta al binari del connector al fitxer de configuració del connector, per exemple, a ember.conf per al connector Ember+:

Plugins.EmberPlus.System.Path=/path/to/executable/zabbix-agent2-plugin-ember-plus

La ruta al fitxer de configuració del connector s'ha d'especificar al paràmetre Include del fitxer de configuració de l'agent 2 de Zabbix:

Include=/path/to/plugin/configuration/file/ember.conf

Compilació manual de l'agent 2 de Zabbix

Aquest mètode de compilació de l'agent 2 de Zabbix és adequat per a usuaris que necessiten un control total sobre l'entorn de compilació o que es troben en un entorn restringit on no és possible utilitzar vcpkg.

Aquesta secció conté instruccions per compilar manualment l'agent 2 de Zabbix, que inclouen la instal·lació de les eines i dependències de compilació necessàries i, a continuació, la compilació de l'agent.

Configuració de les eines de compilació

1. Baixeu i instal·leu MSYS2 (disponible com a instal·lador MSI). Durant la instal·lació, assegureu-vos d'especificar C:\Zabbix\msys64 com a carpeta d'instal·lació.

2. Baixeu i instal·leu Go (disponible com a instal·lador MSI; veieu les [versions de Go] actualment compatibles (/manual/installation/requirements#agent-2)). Durant la instal·lació, assegureu-vos d'especificar C:\Zabbix\Go com a carpeta d'instal·lació.

3. Baixeu la distribució MinGW que utilitza la biblioteca d'execució de Microsoft Visual C; per exemple:

  • Per a compilacions de 64 bits: x86_64-15.1.0-release-win32-seh-msvcrt-rt_v12-rev0.7z
  • Per a compilacions de 32 bits: i686-15.1.0-release-win32-dwarf-msvcrt-rt_v12-rev0.7z

A continuació, extraieu-lo a C:\Zabbix\mingw64 (o C:\Zabbix\mingw32 per a compilacions de 32 bits).

Instal·lació d'OpenSSL

Per compilar l'agent Zabbix sense suport TLS, aneu a la secció Instal·lació de PCRE2.

1. Obriu el terminal MSYS2 MSYS amb privilegis d'administrador i executeu les comandes següents:

pacman -S perl-Locale-Maketext-Simple
       pacman -S nasm
       pacman -S make
       pacman -S cmake

2. Baixeu l'arxiu font d'OpenSSL i extraieu-lo a C:\Zabbix\openssl-3.5.0.

3. Navegueu fins al directori OpenSSL extret i creeu el següent script build.sh:

  • Per a compilacions de 64 bits:
#!/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
  • Per a compilacions de 32 bits:
#!/usr/bin/env bash
       
       export PATH="/c/Zabbix/mingw32/bin:$PATH"
       export d="/c/Zabbix/x86/OpenSSL-Win64-350-static"
       
       perl Configura 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

Assegureu-vos de revocar l'accés d'escriptura dels usuaris que no són administradors al directori C:\Zabbix\x64\OpenSSL-Win64-350-static. En cas contrari, l'agent carregarà la configuració SSL des d'una ruta que poden modificar els usuaris sense privilegis, cosa que podria provocar una possible vulnerabilitat de seguretat.

  • L'opció no-shared fa que les biblioteques estàtiques d'OpenSSL libcrypto.lib i libssl.lib siguin autònomes, de manera que els binaris de Zabbix inclouen OpenSSL sense necessitat de DLL externes. Això significa que els binaris de Zabbix es poden copiar a altres màquines Windows sense biblioteques OpenSSL; tanmateix, quan es publiqui una nova versió de correcció d'errors d'OpenSSL, caldrà recompilar l'agent de Zabbix.
  • Sense l'opció no-shared, Zabbix es basa en les DLL d'OpenSSL en temps d'execució. Això significa que les actualitzacions d'OpenSSL poden no requerir la recompilació de l'agent de Zabbix; tanmateix, en copiar-lo a altres màquines, també s'han de copiar les DLL d'OpenSSL.

Per obtindre més informació sobre altres opcions de configuració d'OpenSSL, consulteu la documentació d'OpenSSL.

4. Configureu i instal·leu OpenSSL executant l'script (tingueu en compte que això pot trigar una estona):

cd /c/Zabbix/openssl-3.5.0
       ./build.sh
Instal·lació de PCRE2

1. Baixeu l'arxiu font de PCRE2 i extraieu-lo a C:\Zabbix\pcre2-10.45.

2. Obriu el terminal MSYS2 amb privilegis d'administrador. Tot seguit, creeu un directori build al directori PCRE2 extret i navegueu-hi:

mkdir /c/Zabbix/pcre2-10.45/build
       cd /c/Zabbix/pcre2-10.45/build

3. Configura PCRE2:

# Per a compilacions de 64 bits:
       export PATH="/c/Zabbix/mingw64/bin:$PATH"
       cmake -DCMAKE_C_COMPILER=gcc -DCMAKE_C_FLAGS="-O2 -g" -DCMAKE_INSTALL_PREFIX="/c/Zabbix/x64/PCRE2" ..
       
       # Per a compilacions de 32 bits:
       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" ..

Si es produeix algun error, es recomana esborrar la memòria cau de CMake abans d'intentar repetir el procés de compilació de CMake. La memòria cau (CMakeCachecache.txt) es pot trobar al directori de compilació del directori PCRE2 extret.

4. Instal·leu PCRE2:

make install
Compilació de l'agent 2 de Zabbix

1. Baixeu l'arxiu font de Zabbix i extraieu-lo a C:\Zabbix\zabbix-7.2.0.

Si necessiteu generar un arxiu font des del repositori de fonts en brut (per exemple, per aplicar pegats personalitzats o compilar des del codi font més recent), executeu les comandes següents a una màquina Linux amb Go instal·lat (obligatori per configurar l'agent 2 de Zabbix):

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

Això crearà un arxiu font, que després es podrà copiar a una màquina Windows.

2. Obriu la línia de comandes amb privilegis d'administrador. Tot seguit, navegueu fins al directori de compilació de Zabbix i compileu l'agent Zabbix; Assegureu-vos d'especificar correctament els directoris on s'instal·len OpenSSL i PCRE2:

  • Per a compilacions de 64 bits:
cd C:\Zabbix\zabbix-7.2.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
       
       # Amb suport TLS:
       mingw32-make ARCH=AMD64 PCRE2="C:\Zabbix\x64\PCRE2" OPENSSL="C:\Zabbix\x64\OpenSSL-Win64-350-static"
       
       # Sense suport TLS:
       mingw32-make ARCH=AMD64 PCRE2="C:\Zabbix\x64\PCRE2"
  • Per a compilacions de 32 bits:
cd C:\Zabbix\zabbix-7.2.0\build\mingw
       set PATH=C:\Zabbix\mingw32\bin;%PATH%
       
       # Amb suport TLS:
       mingw32-make ARCH=x86 PCRE2="C:\Zabbix\x86\PCRE2" OPENSSL="C:\Zabbix\x86\OpenSSL-Win64-350-static"
       
       # Sense suport TLS:
       mingw32-make ARCH=x86 PCRE2="C:\Zabbix\x86\PCRE2"

Després de la compilació, el binari de l'agent 2 de Zabbix es trobarà a C:\Zabbix\zabbix-7.2.0\bin\win64 (o C:\Zabbix\zabbix-7.2.0\bin\win32 per a versions de 32 bits).

Els fitxers de configuració de l'agent 2 de Zabbix es troben a C:\Zabbix\zabbix-7.2.0\src\go\conf.

Per executar l'agent, copieu el binari zabbix_agent2.exe i els seus fitxers de configuració a una carpeta dedicada (per exemple, C:\Zabbix\agent2) i després executeu l'agent:

mkdir C:\Zabbix\agent2
       copy C:\Zabbix\zabbix-7.2.0\bin\win64\zabbix_agent2.exe C:\Zabbix\agent2\
       copy C:\Zabbix\zabbix-7.2.0\src\go\conf\zabbix_agent2.win.conf C:\Zabbix\agent2\
       xcopy /E /I C:\Zabbix\zabbix-7.2.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

Si cal, continueu amb compilant els complements carregables de l'agent 2 de Zabbix.