2 Compilant l'agent Zabbix 2 sota Windows

Vista general

Aquesta secció ensenya com construir l'agent Zabbix 2 (Windows) a partir de les fonts.

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 per 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

A continuació, 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.4.0.

6. Navegueu fins al directori de compilació de Zabbix (C:\Zabbix\zabbix-7.4.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.4.0\bin\win64 (per a compilacions de 64 bits) o C:\Zabbix\zabbix-7.4.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.4.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.4.0\bin\win64\zabbix_agent2.exe C:\Zabbix\agent2\
       
       # Per a compilacions de 32 bits:
       copieu C:\Zabbix\zabbix-7.4.0\bin\win32\zabbix_agent2.exe C:\Zabbix\agent2\
       
       copieu C:\Zabbix\zabbix-7.4.0\src\go\conf\zabbix_agent2.win.conf C:\Zabbix\agent2\
       xcopy /E /I C:\Zabbix\zabbix-7.4.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.4.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.4.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 col·locar 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.

Instal·lació del compilador MinGW

1. Descarregar MinGW-w64 amb el Gestor d'Excepcions SJLJ (set jump/long jump) i els threads de windows (per exemple x86_64-8.1.0-release-win32-sjlj-rt_v6-rev0.7z)
2. Extreure-ho a c:\mingw
3. Configurar la variable d'entorn

@echo off
       set PATH=%PATH%;c:\mingw\bin
       cmd

Quan compileu, empreu la línia de comandes de Windows enlloc del terminal MSYS proporcionat per MinGW.

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 ordres 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 obtenir 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. A continuació, 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 suprimir 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.4.0.

Si necessiteu generar un arxiu font des del repositori de codi font en brut (per exemple, per aplicar pegats personalitzats o compilar des del codi font més recent), executeu les ordres següents en 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 d'ordres amb privilegis d'administrador. A continuació, 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.4.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.4.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.4.0\bin\win64 (o C:\Zabbix\zabbix-7.4.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.4.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.4.0\bin\win64\zabbix_agent2.exe C:\Zabbix\agent2\
       copy C:\Zabbix\zabbix-7.4.0\src\go\conf\zabbix_agent2.win.conf C:\Zabbix\agent2\
       xcopy /E /I C:\Zabbix\zabbix-7.4.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.