1 Compilant l'agent Zabbix sota Windows

Visió general

Aquesta pàgina ensenya com compilar l'agent Zabbix des del codi font a Windows 10 (64 bits).

Aquestes instruccions s'apliquen a les versions de Windows que suporten Visual Studio 2022.

Per a la compilació de l'agent Zabbix, cal:

  • Compilador de C (inclòs a Build Tools for Visual Studio 2022)
  • OpenSSL (per a les funcions de xifrat 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 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 enfocament manual que requereix la instal·lació de totes les dependències abans de compilar l'agent.

Segons les vostres necessitats de monitoratge, poden caldre biblioteques addicionals. Per a més informació, consulteu els Requisits.

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

  • Per executar comandes, utilitzeu la línia de comandes de les eines nadiues de x64 (inclosa a les eines de compilació per al Visual Studio 2022), iniciada per un usuari amb permisos suficients per escriure a les carpetes protegides.

  • 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:\Program Files\Zabbix\x64.

Creació de l'agent Zabbix amb vcpkg

Aquesta secció conté instruccions per crear 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 les eines necessàries per crear l'agent amb vcpkg:

  • Compilador de C (Microsoft Visual C++)
  • Eina de línia d'ordres NMake
  • Gestor de paquets vcpkg
  • Indicador d'ordres d'eines natives x64

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

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. Baixeu l'arxiu font de Zabbix i extraieu-lo a C:\Zabbix\zabbix-7.4.0.

4. Navegueu fins al directori de compilació de Zabbix (C:\Zabbix\zabbix-7.4.0\build\win32\project) i creeu el següent script build.bat; Assegureu-vos d'especificar correctament els directoris on s'instal·len OpenSSL i PCRE2:

:: Estableix la ruta d'instal·lació de vcpkg:
       set vcpkg=C:\Program Files\Zabbix\x64\x64-windows-static
       
       :: Executa el procés de compilació:
       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. Compileu l'agent Zabbix executant l'script:

build.bat

Després de la compilació, els binaris dels components Zabbix es trobaran a C:\Zabbix\zabbix-7.4.0\bin\win64. El fitxer de configuració de l'agent Zabbix es troba a C:\Zabbix\zabbix-7.4.0\conf.

Per executar l'agent, copieu zabbix_agent.exe i el seu fitxer de configuració a una carpeta dedicada (per exemple, C:\Zabbix\agent) i després executeu l'agent:

mkdir C:\Zabbix\agent
       copy C:\Zabbix\zabbix-7.4.0\bin\win64\zabbix_agent.exe C:\Zabbix\agent\
       copy C:\Zabbix\zabbix-7.4.0\conf\zabbix_agent.win.conf C:\Zabbix\agent\
       
       C:\Zabbix\agent\zabbix_agent.exe -c C:\Zabbix\agent\zabbix_agent.win.conf

Compilació manual de l'agent de Zabbix

Aquest mètode de compilació de l'agent 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 de Zabbix, que inclouen la instal·lació de les eines i dependències (Perl, OpenSSL, PCRE2) de compilació necessàries i, a continuació, la compilació de l'agent.

Instal·lació d'eines de compilació

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 les eines necessàries per compilar l'agent manualment:

  • Compilador de C (Microsoft Visual C++)
  • Eina de línia d'ordres NMake
  • Indicador d'ordres de x64 Native Tools
Instal·lació d'OpenSSL

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

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

2. Instal·leu el mòdul Perl Text::Template:

cpanm Text::Template

3. Verifiqueu que el Netwide Assembler (NASM; necessari per compilar OpenSSL) s'ha compilat durant la instal·lació de Strawberry Perl:

nasm -v
       # NASM versió 2.16.01 compilada el 3 de maig de 2024

Si el NASM no està compilat, instal·leu-lo manualment. Per a més informació, consulteu la documentació del NASM.

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

5. Navegueu fins al directori extret i configureu OpenSSL, per exemple:

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"

Si trieu un directori personalitzat per a OpenSSL quan compileu l'agent Zabbix a Windows (per exemple, C:\zabbix o C:\openssl-64bit), assegureu-vos de revocar l'accés d'escriptura dels usuaris que no són administradors a aquest directori. Altrament, l'agent carregarà la configuració SSL des d'una ruta que poden modificar els usuaris sense privilegis, cosa que podria resultar en una possible vulnerabilitat de seguretat.

  • L'opció no-shared fa que les biblioteques estàtiques 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 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 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.

6. Compileu OpenSSL i executeu proves (tingueu en compte que això pot trigar una estona):

Executeu les proves sense privilegis d'administrador; en cas contrari, pot provocar resultats inesperats o riscos de seguretat. Si algunes proves fallen, consulteu la documentació d'OpenSSL per a la resolució de problemes.

nmake
       nmake test
       ...
       Totes les proves han estat correctes.
       Fitxers=325, Proves=3101, 822 segons de rellotge de paret (4.81 usr + 0.81 sistema = 5.62 CPU)
       Resultat: APROVAT

7. Instal·leu OpenSSL:

nmake install

Per instal·lar només components de programari (biblioteques, fitxers d'encapçalament, però sense documentació), podeu utilitzar nmake install_sw.

Compilar PCRE

  1. Baixeu la biblioteca PCRE o PCRE2 des del repositori (https://pcre.org).

  2. Extraieu-lo al directori E:\pcre2-10.39.

  3. Instal·leu CMake des de https://cmake.org/download/, en instal·lar seleccioneu i assegureu-vos que cmake\bin estigui al vostre camí (versió provada 3.9.4).

  4. Creeu un nou directori de compilació buit, preferiblement un subdirectori del directori font. Per exemple, E:\pcre2-10.39\build.

  5. Obriu una finestra de línia d'ordres, p. Native Tools x64 Command Prompt per a VS 2017 i des d'aquest entorn de shell executeu cmake-gui. No intenteu iniciar Cmake des del menú Inici de Windows, ja que això pot provocar errors.

  6. Introduïu E:\pcre2-10.39 i E:\pcre2-10.39\build per als directoris font i compilació, respectivament.

  7. Premeu el botó "Configurar".

  8. Quan especifiqueu el generador per a aquest projecte, seleccioneu "NMake Makefiles".

  9. Creeu un nou directori d'instal·lació buit. Per exemple, E:\pcre2-10.39-install.

  10. Tot seguit, la GUI mostrarà diverses opcions de configuració. Assegureu-vos que les opcions següents són triades:

    • PCRE_SUPPORT_UNICODE_PROPERTIES ON
    • PCRE_SUPPORT_UTF ON
    • CMAKE_INSTALL_PREFIX E:\pcre2-10.39-install
  11. Premeu "Configurar" de nou. El botó "Generar" adjacent ara hauria d'ésser actiu.

  12. Premeu "Generar".

  13. En cas d'error, es recomana esborrar la memòria cau de CMake abans d'intentar repetir el procés de creació de CMake. A la GUI de CMake, la memòria cau es pot esborrar seleccionant "Fitxer > Esborrar la memòria cau".

  14. El directori de compilació ara hauria de contindre un sistema de compilació utilitzable - Makefile.

  15. Obriu una finestra de línia d'ordres, p. Native Tools x64 Command Prompt per a VS 2017 i navegueu al Makefile esmentat anteriorment.

  16. Executeu l'ordre NMake:

E:\pcre2-10.39\build> nmake install
Compilació de l'agent 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 fonts 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:

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

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

2. Navegueu fins al directori de compilació de Zabbix i compileu l'agent Zabbix (o altres components); Assegureu-vos d'especificar correctament els directoris on s'instal·len OpenSSL i PCRE2:

cd C:\Zabbix\zabbix-7.4.0\build\win32\project
       
       # Amb suport 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 Fitxers\Zabbix\x64\PCRE2\lib" TLS=openssl TLSINCDIR="C:\Fitxers de programa\Zabbix\x64\OpenSSL\include" TLSLIBDIR="C:\Fitxers de programa\Zabbix\x64\OpenSSL\lib"
       nmake /K -f Makefile_sender PCRE2INCDIR="C:\Fitxers de programa\Zabbix\x64\PCRE2\include" PCRE2LIBDIR="C:\Fitxers de programa\Zabbix\x64\PCRE2\lib" TLS=openssl TLSINCDIR="C:\Fitxers de programa\Zabbix\x64\OpenSSL\include" TLSLIBDIR="C:\Fitxers de programa\Zabbix\x64\OpenSSL\lib"
       
       # Sense suport TLS:
       nmake /K -f Makefile_agent PCRE2INCDIR="C:\Fitxers de programa 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"

Després de la compilació, els binaris dels components de Zabbix es trobaran a C:\Zabbix\zabbix-7.4.0\bin\win64. El fitxer de configuració de l'agent Zabbix es troba a C:\Zabbix\zabbix-7.4.0\conf. Per executar l'agent, copieu zabbix_agent.exe i el seu fitxer de configuració a una carpeta dedicada (per exemple, C:\Zabbix\agent) i després executeu l'agent:

mkdir C:\Zabbix\agent
       copy C:\Zabbix\zabbix-7.4.0\bin\win64\zabbix_agentd.exe C:\Zabbix\agent\
       copy C:\Zabbix\zabbix-7.4.0\conf\zabbix_agentd.win.conf C:\Zabbix\agent\
       
       C:\Zabbix\agent\zabbix_agentd.exe -c C:\Zabbix\agent\zabbix_agentd.win.conf -f