1 Zabbix-agent bouwen op Windows

Overzicht

Dit gedeelte laat zien hoe je Zabbix Windows-agent binairies kunt compileren vanuit bronnen met of zonder TLS.

OpenSSL compileren

De volgende stappen helpen je bij het compileren van OpenSSL vanuit bronnen op MS Windows 10 (64-bit).

  1. Voor het compileren van OpenSSL heb je het volgende nodig op een Windows-machine:

    1. C-compiler (bijv. VS 2017 RC),
    2. NASM (https://www.nasm.us/),
    3. Perl (bijv. Strawberry Perl van http://strawberryperl.com/),
    4. Perl-module Text::Template (cpan Text::Template).
  2. Haal de OpenSSL-bronnen op van https://www.openssl.org/. Hier wordt OpenSSL 1.1.1 gebruikt.

  3. Pak de OpenSSL-bronnen uit, bijvoorbeeld in E:\openssl-1.1.1.

  4. Open een opdrachtregelvenster, bijvoorbeeld de x64 Native Tools Command Prompt voor VS 2017 RC.

  5. Ga naar de map met OpenSSL-bronnen, bijvoorbeeld E:\openssl-1.1.1.

    • Verifieer dat NASM kan worden gevonden:e:\openssl-1.1.1> nasm --version NASM version 2.13.01 compiled on May 1 2017
  6. Configureer OpenSSL, bijvoorbeeld: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

    • Merk de optie 'no-shared' op: als 'no-shared' wordt gebruikt, worden de statische bibliotheken libcrypto.lib en libssl.lib van OpenSSL 'zelfvoorzienend' en zullen de resulterende Zabbix-binaries OpenSSL zelf bevatten, zonder externe OpenSSL DLL's. Voordeel: Zabbix-binaries kunnen naar andere Windows-machines worden gekopieerd zonder OpenSSL-bibliotheken. Nadeel: wanneer er een nieuwe OpenSSL-bugfixversie wordt uitgebracht, moet de Zabbix-agent opnieuw worden gecompileerd en geïnstalleerd.
    • Als 'no-shared' niet wordt gebruikt, zullen de statische bibliotheken libcrypto.lib en libssl.lib OpenSSL DLL's gebruiken tijdens runtime. Voordeel: wanneer er een nieuwe OpenSSL-bugfixversie wordt uitgebracht, kun je waarschijnlijk alleen de OpenSSL DLL's upgraden, zonder de Zabbix-agent opnieuw te compileren. Nadeel: het kopiëren van de Zabbix-agent naar een andere machine vereist ook het kopiëren van OpenSSL DLL's.
  7. Compileer OpenSSL, voer tests uit, installeer: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' installeert alleen softwarecomponenten (d.w.z. bibliotheken, kopteksten, maar geen documentatie). Als je alles wilt, gebruik dan "nmake install".

PCRE compileren

  1. Download de PCRE- of PCRE2-bibliotheek (ondersteund sinds Zabbix 6.0) (https://pcre.org/).
  2. Pak uit naar de map E:\pcre2-10.39.
  3. Installeer CMake vanaf https://cmake.org/download/. Tijdens de installatie selecteer: en zorg ervoor dat cmake\bin in je pad staat (geteste versie 3.9.4).
  4. Maak een nieuwe, lege buildmap, bij voorkeur een submap van de bronmap. Bijvoorbeeld E:\pcre2-10.39\build.
  5. Open een opdrachtregelvenster, bijvoorbeeld de x64 Native Tools Command Prompt voor VS 2017, en voer vanuit die shellomgeving cmake-gui uit. Probeer CMake niet te starten vanuit het Windows Start-menu, want dit kan leiden tot fouten.
  6. Voer E:\pcre2-10.39 en E:\pcre2-10.39\build in voor de bron- en buildmappen.
  7. Klik op de knop "Configure".
  8. Selecteer bij het specificeren van de generator voor dit project "NMake Makefiles".
  9. Maak een nieuwe, lege installatiemap. Bijvoorbeeld E:\pcre2-10.39-install.
  10. De GUI toont vervolgens verschillende configuratieopties. Zorg ervoor dat de volgende opties zijn geselecteerd:
    • PCRE_SUPPORT_UNICODE_PROPERTIES AAN
    • PCRE_SUPPORT_UTF AAN
    • CMAKE_INSTALL_PREFIX E:\pcre2-10.39-install
  11. Klik opnieuw op "Configure". De aangrenzende knop "Generate" zou nu actief moeten zijn.
  12. Klik op "Generate".
  13. In het geval van fouten wordt aanbevolen om de CMake-cache te verwijderen voordat je het CMake-buildproces herhaalt. In de CMake GUI kan de cache worden verwijderd door "File > Delete Cache" te selecteren.
  14. De buildmap zou nu een bruikbaar buildsysteem moeten bevatten - Makefile.
  15. Open een opdrachtregelvenster, bijvoorbeeld de x64 Native Tools Command Prompt voor VS 2017, en navigeer naar de hierboven genoemde Makefile.
  16. Voer het NMake-commando uit: E:\pcre2-10.39\build> nmake install

Zabbix compileren

De volgende stappen helpen je bij het compileren van Zabbix vanuit bronnen op MS Windows 10 (64-bit). Bij het compileren van Zabbix met/zonder TLS-ondersteuning is het enige significante verschil te vinden in stap 4.

  1. Op een Linux-machine haal je de bron op uit 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. Kopieer en pak het archief uit, bijvoorbeeld zabbix-4.4.0.tar.gz, op een Windows-machine.
  3. Laten we ervan uitgaan dat de bronnen zich in e:\zabbix-4.4.0 bevinden. Open een opdrachtregelvenster, bijvoorbeeld de x64 Native Tools Command Prompt voor VS 2017 RC. Ga naar E:\zabbix-4.4.0\build\win32\project.
  4. Compileer zabbix_get, zabbix_sender en zabbix_agent.
    • Zonder 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
    • Met 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. De nieuwe binairies bevinden zich in e:\zabbix-4.4.0\bin\win64. Aangezien OpenSSL is gecompileerd met de 'no-shared' optie, bevatten Zabbix binairies OpenSSL zelf en kunnen ze worden gekopieerd naar andere machines die geen OpenSSL hebben.

Zabbix compileren met LibreSSL

Het proces is vergelijkbaar met het compileren met OpenSSL, maar je moet kleine wijzigingen aanbrengen in bestanden die zich bevinden in de map build\win32\project:

  • In Makefile_tls verwijder /DHAVE_OPENSSL_WITH_PSK, zoek:
CFLAGS = $(CFLAGS) /DHAVE_OPENSSL /DHAVE_OPENSSL_WITH_PSK

en vervang dit door

CFLAGS = $(CFLAGS) /DHAVE_OPENSSL
  • In Makefile_common.inc voeg /NODEFAULTLIB:LIBCMT toe, zoek:
/MANIFESTUAC:"level='asInvoker' uiAccess='false'" /DYNAMICBASE:NO /PDB:$(TARGETDIR)\$(TARGETNAME).pdb

en vervang dit door

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