Esta sección muestra cómo compilar los binarios del agente de Windows de Zabbix desde el código fuente con o sin TLS.
Esta sección contiene instrucciones para compilar el agente Zabbix con vcpkg, un gestor de paquetes que simplifica la gestión de dependencias y la integración con proyectos C++.
1. Descargue e instale Build Tools for Visual Studio 2022. Durante la instalación, asegúrese de seleccionar la carga de trabajo Desarrollo de escritorio con C++, que incluye las herramientas necesarias para compilar el agente con vcpkg:
2. Inicialice vcpkg e instale las dependencias necesarias para compilar el agente Zabbix (tenga en cuenta que esto puede llevar algún tiempo):
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. Descargue el archivo fuente de Zabbix y extráigalo en C:\Zabbix\zabbix-7.4.0
.
4. Navegue al directorio de compilación de Zabbix (C:\Zabbix\zabbix-7.4.0\build\win32\project
) y cree el siguiente script build.bat
; asegúrese de especificar correctamente los directorios donde están instalados OpenSSL y PCRE2:
:: Establecer la ruta de instalación de vcpkg:
set vcpkg=C:\Program Files\Zabbix\x64\x64-windows-static
:: Ejecutar el proceso de compilación:
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. Compile el agente Zabbix ejecutando el script:
Después de la compilación, los binarios de los componentes de Zabbix se encontrarán en C:\Zabbix\zabbix-7.4.0\bin\win64
. El archivo de configuración del agente Zabbix se encuentra en C:\Zabbix\zabbix-7.4.0\conf
.
Para ejecutar el agente, copie zabbix_agent.exe
y su archivo de configuración a una carpeta dedicada (por ejemplo, C:\Zabbix\agent
) y luego ejecute el agente:
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
Este método de compilación del agente Zabbix es adecuado para usuarios que requieren un control total sobre el entorno de compilación o se encuentran en un entorno restringido donde usar vcpkg no es posible.
Esta sección contiene instrucciones para compilar el agente Zabbix manualmente, lo que incluye instalar las herramientas de compilación y dependencias necesarias (Perl, OpenSSL, PCRE2), y luego compilar el agente.
1. Descargue e instale Build Tools para Visual Studio 2022. Durante la instalación, asegúrese de seleccionar la carga de trabajo Desarrollo de escritorio con C++, que incluye las herramientas necesarias para compilar el agente manualmente:
Para compilar el agente Zabbix sin soporte TLS, continúe con la sección Instalando PCRE2.
1. Descargue e instale Strawberry Perl (disponible como instalador MSI). Durante la instalación, asegúrese de especificar C:\Zabbix\Strawberry
como la carpeta de instalación.
2. Instale el módulo Perl Text::Template
:
3. Verifique que el Netwide Assembler (NASM; requerido para compilar OpenSSL), se haya compilado durante la instalación de Strawberry Perl:
Si NASM no está compilado, instálelo manualmente. Para más información, consulte la documentación de NASM.
4. Descargue el archivo fuente de OpenSSL y extráigalo en C:\Zabbix\openssl-3.5.0
.
5. Navegue al directorio extraído y configure OpenSSL, por ejemplo:
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 elige un directorio personalizado para OpenSSL al compilar el agente Zabbix en Windows (por ejemplo, C:\zabbix
o C:\openssl-64bit
), asegúrese de revocar el acceso de escritura a los usuarios que no sean administradores para este directorio. De lo contrario, el agente cargará la configuración SSL desde una ruta que puede ser modificada por usuarios sin privilegios, lo que resultará en una posible vulnerabilidad de seguridad.
no-shared
hace que las bibliotecas estáticas libcrypto.lib y libssl.lib de OpenSSL sean autónomas, por lo que los binarios de Zabbix incluyen OpenSSL sin necesidad de DLLs externas. Esto significa que los binarios de Zabbix pueden copiarse a otras máquinas Windows sin las bibliotecas de OpenSSL; sin embargo, cuando se publique una nueva versión de corrección de errores de OpenSSL, será necesario recompilar el agente Zabbix.no-shared
, Zabbix depende de las DLLs de OpenSSL en tiempo de ejecución. Esto significa que las actualizaciones de OpenSSL pueden no requerir recompilar el agente Zabbix; sin embargo, al copiarlo a otras máquinas, también se deben copiar las DLLs de OpenSSL.Para obtener más información sobre otras opciones de configuración de OpenSSL, consulte la documentación de OpenSSL.
6. Compile OpenSSL y ejecute las pruebas (tenga en cuenta que esto puede llevar algún tiempo):
Ejecute las pruebas sin privilegios administrativos; de lo contrario, puede provocar resultados inesperados o riesgos de seguridad. Si algunas pruebas fallan, consulte la documentación de OpenSSL para la resolución de problemas.
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. Instale OpenSSL:
Para instalar solo los componentes de software (bibliotecas, archivos de cabecera, pero sin documentación), puede usar nmake install_sw
.
Descargue la biblioteca PCRE o PCRE2 (https://pcre.org/).
Extraiga el contenido en el directorio E:\pcre2-10.39.
Instale CMake desde https://cmake.org/download/, durante la instalación seleccione: y asegúrese de que cmake\bin esté en su ruta (versión probada 3.9.4).
Cree un nuevo directorio de compilación vacío, preferiblemente un subdirectorio del directorio fuente. Por ejemplo, E:\pcre2-10.39\build.
Abra una ventana de línea de comandos, por ejemplo, el x64 Native Tools Command Prompt para VS 2017 y desde ese entorno de shell ejecute cmake-gui. No intente iniciar CMake desde el menú Inicio de Windows, ya que esto puede provocar errores.
Ingrese E:\pcre2-10.39 y E:\pcre2-10.39\build para los directorios de origen y compilación, respectivamente.
Haga clic en el botón "Configure".
Al especificar el generador para este proyecto seleccione "NMake Makefiles".
Cree un nuevo directorio de instalación vacío. Por ejemplo, E:\pcre2-10.39-install.
La interfaz gráfica mostrará varias opciones de configuración. Asegúrese de que las siguientes opciones estén seleccionadas:
Haga clic en "Configure" nuevamente. El botón "Generate" adyacente ahora debería estar activo.
Haga clic en "Generate".
Si ocurre algún error, se recomienda eliminar la caché de CMake antes de intentar repetir el proceso de compilación con CMake. En la interfaz gráfica de CMake, la caché se puede eliminar seleccionando "File > Delete Cache".
El directorio de compilación ahora debería contener un sistema de compilación utilizable - Makefile.
Abra una ventana de línea de comandos como el x64 Native Tools Command Prompt para VS 2017 y navegue hasta el Makefile mencionado anteriormente.
Ejecute el comando NMake:
E:\pcre2-10.39\build> nmake install
Los siguientes pasos le ayudarán a compilar Zabbix desde el código fuente en MS Windows 10 (64 bits). Al compilar Zabbix con/sin soporte TLS, la única diferencia significativa está en el paso 4.
git clone https://git.zabbix.com/scm/zbx/zabbix.git
cd zabbix
./bootstrap.sh
./configure --enable-agent --enable-ipv6 --prefix=`pwd`
make dbschema
make dist
Copie y descomprima el archivo, por ejemplo, zabbix-7.0.0.tar.gz
, en una máquina Windows.
Supongamos que los fuentes están en E:\zabbix-7.0.0. Abra una ventana de línea de comandos, como x64 Native Tools Command Prompt para VS 2017 RC. Vaya a:
E:\\zabbix-7.0.0\\build\\win32\\project
$ git clone https://git.zabbix.com/scm/zbx/zabbix.git
$ cd zabbix
$ ./bootstrap.sh
$ ./configure --enable-agent --enable-ipv6 --prefix=`pwd`
$ make dbschema
$ make dist
zabbix-7.4.0.tar.gz
, en una máquina Windows.E:\\zabbix-7.4.0\\build\\win32\\project
.sin TLS:
E:\zabbix-7.4.0\build\win32\project> nmake /K PCRE2INCDIR=E:\pcre2-10.39-install\include PCRE2LIBDIR=E:\pcre2-10.39-install\lib
con TLS:
E:\zabbix-7.4.0\build\win32\project> nmake /K -f Makefile_get TLS=openssl TLSINCDIR=C:\OpenSSL-Win64-111-static\include TLSLIBDIR=C:\OpenSSL-Win64-111-static\lib PCRE2INCDIR=E:\pcre2-10.39-install\include PCRE2LIBDIR=E:\pcre2-10.39-install\lib
E:\zabbix-7.4.0\build\win32\project> nmake /K -f Makefile_sender TLS=openssl TLSINCDIR="C:\OpenSSL-Win64-111-static\include TLSLIBDIR="C:\OpenSSL-Win64-111-static\lib" PCRE2INCDIR=E:\pcre2-10.39-install\include PCRE2LIBDIR=E:\pcre2-10.39-install\lib
E:\zabbix-7.4.0\build\win32\project> nmake /K -f Makefile_agent TLS=openssl TLSINCDIR=C:\OpenSSL-Win64-111-static\include TLSLIBDIR=C:\OpenSSL-Win64-111-static\lib PCRE2INCDIR=E:\pcre2-10.39-install\include PCRE2LIBDIR=E:\pcre2-10.39-install\lib