Sidebar

Become a monitoring expert!
Sign up for Zabbix training

Compilando Zabbix agent 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 librería PCRE o PCRE2 (soportado desde Zabbix 6.0) desde el repositorio pcre.org: (https://github.com/PhilipHazel/pcre2/releases/download/pcre2-10.39/pcre2-10.39.zip)
  2. Extraiga el contenido en el directorio E:\pcre2-10.39
  3. Instale CMake desde https://cmake.org/download/, durante la instalación seleccione: y asegúrese que cmake\bin se encuentra en su path (probado en la versión 3.9.4).
  4. Crear un directorio de compilación nuevo y vacío, de preferencia un subdirectorio del código fuente. Por ejemplo, E:\pcre2-10.39\build.
  5. Abra una nueva ventana de línea de comandos, por ejemplo, la x64 Native Tools Command Prompt para VS 2017 y desde ese entorno shell ejecute cmake-gui. No intente ejecutar Cmake desde el menú Inicio de Windows, ya que esto puede generar errores.
  6. Escriba E:\pcre2-10.39 y E:\pcre2-10.39\build para los directorios de código fuente y de compilación, respectivamente.
  7. Presione el botón "Configure".
  8. Cuando se especifique 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 (Intérfaz Gráfica de Usuario) entonces listará diferentes opciones de configuración. Asegúrese que las siguientes opciones sean seleccionadas:
    • PCRE_SUPPORT_UNICODE_PROPERTIES ON
    • PCRE_SUPPORT_UTF ON
    • CMAKE_INSTALL_PREFIX E:\pcre2-10.39-install
  11. Presione nuevamente "Configure". El botón adyacente "Generate" ahora deberá estar activo.
  12. Presione "Generate".
  13. Si eventualmente ocurrieran algunos errores, es recomendable que bore la cache CMake antes de intentar repetir el proceso de compilación CMake. La cache puede ser borrada al seleccionar "File > Delete Cache" en la GUI de CMake.
  14. El directorio de compilación ahora deberá contener un sistema de compilación utilizable - Makefile.
  15. Abra una nueva ventana de linea de comandos, por ejemplo, la x64 Native Tools Command Prompt para VS 2017 y navegue a donte tenemos el Makefile mencionado anteriormente.
  16. 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 compilarlo con OpenSSL, pero necesitará hacer algunos cambios pequeños en los archivos localizados en el directorio build\win32\project:

  * en ''Makefile_tls'' borre ''/DHAVE_OPENSSL_WITH_PSK''. por ejemplo. find <code>

CFLAGS = $(CFLAGS) /DHAVE_OPENSSL /DHAVE_OPENSSL_WITH_PSK</code>and replace it with CFLAGS = $(CFLAGS) /DHAVE_OPENSSL

  * En''Makefile_common.inc'' agregar ''/NODEFAULTLIB:LIBCMT'' por ejemplo. find <code>

/MANIFESTUAC:"level='asInvoker' uiAccess='false'" /DYNAMICBASE:NO /PDB:$(TARGETDIR)\$(TARGETNAME).pdb</code>and replace it with /MANIFESTUAC:"level='asInvoker' uiAccess='false'" /DYNAMICBASE:NO /PDB:$(TARGETDIR)\$(TARGETNAME).pdb /NODEFAULTLIB:LIBCMT