1 Compilant l'agent Zabbix sota Windows

Vista general

Aquesta secció ensenya com crear binaris d'agent Zabbix Windows a partir de fonts amb o sense TLS.

Compilar OpenSSL

Les passes següents us ajudaran a compilar OpenSSL des de la font a MS Windows 10 (64 bits).

  1. Per compilar OpenSSL, haureu de menester a una màquina Windows:
    1. compilació C (p. ex. VS 2017 RC),
    2. NASM (https://www.nasm.us/),
    3. Perl (per exemple, Strawberry Perl de http://strawberryperl.com/),
    4. Mòdul Perl Text::Template (cpan Text::Template).
  2. Obtingueu fonts OpenSSL de https://www.openssl.org/. Aquí s'empra OpenSSL 1.1.1.
  3. Descomprimiu les fonts OpenSSL, per exemple, a E:\openssl-1.1.1.
  4. Obriu una finestra de línia de comandes, per exemple Native Tools x64 Command Prompt per a VS 2017 RC.
  5. Navegueu al directori font d'OpenSSL, per exemple E:\openssl-1.1.1.
    1. Verifiqueu que es pot trobar NASM:e:\openssl-1.1.1> nasm --version NASM versió 2.13.01 compilada l'1 de maig de 2017
  6. Configura OpenSSL, per exemple:e:\openssl-1.1.1> perl E:\openssl-1.1.1\Configura 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
    • Tingueu en compte l'opció "no-shared": si s'empra "no-shared", les biblioteques estàtiques d'OpenSSL libcrypto.lib i libssl.lib seran "autosuficients" i els binaris Zabbix resultants inclouran OpenSSL, no cal per a "DLL externa OpenSSL". Avantatge: els binaris Zabbix es poden copiar a altres màquines Windows sense biblioteques OpenSSL. Desavantatge: quan es publica una nova versió de correcció d'errors d'OpenSSL, cal recompilar i tornar a instal·lar l'agent Zabbix.
    • Si no s'empra "no-shared", les biblioteques estàtiques libcrypto.lib i libssl.lib empraran DLL OpenSSL quan s'executen. Avantatge: quan es publica una nova versió de correcció d'errors d'OpenSSL, probablement només podreu actualitzar les DLL d'OpenSSL, sense recompilar l'agent Zabbix. Desavantatge: per copiar l'agent Zabbix a una altra màquina també cal copiar les DLL d'OpenSSL.
  7. Compileu OpenSSL, executeu la prova, instal·leu:e:\openssl-1.1.1> nmake e:\openssl-1.1.1> test nmake ... All tests successful. Fitxers=152, proves=1152, 501 segons de rellotge de paret (0,67 usr + 0,61 sys = 1,28 CPU) Resultat: PASS e:\openssl-1.1.1> nmake install_sw 'install_sw' només instal·la components de programari (és a dir, biblioteques, fitxers de capçalera, però sense documentació). Si ho voleu tot, empreu "nmake install".

Compilar PCRE

  1. Baixeu la biblioteca PCRE o PCRE2 des del repositori (https://pcre.org):
  2. Extraieu-lo al directori E:\pcre2-10.39
  3. Instal·leu CMake des de https://cmake.org/download/, en instal·lar seleccioneu i assegureu-vos que cmake\bin estigui al vostre camí (versió provada 3.9.4).
  4. Creeu un nou directori de compilació buit, preferiblement un subdirectori del directori font. Per exemple, E:\pcre2-10.39\build.
  5. Obriu una finestra de línia d'ordres, p. Native Tools x64 Command Prompt per a VS 2017 i des d'aquest entorn de shell executeu cmake-gui. No intenteu iniciar Cmake des del menú Inici de Windows, ja que això pot provocar errors.
  6. Introduïu E:\pcre2-10.39 i E:\pcre2-10.39\build per als directoris font i compilació, respectivament.
  7. Premeu el botó "Configura".
  8. Quan especifiqueu el generador per a aquest projecte, seleccioneu "NMake Makefiles".
  9. Creeu un nou directori d'instal·lació buit. Per exemple, E:\pcre2-10.39-install.
  10. Tot seguit, la GUI mostrarà diverses opcions de configuració. Assegureu-vos que les opcions següents són triades:
    • PCRE_SUPPORT_UNICODE_PROPERTIES ON
    • PCRE_SUPPORT_UTF ON
    • CMAKE_INSTALL_PREFIX E:\pcre2-10.39-install
  11. Premeu "Configurar" de nou. El botó "Generar" adjacent ara hauria d'ésser actiu.
  12. Premeu "Generar".
  13. En cas d'error, es recomana esborrar la memòria cau de CMake abans d'intentar repetir el procés de creació de CMake. A la GUI de CMake, la memòria cau es pot esborrar seleccionant "Fitxer > Esborrar la memòria cau".
  14. El directori de compilació ara hauria de contindre un sistema de compilació utilitzable - Makefile.
  15. Obriu una finestra de línia d'ordres, p. Native Tools x64 Command Prompt per a VS 2017 i navegueu al Makefile esmentat anteriorment.
  16. Executeu l'ordre NMake: E:\pcre2-10.39\build> nmake install

Compilació de Zabbix

Les passes següents us ajudaran a compilar Zabbix des de la font a MS Windows 10 (64 bits). Quan es compila Zabbix amb/sense suport TLS, l'única diferència significativa es troba a la passa 4.

  1. A una màquina Linux, comproveu la font des de git: 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. Copieu i descomprimiu l'arxiu, p.e. zabbix-7.0.0.tar.gz, a una màquina Windows.
  3. Suposem que les fonts són a e:\zabbix-7.0.0. Obriu una finestra de línia de comandes, com ara l'indicador d'ordres natiu de les eines x64 per a VS RC 2017. Aneu a E:\\zabbix-4.4.0\\build\\win32\\project.
  4. Compileu zabbix_get, zabbix_sender i zabbix_agent.
    • sense 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
    • amb 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. Els nous binaris es troben a e:\zabbix-7.0.0\bin\win64. Com que OpenSSL es va compilar amb l'opció 'no compartit', els binaris de Zabbix contenen OpenSSL en si mateixos i es poden copiar a altres màquines que no tinguin OpenSSL.

Compilar Zabbix amb LibreSSL

El procés és similar a la compilació amb OpenSSL, però cal fer petits canvis als fitxers que es troben al directori build\win32\project:

  • Al Makefile_tls , esborreu /DHAVE_OPENSSL_WITH_PSK, per exemple cerqueu:
CFLAGS = $(CFLAGS) /DHAVE\_OPENSSL /DHAVE\_OPENSSL\_WITH\_PSK

i substituïu per

CFLAGS = $(CFLAGS) /DHAVE_OPENSSL
  • Al Makefile_common.inc, afegiu /NODEFAULTLIB:LIBCMT i, per exemple, cerqueu:
/MANIFESTUAC:"level='asInvoker' uiAccess='false'" /DYNAMICBASE:NO /PDB:$(TARGETDIR)\\$(TARGETNAME).pd

i substituïu per:

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