Compilar Zabbix agent 2 en Windows

Descripción general

Esta página muestra cómo compilar el Zabbix agent 2 a partir del código fuente en Windows 10 (64 bits o 32 bits).

Las versiones de 32 bits y 64 bits se pueden compilar en una plataforma de 64 bits, pero en una plataforma de 32 bits solo se puede compilar la versión de 32 bits.

Para compilar el Zabbix agent 2 se requiere:

  • Herramientas de compilación MinGW
  • Lenguaje de programación Go
  • OpenSSL (para las funciones de cifrado de Zabbix)
  • PCRE2 (expresiones regulares compatibles con Perl; para las funciones de coincidencia de patrones mediante expresiones regulares de Zabbix)

Puede compilar el Zabbix agent 2 mediante uno de los siguientes métodos:

  • Uso de vcpkg: un enfoque automatizado que simplifica la gestión de dependencias mediante un gestor de paquetes de C++.
  • Compilación manual: un enfoque manual que requiere instalar todas las dependencias antes de compilar el agent.

Antes de iniciar el proceso de compilación, tenga en cuenta lo siguiente:

  • Para ejecutar comandos, utilice el símbolo del sistema, iniciado por un usuario con permisos suficientes para escribir en carpetas protegidas. Sin embargo, al instalar OpenSSL y PCRE2, utilice la terminal de MSYS2.
  • Se recomienda crear un directorio de trabajo en C:\Zabbix para todos los archivos de código fuente y las carpetas de compilación. Sin embargo, los componentes compilados deben instalarse en C:\Zabbix\x64 (o en C:\Zabbix\x86 para compilaciones de 32 bits).

Compilación de Zabbix agent 2 con vcpkg

Esta sección contiene instrucciones para compilar Zabbix agent con vcpkg, un administrador de paquetes que simplifica la gestión de dependencias y la integración con proyectos de C++.

1. Descargue e instale Build Tools for Visual Studio 2022. Durante la instalación, asegúrese de seleccionar la carga de trabajo Desktop development with C++, que incluye el administrador de paquetes vcpkg.

2. Descargue e instale Go (disponible como instalador MSI). Durante la instalación, asegúrese de especificar C:\Zabbix\Go como carpeta de instalación.

3. Descargue la distribución de MinGW que utilice la biblioteca de tiempo de ejecución de Microsoft Visual C; por ejemplo:

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

La versión de MinGW debe cumplir los requisitos mínimos.

A continuación, extráigala en C:\Zabbix\mingw64 (o C:\Zabbix\mingw32 para compilaciones de 32 bits).

4. Inicialice vcpkg e instale las dependencias necesarias para compilar Zabbix agent 2 (tenga en cuenta que esto puede tardar algún tiempo):

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

# Para compilaciones de 64 bits:
set PATH=C:\Zabbix\mingw64\bin;%PATH%
vcpkg install --triplet x64-mingw-static --x-install-root=x64

# Para compilaciones de 32 bits:
set PATH=C:\Zabbix\mingw32\bin;%PATH%
vcpkg install --triplet x86-mingw-static --x-install-root=x86

5. Descargue el archivo de código fuente de Zabbix y extráigalo en C:\Zabbix\zabbix-8.0.0.

6. Acceda al directorio de compilación de Zabbix (C:\Zabbix\zabbix-8.0.0\build\mingw) y cree el siguiente script build.bat:

  • Para compilaciones de 64 bits:
:: Agregar MinGW y Go a la variable del sistema `PATH` para la sesión actual:
set PATH=C:\Zabbix\mingw64\bin;%PATH%
set PATH=C:\Zabbix\Go\bin;%PATH%

:: Establecer la ruta de instalación de vcpkg:
set vcpkg="C:\Zabbix\x64\x64-mingw-static"

:: Establecer las opciones del enlazador para la biblioteca Crypt32:
SET CGO_LDFLAGS="-lCrypt32"

:: Ejecutar el proceso de compilación:
mingw32-make GOFLAGS="-buildvcs=false" ARCH=AMD64 ^
    PCRE2="%vcpkg%" ^
    OPENSSL="%vcpkg%" ^
    all
  • Para compilaciones de 32 bits:
:: Agregar MinGW y Go a la variable del sistema `PATH` para la sesión actual:
set PATH=C:\Zabbix\mingw32\bin;%PATH%
set PATH=C:\Zabbix\Go\bin;%PATH%

:: Establecer la ruta de instalación de vcpkg:
set vcpkg="C:\Zabbix\x86\x86-mingw-static"

:: Establecer las opciones del enlazador para la biblioteca Crypt32:
SET CGO_LDFLAGS="-lCrypt32"

