1 Compilando el agente Zabbix en Windows

Descripción general

Esta sección muestra como compilar los binarios del Zabbix Windows agent desde el código fuente con o sin TLS.

Compilando OpenSSL

Los siguientes pasos le ayudarán a compilar OpenSSL desde el código fuente en MS Windows 10 (64-bit).

  1. Para compilar OpenSSL va a requerir una máquina con Windows:
    1. Un compilador C (por ejemplo VS 2017 RC),
    2. NASM (https://www.nasm.us/),
    3. Perl (por ejemplo Strawberry Perl de http://strawberryperl.com/),
    4. El módulo Perl Text::Template (cpan Text::Template).
  2. Obtenga el código fuente de OpenSSL desde https://www.openssl.org/. Aquí utilizamos OpenSSL 1.1.1
  3. Extraiga el código fuente de OpenSSL, por ejemplo, en E:\openssl-1.1.1.
  4. Abra una nueva ventana de línea de comandos, por ejemplo la x64 Native Tools Command Prompt para VS 2017 RC.
  5. Navegue al directorio del código fuente OpenSSL, por ejemplo. E:\openssl-1.1.1.
    1. Verifique que puede encontrar NASM:e:\openssl-1.1.1> nasm --version NASM version 2.13.01 compiled on May 1 2017
  6. Configure OpenSSL, por ejemplo: e:\openssl-1.1.1> perl E:\openssl-1.1.1\Configure VC-WIN64A no-shared no-capieng no-srp no-gost no-dgram no-dtls1-method no-dtls1_2-method --api=1.1.0 --prefix=C:\OpenSSL-Win64-111-static --openssldir=C:\OpenSSL-Win64-111-static
    • Note la opción 'no-shared': si utilizamos 'no-shared' entonces las librerías estáticas libcrypto.lib y libssl.lib de OpenSSL serán 'autosuficientes' y como resultado los binarios Zabbix tendrán incluido OpenSSL dentro de ellos, no habrá necesidad de DLLs OpenSSL externos. Ventaja: Los binarios de Zabbix podrán ser copiados a otras maquinas Windows sin las librerías OpenSSL. Desventaja: Cuando se libere una versión bugfix de OpenSSL, Zabbix agent tendrá que ser recompilado y reinstalado.
    • Si 'no-shared' no es utilizado, entonces las librerías estáticas libcrypto.lib y libssl.lib de estarán usando los DDLs OpenSSL de en tiempo de ejecución. Ventaja: Cuando se libere una versión bugfix de OpenSSL, probablemente solo será necesario actualizar los DLLs de OpenSSL, sin tener que recompilar Zabbix agent. Desventaja: el copiar Zabbix agent a otra maquina requerirá que también copiemos las DLLs de OpenSSL.
  7. Compile OpenSSL, ejecute pruebas, instale:e:\openssl-1.1.1> nmake e:\openssl-1.1.1> nmake test ... All tests successful. Files=152, Tests=1152, 501 wallclock secs ( 0.67 usr + 0.61 sys = 1.28 CPU) Result: PASS e:\openssl-1.1.1> nmake install_sw'install_sw' instala sólo los componentes de software (por ejemplo, librerías, archivos cabecera, pero no la documentación). Si necesita todo, utilice "nmake install".

Compilación de PCRE

  1. Descargue la biblioteca PCRE o PCRE2 (compatible desde Zabbix 6.0) (https://pcre.org/).
  2. Extraiga al directorio E:\pcre2-10.39.
  3. 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).
  4. Cree un directorio de compilación nuevo y vacío, preferiblemente un subdirectorio del directorio de origen. Por ejemplo, E:\pcre2-10.39\build.
  5. Abra una ventana de línea de comandos, por ejemplo, el símbolo del sistema de herramientas nativas x64 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 generar errores.
  6. Ingrese E:\pcre2-10.39 y E:\pcre2-10.39\build para los directorios de origen y de compilación, respectivamente.
  7. Presione el botón "Configurar".
  8. Al especificar el generador para este proyecto, seleccione "NMake Makefiles".
  9. Cree un directorio de instalación nuevo y vacío. Por ejemplo, E:\pcre2-10.39-install.
  10. La GUI mostrará varias opciones de configuración. Asegúrese de que las siguientes opciones estén seleccionadas:
  • PCRE_SUPPORT_UNICODE_PROPERTIES ON
  • PCRE_SUPPORT_UTF ON
  • CMAKE_INSTALL_PREFIX E:\pcre2-10.39-install
  1. Presione "Configurar" nuevamente. El botón "Generar" adyacente ahora debería estar activo.
  2. Pulse "Generar".
  3. En caso de que se produzcan errores, se recomienda que elimine el caché de CMake antes de intentar repetir el proceso de compilación de CMake. En la GUI de CMake, el caché se puede eliminar seleccionando "Archivo > Eliminar caché".
  4. El directorio de compilación ahora debería contener un sistema de compilación utilizable: Makefile.
  5. Abra una ventana de línea de comandos, por ejemplo, el símbolo del sistema de Native Tools x64 para VS 2017 y navegue hasta el Makefile mencionado anteriormente.
  6. Ejecute el comando NMake: E:\pcre2-10.39\build> nmake install

Compilando Zabbix

Los siguientes pasos le ayudaran a compilar Zabbix desde el código fuente en MS Windows 10 (64-bit). La única diferencia significativa cuando compilamos Zabbix con/sin soporte TLS se encuentra en el paso número 4.

  1. En una máquina Linux verifique el código fuente desde git: $ 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
  2. Copie y extraiga el archivo, por ejemplo, zabbix-4.4.0.tar.gz, en una máquina Windows.
  3. Asumamos que el código fuente se encuentra en e:\zabbix-4.4.0. <[endif]--> . Abra una nueva ventana de línea de comandos, por ejemplo, la x64 Native Tools Command Prompt para VS 2017 RC. Navegue a E:\zabbix-4.4.0\build\win32\project.
  4. Compilar zabbix_get, zabbix_sender y zabbix_agent.
    • sin TLS: E:\zabbix-4.4.0\build\win32\project> nmake /K PCREINCDIR=E:\pcre2-10.39-install\include PCRELIBDIR=E:\pcre2-10.39-install\lib
    • con TLS: E:\zabbix-4.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 PCREINCDIR=E:\pcre2-10.39-install\include PCRELIBDIR=E:\pcre2-10.39-install\lib E:\zabbix-4.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" PCREINCDIR=E:\pcre2-10.39-install\include PCRELIBDIR=E:\pcre2-10.39-install\lib E:\zabbix-4.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 PCREINCDIR=E:\pcre2-10.39-install\include PCRELIBDIR=E:\pcre2-10.39-install\lib
  5. Los nuevos binarios se encontraran localizados en e:\zabbix-4.4.0\bin\win64. Ya que hemos compilado OpenSSL con la opción 'no-shared', los binarios Zabbix contendrán OpenSSL dentro de ellos y pueden ser copiados a otras maquinas que no tengan OpenSSL.

Compilando Zabbix con LibreSSL

El proceso es similar a compilar con OpenSSL, pero es necesario realizar pequeños cambios en los archivos ubicados en el directorio build\win32\project:

  • En Makefile_tls elimine /DHAVE_OPENSSL_WITH_PSK, es decir, busque:
CFLAGS = $(CFLAGS) /DHAVE_OPENSSL /DHAVE_OPENSSL_WITH_PSK

y reemplacelo con

CFLAGS = $(CFLAGS) /DHAVE_OPENSSL
  • En Makefile_common.inc agregue /NODEFAULTLIB:LIBCMT, es decir, busque:
/MANIFESTUAC:"level='asInvoker' uiAccess='false'" /DYNAMICBASE:NO /PDB:$(TARGETDIR)\$(TARGETNAME).pdb

y reemplacelo con

/MANIFESTUAC:"level='asInvoker' uiAccess='false'" /DYNAMICBASE:NO /PDB:$(TARGETDIR)\$(TARGETNAME).pdb /NODEFAULTLIB:LIBCMT