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".

Compilando PCRE

  1. Descargue la biblioteca PCRE o PCRE2 (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, p.e. 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 provocar errores.
  6. Ingrese E:\pcre2-10.39 y E:\pcre2-10.39\build para los directorios de fuentes y creació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 enumerará varias opciones de configuración. Asegúrese que se seleccionan las siguientes opciones: - PCRE_SUPPORT_UNICODE_PROPERTIES ON - PCRE_SUPPORT_UTF ON - CMAKE_INSTALL_PREFIX E:\pcre2-10.39-install
  11. Presione "Configurar" nuevamente. El botón adyacente "Generar" ahora debería estar activo.
  12. Presione "Generar".
  13. En caso de que se produzcan errores, se recomienda eliminar 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é".
  14. El directorio de compilación ahora debería contener un sistema de compilación utilizable: Makefile.
  15. Abra una ventana de línea de comandos, p.e. el símbolo del sistema de herramientas nativas x64 para VS 2017 y navegue hasta el Makefile mencionado anteriormente.
  16. Ejecute el comando NMake: E:\pcre2-10.39\build> nmake install

Compilando Zabbix

Los siguientes pasos le ayudarán a compilar Zabbix a partir de las fuentes en MS Windows 10 (64 bits). Al compilar Zabbix con o sin soporte TLS, la única diferencia significativa está en el paso 4.

  1. En una máquina Linux, consulte la fuente de 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 descomprima el archivo, p.e. zabbix-7.0.0.tar.gz, en la máquina Windows.
  3. Supongamos que las fuentes están en e:\zabbix-7.0.0. Abra una ventana de línea de comando, p.e.el símbolo del sistema de herramientas nativas x64 para VS RC 2017. Vaya a E:\\zabbix-7.0.0\\build\\win32\\project.
  4. Compile zabbix_get, zabbix_sender y zabbix_agent.
    • sin TLS: E:\zabbix-7.0.0\build\win32\project> nmake /K PCREINCDIR=E:\pcre2-10.39-install\include PCRELIBDIR=E:\pcre2-10.39-install\lib
    • con TLS: E:\zabbix-7.0.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-7.0.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-7.0.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 archivos binarios se encuentran en e:\zabbix-7.0.0\bin\win64. Debido a que OpenSSL fue compilado con la opción 'no compartida', los binarios de Zabbix contienen OpenSSL dentro de sí mismos y se pueden copiar a otras máquinas que no tienen 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