:: Ejecutar el proceso de compilación:
mingw32-make GOFLAGS="-buildvcs=false" ARCH=x86 ^
    PCRE2="%vcpkg%" ^
    OPENSSL="%vcpkg%" ^
    all

7. Compile Zabbix agent 2 ejecutando el script:

build.bat

Después de la compilación, el binario de Zabbix agent 2 se encontrará en C:\Zabbix\zabbix-8.0.0\bin\win64 (para compilaciones de 64 bits) o en C:\Zabbix\zabbix-8.0.0\bin\win32 (para compilaciones de 32 bits). Los archivos de configuración de Zabbix agent 2 se encuentran en C:\Zabbix\zabbix-8.0.0\src\go\conf.

Para ejecutar el agent, copie zabbix_agent2.exe y sus archivos de configuración en una carpeta dedicada (por ejemplo, C:\Zabbix\agent2) y, a continuación, ejecute el agent:

mkdir C:\Zabbix\agent2

# Para compilaciones de 64 bits:
copy C:\Zabbix\zabbix-8.0.0\bin\win64\zabbix_agent2.exe C:\Zabbix\agent2\

# Para compilaciones de 32 bits:
copy C:\Zabbix\zabbix-8.0.0\bin\win32\zabbix_agent2.exe C:\Zabbix\agent2\

copy C:\Zabbix\zabbix-8.0.0\src\go\conf\zabbix_agent2.conf C:\Zabbix\agent2\
xcopy /E /I C:\Zabbix\zabbix-8.0.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.conf

Si es necesario, continúe con la compilación de plugins cargables de Zabbix agent 2.

Compilación de plugins cargables de Zabbix agent 2

1. Descargue el código fuente del plugin de Zabbix que coincida con la versión de su Zabbix agent 2 (por ejemplo, zabbix-agent2-plugin-postgresql-8.0.0.tar.gz) y extráigalo en C:\Zabbix.

Antes de instalar un plugin, consulte su archivo README. Puede contener requisitos específicos e instrucciones de instalación.

2. Vaya al directorio del plugin extraído y compile el plugin:

cd C:\Zabbix\zabbix-agent2-plugin-ember-plus-8.0.0

# Para compilaciones de 64 bits:
mingw32-make ARCH=AMD64

# Para compilaciones de 32 bits:
mingw32-make ARCH=x86

Después de la compilación, el binario del plugin de Zabbix agent 2 y su archivo de configuración se encontrarán en el mismo directorio del plugin.

El ejecutable del plugin puede colocarse en cualquier ubicación, siempre que pueda ser cargado por Zabbix agent 2. Especifique la ruta al binario del plugin en el archivo de configuración del plugin, por ejemplo, en postgresql.conf para el plugin PostgreSQL:

Plugins.PostgreSQL.System.Path=/path/to/executable/zabbix-agent2-plugin-postgresql

La ruta al archivo de configuración del plugin debe especificarse en el parámetro Include del archivo de configuración de Zabbix agent 2:

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

Continúe en configuración para obtener más detalles sobre la configuración de plugins.

Compilar Zabbix agent 2 manualmente

Este método de compilación de Zabbix agent 2 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 Zabbix agent 2 manualmente, lo que incluye instalar las herramientas de compilación y dependencias necesarias, y luego compilar el agent.

Configuración de las herramientas de compilación

1. Descargue e instale MSYS2 (disponible como instalador MSI). Durante la instalación, asegúrese de especificar C:\Zabbix\msys64 como carpeta de instalación.

2. Descargue e instale Go (disponible como instalador MSI; consulte las versiones de Go actualmente compatibles). Durante la instalación, asegúrese de especificar C:\Zabbix\Go como carpeta de instalación.

3. Descargue la distribución de MinGW que utiliza la biblioteca en tiempo de ejecución Microsoft Visual C; por ejemplo:

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

La versión de MinGW debe cumplir los requisitos mínimos.

Luego, extráigala en C:\Zabbix\mingw64 (o C:\Zabbix\mingw32 para compilaciones de 32 bits).

Instalación de OpenSSL

Para compilar Zabbix agent sin compatibilidad con TLS, continúe con la sección Instalación de PCRE2.

1. Abra el terminal MSYS2 MSYS con privilegios de administrador y ejecute los siguientes comandos:

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

2. Descargue el archivo de código fuente de OpenSSL y extráigalo en C:\Zabbix\openssl-3.5.0.

3. Vaya al directorio de OpenSSL extraído y cree el siguiente script build.sh:

  • Para compilaciones 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
  • Para compilaciones de 32 bits:
#!/usr/bin/env bash

export PATH="/c/Zabbix/mingw32/bin:$PATH"
export d="/c/Zabbix/x86/OpenSSL-Win64-350-static"

perl Configure 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

