1 Изградња Zabbix агента на Windows-у

Преглед

Овај одељак показује како да направите бинарне датотеке Zabbix Windows агента из извора са или без TLS-а.

Превођење OpenSSL-а

Следећи кораци ће вам помоћи да саставите OpenSSL из извора на MS Windows 10 (64-битни).

  1. Пре него што наставите, проверите да ли Windows машина има:

  2. Преузмите OpenSSL изворе са https://www.openssl.org/. Овај пример користи OpenSSL 1.1.1.

  3. Распакујте OpenSSL изворе, на пример, у E:\openssl-1.1.1.

  4. Отворите прозор командне линије, као што је x64 Native Tools Command Prompt за VS 2017 RC.

  5. Идите у OpenSSL изворни директоријум (у овом водичу E:\\openssl-1.1.1.) и проверите да ли се NASM може пронаћи:

e:\openssl-1.1.1> nasm --version
               NASM version 2.13.01 compiled on May  1 2017
  1. Конфигуришите OpenSSL, на пример:
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
  • Обратите пажњу на опцију 'no-shared': ако се користи 'no-shared', онда ће OpenSSL статичке библиотеке libcrypto.lib и libssl.lib бити 'self-sufficient' и резултирајуће Zabbix бинарне датотеке ће укључивати OpenSSL у себи, без потребе за спољне OpenSSL DLLs-ове. Предност: Zabbix бинарне датотеке се могу копирати на друге Windows машине без OpenSSL библиотека. Недостатак: када се објави нова верзија OpenSSL исправке грешака, Zabbix агент треба поново да се компајлира и поново инсталира.
  • Ако се 'no-shared не користи, онда ће статичке библиотеке libcrypto.lib и libssl.lib користити OpenSSL DLLs-ове у току рада. Предност: када се објави нова верзија OpenSSL исправке грешака, вероватно можете надоградити само OpenSSL DLLs-ове, без поновног компајлирања Zabbix агента. Недостатак: копирање Zabbix агента на другу машину захтева и копирање OpenSSL DLLs-ова.
  1. Саставите OpenSSL, покрените тестове, инсталирајте:
e:\openssl-1.1.1> nmake
       e:\openssl-1.1.1> nmake test
       ...
       Сви тестови успешни.
       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 инсталира само софтверске компоненте (тј. библиотеке, датотеке заглавља, али не и документацију). Да бисте све инсталирали, користите nmake install.

Превођење PCRE-а

  1. Преузмите PCRE или PCRE2 библиотеку (https://pcre.org/).

  2. Распакујте у директоријум E:\pcre2-10.39.

  3. Инсталирајте CMake са https://cmake.org/download/, током инсталације изаберите: и уверите се да је cmake\bin на вашој путањи (тестирана верзија 3.9.4).

  4. Креирајте нови, празан директоријум за изградњу, по могућности поддиректоријум изворног директоријума. На пример, E:\pcre2-10.39\build.

  5. Отворите прозор командне линије, нпр. командну линију x64 изворних алата за VS 2017 и из тог окружења љуске покрените cmake-gui. Не покушавајте да покренете Cmake из Windows Start менија, јер то може довести до грешака.

  6. Унесите E:\pcre2-10.39 и E:\pcre2-10.39\build за изворни директоријум и директоријум за изградњу, респективно.

  7. Кликните на дугме "Конфигуриши".

  8. Када наведете генератор за овај пројекат изаберите "NMake Makefiles".

  9. Креирајте нови, празан директоријум за инсталацију. На пример, E:\pcre2-10.39-install.

  10. GUI ће затим навести неколико опција конфигурације. Уверите се да су изабране следеће опције:

-  **PCRE\_SUPPORT\_UNICODE\_PROPERTIES** ON
       -  **PCRE\_SUPPORT\_UTF** ON
       -  **CMAKE\_INSTALL\_PREFIX** *E:\\pcre2-10.39-install*
  1. Поново кликните на "Конфигуриши". Суседно дугме "Генериши" би сада требало да буде активно.

  2. Кликните на "Генериши".

  3. Ако дође до било какве грешке, препоручује се да избришете CMake кеш пре него што покушате да поновите процес изградње CMake. У CMake GUI-у, кеш се може избрисати избором "Датотека > Избриши кеш".

  4. Директоријум за изградњу сада треба да садржи употребљив систем градње - Makefile.

  5. Отворите прозор командне линије као што је x64 Native Tools Command Prompt за VS 2017 и идите до горе поменутог Makefile.

  6. Покрените NMake команду:

E:\pcre2-10.39\build> nmake install

Компајлирање Zabbix-а

Следећи кораци ће вам помоћи да компајлирате Zabbix из изворног кода на MS Windows 10 (64-bit). Приликом компајлирања Zabbix-а са/без TLS подршке једина значајна разлика је у кораку 4.

  1. На Linux машини проверите извор са 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
  1. Копирајте и распакујте архиву, нпр. zabbix-7.0.0.tar.gz, на Windows машини.

  2. Претпоставимо да су извори на E:\zabbix-7.0.0. Отворите прозор командне линије, као што је x64 Native Tools Command Prompt за VS 2017 RC. Идите на:

E:\\zabbix-7.0.0\\build\\win32\\project
  1. Компилирајте zabbix_get, zabbix_sender и zabbix_agent.
    • без TLS-а:

        E:\zabbix-7.0.0\build\win32\project> nmake /K PCRE2INCDIR=E:\pcre2-10.39-install\include PCRE2LIBDIR=E:\pcre2-10.39-install\lib
    • са 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 PCRE2INCDIR=E:\pcre2-10.39-install\include PCRE2LIBDIR=E:\pcre2-10.39-install\libE:\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" PCRE2INCDIR=E:\pcre2-10.39-install\include PCRE2LIBDIR=E:\pcre2-10.39-install\libE:\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 PCRE2INCDIR=E:\pcre2-10.39-install\include PCRE2LIBDIR=E:\pcre2-10.39-install\lib
  2. Нове бинарне датотеке се налазе у e:\zabbix-7.0.0\bin\win64. Пошто је OpenSSL компајлиран са опцијом 'no-shared', Zabbix бинарне фајдатотекелови садрже OpenSSL у себи и могу се копирати на друге машине које немају OpenSSL.

Превођење Zabbix-а са LibreSSL-ом

Процес је сличан компајлирању са OpenSSL-ом, али морате да направите мале измене у датотекама које се налазе у директоријуму build\win32\project:

  • У Makefile_tls: избришите /DHAVE_OPENSSL_WITH_PSK

Да бисте то урадили, пронађите:

CFLAGS = $(CFLAGS) /DHAVE_OPENSSL /DHAVE_OPENSSL_WITH_PSK

и замените га са

CFLAGS = $(CFLAGS) /DHAVE_OPENSSL
  • У Makefile_common.inc: додајте /NODEFAULTLIB:LIBCMT

Да бисте то урадили, пронађите:

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

и замените га са

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