Asegúrese de revocar el acceso de escritura a los usuarios que no sean administradores en el directorio C:\Zabbix\x64\OpenSSL-Win64-350-static. De lo contrario, el agent cargará la configuración de SSL desde una ruta que puede ser modificada por usuarios sin privilegios, lo que podría provocar una vulnerabilidad de seguridad.

  • La opción no-shared hace que libcrypto.lib y libssl.lib sean bibliotecas estáticas autocontenidas de OpenSSL, por lo que los binarios de Zabbix incluyen OpenSSL sin necesidad de DLL externas. Esto significa que los binarios de Zabbix se pueden copiar a otros equipos Windows sin las bibliotecas de OpenSSL; sin embargo, cuando se publique una nueva versión de corrección de errores de OpenSSL, será necesario volver a compilar Zabbix agent.
  • Sin la opción no-shared, Zabbix depende de las DLL de OpenSSL durante el tiempo de ejecución. Esto significa que las actualizaciones de OpenSSL pueden no requerir volver a compilar Zabbix agent; sin embargo, al copiarlo a otros equipos, también se deben copiar las DLL de OpenSSL.

Para obtener más información sobre otras opciones de configuración de OpenSSL, consulte la documentación de OpenSSL.

4. Configure e instale OpenSSL ejecutando el script (tenga en cuenta que esto puede tardar algún tiempo):

cd /c/Zabbix/openssl-3.5.0
./build.sh
Instalación de PCRE2

1. Descargue el archivo fuente de PCRE2 y extráigalo en C:\Zabbix\pcre2-10.45.

2. Abra la terminal MSYS2 MSYS con privilegios de administrador. Luego, cree un directorio build en el directorio extraído de PCRE2 y navegue hasta él:

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

3. Configure PCRE2:

# Para compilaciones 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" ..

# Para compilaciones 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 se produce algún error, se recomienda eliminar la caché de CMake antes de intentar repetir el proceso de compilación de CMake. La caché (CMakeCachecache.txt) puede encontrarse en el directorio de compilación del directorio extraído de PCRE2.

4. Instale PCRE2:

make install
Compilación de Zabbix agent 2

1. Descargue el archivo comprimido del código fuente de Zabbix y extráigalo en C:\Zabbix\zabbix-8.0.0.

Si necesita generar un archivo comprimido del código fuente a partir del repositorio de código fuente sin procesar (por ejemplo, para aplicar parches personalizados o compilar a partir del código fuente más reciente), ejecute los siguientes comandos en una máquina Linux con Go instalado (necesario para configurar Zabbix agent 2):

git clone https://git.zabbix.com/scm/zbx/zabbix.git
cd zabbix
./bootstrap.sh
./configure
make dist

Esto creará un archivo comprimido del código fuente que, posteriormente, podrá copiarse a una máquina Windows.

2. Abra el símbolo del sistema con privilegios de administrador. A continuación, vaya al directorio de compilación de Zabbix y compile Zabbix agent; asegúrese de especificar correctamente los directorios donde están instalados OpenSSL y PCRE2:

  • Para compilaciones de 64 bits:
cd C:\Zabbix\zabbix-8.0.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

# Con compatibilidad con TLS:
mingw32-make ARCH=AMD64 PCRE2="C:\Zabbix\x64\PCRE2" OPENSSL="C:\Zabbix\x64\OpenSSL-Win64-350-static"

# Sin compatibilidad con TLS:
mingw32-make ARCH=AMD64 PCRE2="C:\Zabbix\x64\PCRE2"
  • Para compilaciones de 32 bits:
cd C:\Zabbix\zabbix-8.0.0\build\mingw
set PATH=C:\Zabbix\mingw32\bin;%PATH%

# Con compatibilidad con TLS:
mingw32-make ARCH=x86 PCRE2="C:\Zabbix\x86\PCRE2" OPENSSL="C:\Zabbix\x86\OpenSSL-Win32-350-static"

# Sin compatibilidad con TLS:
mingw32-make ARCH=x86 PCRE2="C:\Zabbix\x86\PCRE2"

Después de la compilación, el binario de Zabbix agent 2 se encontrará en C:\Zabbix\zabbix-8.0.0\bin\win64 (o en C:\Zabbix\zabbix-8.0.0\bin\win32 para compilaciones de 32 bits). Los archivos de configuración de Zabbix agent 2 se encuentran en C:\Zabbix\zabbix-8.0.0\src\go\conf.

Para ejecutar el agent, copie el binario zabbix_agent2.exe y sus archivos de configuración a una carpeta dedicada (por ejemplo, C:\Zabbix\agent2) y, a continuación, ejecute el agent:

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

Si es necesario, continúe con la compilación de plugins cargables de Zabbix agent 2.