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

Преглед

Ова страница показује како се изгради Zabbix агент 2 из изворног кода на Windows 10 (64-битни или 32-битни).

И 32-битне и 64-битне верзије могу се изградити на 64-битној платформи, али само 32-битна верзија може се изградити на 32-битној платформи.

Изградња Zabbix агента 2 захтева:

  • MinGW алате за изградњу
  • Go програмски језик
  • OpenSSL (за функције шифровања у Zabbix-у)
  • PCRE2 (Perl компатибилни регуларни изрази; за функције подударања образаца регуларних израза у Zabbix-у)

Zabbix агент 2 можете изградити користећи једну од следећих метода:

  • Коришћење vcpkg — аутоматизовани приступ који поједностављује управљање зависностима помоћу C++ менаџера пакета.
  • Ручна изградња — ручни приступ који захтева инсталирање свих зависности пре компајлирања агента.

Пре него што започнете процес изградње, имајте на уму:

  • За извршавање команди користите командну линију, коју покреће корисник са довољним дозволама за писање у заштићене фасцикле. Међутим, приликом инсталирања OpenSSL и PCRE2, користите MSYS2 терминал.
  • Препоручује се креирање радног директоријума на C:\Zabbix за све изворне датотеке и фасцикле за изградњу. Међутим, компајлиране компоненте треба инсталирати у C:\Zabbix\x64 (или C:\Zabbix\x86 за 32-битне изградње).

Изградња Zabbix агента 2 помоћу vcpkg

Овај одељак садржи упутства за изградњу Zabbix агента помоћу vcpkg, менаџера пакета који поједностављује управљање зависностима и интеграцију са C++ пројектима.

1. Преузмите и инсталирајте Build Tools for Visual Studio 2022. Током инсталације, обавезно изаберите радно оптерећење Desktop development with C++, које укључује менаџер пакета vcpkg.

2. Преузмите и инсталирајте Go (доступно као MSI инсталатер). Током инсталације, обавезно наведите C:\Zabbix\Go као инсталациону фасциклу.

3. Преузмите MinGW дистрибуцију која користи Microsoft Visual C runtime библиотеку; на пример:

  • За 64-битне верзије: x86_64-15.1.0-release-win32-seh-msvcrt-rt_v12-rev0.7z
  • За 32-битне верзије: i686-15.1.0-release-win32-dwarf-msvcrt-rt_v12-rev0.7z

Затим, распакујте је у C:\Zabbix\mingw64 (или C:\Zabbix\mingw32 за 32-битне верзије).

4. Иницијализујте vcpkg и инсталирајте зависности потребне за изградњу Zabbix агента 2 (имајте на уму да ово може потрајати неко време):

cd C:\Zabbix
       
       set PATH=%PATH%;"C:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools\VC\vcpkg"
       vcpkg new --application
       vcpkg add port pcre2
       vcpkg add port libiconv
       vcpkg add port openssl
       
       # За 64-битне верзије:
       set PATH=C:\Zabbix\mingw64\bin;%PATH%
       vcpkg install --triplet x64-mingw-static --x-install-root=x64
       
       # За 32-битне верзије:
       set PATH=C:\Zabbix\mingw32\bin;%PATH%
       vcpkg install --triplet x86-mingw-static --x-install-root=x86

5. Преузмите архиву изворног кода Zabbix-а и распакујте је у C:\Zabbix\zabbix-7.0.0.

6. Идите до директоријума за изградњу Zabbix-а (C:\Zabbix\zabbix-7.0.0\build\mingw) и креирајте следећи скрипт build.bat:

  • За 64-битне изградње:
:: Додајте MinGW и идите на системску променљиву `PATH` за тренутну сесију:
       set PATH=C:\Zabbix\mingw64\bin;%PATH%
       set PATH=C:\Zabbix\Go\bin;%PATH%
       
       :: Поставите путању инсталације vcpkg:
       set vcpkg="C:\Zabbix\x64\x64-mingw-static"
       
       :: Поставите заставице линкера за библиотеку Crypt32:
       SET CGO_LDFLAGS="-lCrypt32"
       
       :: Покрените процес изградње:
       mingw32-make GOFLAGS="-buildvcs=false" ARCH=AMD64 ^
         PCRE2="%vcpkg%" ^
         OPENSSL="%vcpkg%" ^
       all
  • За 32-битне верзије:
:: Додајте MinGW и идите на системску променљиву `PATH` за тренутну сесију:
       set PATH=C:\Zabbix\mingw32\bin;%PATH%
       set PATH=C:\Zabbix\Go\bin;%PATH%
       
       :: Поставите путању инсталације vcpkg:
       set vcpkg="C:\Zabbix\x86\x86-mingw-static"
       
       :: Поставите заставице линкера за библиотеку Crypt32:
       SET CGO_LDFLAGS="-lCrypt32"
       
       :: Покрените процес верзије:
       mingw32-make GOFLAGS="-buildvcs=false" ARCH=x86 ^
       PCRE2="%vcpkg%" ^
       OPENSSL="%vcpkg%" ^
       all

7. Компајлирајте Zabbix агент 2 извршавањем скрипте:

build.bat

Након компајлирања, бинарна датотека Zabbix агента 2 ће се налазити у C:\Zabbix\zabbix-7.0.0\bin\win64 (за 64-битне верзије) или C:\Zabbix\zabbix-7.0.0\bin\win32 (за 32-битне верзије). Конфигурационе датотеке Zabbix агента 2 налазе се у C:\Zabbix\zabbix-7.0.0\src\go\conf.

Да бисте покренули агента, zabbix_agent2.exe и његове конфигурационе датотеке пребаците у посебну фасциклу (нпр., C:\Zabbix\agent2), а затим покрените агента:

mkdir C:\Zabbix\agent2
       
       # За 64-битне верзије:
       копирајте C:\Zabbix\zabbix-7.0.0\bin\win64\zabbix_agent2.exe C:\Zabbix\agent2\
       
       # За 32-битне верзије:
       копирајте C:\Zabbix\zabbix-7.0.0\bin\win32\zabbix_agent2.exe C:\Zabbix\agent2\
       
       copy C:\Zabbix\zabbix-7.0.0\src\go\conf\zabbix_agent2.win.conf C:\Zabbix\agent2\
       xcopy /E /I C:\Zabbix\zabbix-7.0.0\src\go\conf\zabbix_agent2.d C:\Zabbix\agent2\zabbix_agent2.d\
       
       C:\Zabbix\agent2\zabbix_agent2.exe -c C:\Zabbix\agent2\zabbix_agent2.win.conf

Ако је потребно, наставите са компајлирањем учитаних додатака за Zabbix агент 2.

Компилирање учитаних додатака за Zabbix агент 2

1. Преузмите изворни код Zabbix додатка који одговара вашој верзији Zabbix агента 2 (нпр., zabbix-agent2-plugin-ember-plus-7.0.0.tar.gz) и распакујте га у C:\Zabbix.

2. Идите до директоријума распакованог додатка и компајлирајте додатак:

cd C:\Zabbix\zabbix-agent2-plugin-ember-plus-7.0.0
       
       # За 64-битне верзије:
       mingw32-make ARCH=AMD64
       
       # За 32-битне верзије:
       mingw32-make ARCH=x86

Након компилације, бинарни фајл додатка Zabbix агента 2 и његова конфигурациона датотека ће се налазити у истом директоријуму додатка.

Извршна датотека додатка може се поставити било где све док је Zabbix агент 2 може учитати. Наведите путању до бинарне датотеке додатка у конфигурационој датотеци додатка, нпр. у ember.conf за Ember+ додатак:

Plugins.EmberPlus.System.Path=/path/to/executable/zabbix-agent2-plugin-ember-plus

Путања до конфигурационе датотеке додатка мора бити наведена у параметру Include конфигурационе датотеке Zabbix агента 2:

Include=/path/to/plugin/configuration/file/ember.conf

Ручно креирање Zabbix агента 2

Овај метод креирања Zabbix агента 2 је погодан за кориснике којима је потребна потпуна контрола над окружењем за креирање или се налазе у ограниченом окружењу где коришћење vcpkg није могуће.

Овај одељак садржи упутства за ручно креирање Zabbix агента 2, што укључује инсталирање потребних алата за креирање и зависности, а затим компајлирање агента.

Подешавање алата за изградњу

1. Преузмите и инсталирајте MSYS2 (доступан као MSI инсталер). Током инсталације, обавезно наведите C:\Zabbix\msys64 као фасциклу за инсталацију.

2. Преузмите и инсталирајте Go (доступан као MSI инсталер; погледајте тренутно подржане Go верзије). Током инсталације, обавезно наведите C:\Zabbix\Go као фасциклу за инсталацију.

  1. Преузмите MinGW дистрибуцију која користи Microsoft Visual C runtime библиотеку; на пример:
  • За 64-битне верзије: x86_64-15.1.0-release-win32-seh-msvcrt-rt_v12-rev0.7z
  • За 32-битне верзије: i686-15.1.0-release-win32-dwarf-msvcrt-rt_v12-rev0.7z

Затим, распакујте га у C:\Zabbix\mingw64 (или C:\Zabbix\mingw32 за 32-битне верзије).

Инсталирање OpenSSL-а

Да бисте компајлирали Zabbix агента без TLS подршке, пређите на одељак Инсталирање PCRE2.

1. Отворите MSYS2 MSYS терминал са администраторским привилегијама и покрените следеће команде:

pacman -S perl-Locale-Maketext-Simple
       pacman -S nasm
       pacman -S make
       pacman -S cmake

2. Преузмите OpenSSL изворну архиву и распакујте је у C:\Zabbix\openssl-3.5.0.

3. Идите до издвојеног директоријума OpenSSL и креирајте следећи скрипт build.sh:

  • За 64-битне верзије:
#!/usr/bin/env bash
       
       export PATH="/c/Zabbix/mingw64/bin:$PATH"
       export d="/c/Zabbix/x64/OpenSSL-Win64-350-static"
       
       perl Configure mingw64 no-shared no-capieng no-winstore no-srp no-gost no-dgram no-dtls1-method no-dtls1_2-method thread_scheme=winthreads --api=1.1.0 --prefix=$d --openssldir=$d
       
       make
       make install
  • За 32-битне верзије:
#!/usr/bin/env bash
       
       export PATH="/c/Zabbix/mingw32/bin:$PATH"
       export d="/c/Zabbix/x86/OpenSSL-Win64-350-static"
       
       perl Конфигуриши mingw no-shared no-capieng no-winstore no-srp no-gost no-dgram no-dtls1-method no-dtls1_2-method thread_scheme=winthreads --api=1.1.0 --prefix=$d --openssldir=$d
       
       make
       make install

Обавезно опозовите приступ за писање корисницима који нису администратори у директоријум C:\Zabbix\x64\OpenSSL-Win64-350-static. У супротном, агент ће учитати SSL подешавања са путање коју могу изменити непривилеговани корисници, што ће резултирати потенцијалном безбедносном рањивошћу.

  • Опција no-shared чини статичке библиотеке OpenSSL-а libcrypto.lib и libssl.lib самосталним, тако да бинарне датотеке Zabbix-а укључују OpenSSL без потребе за екстерним DLL-овима. То значи да се бинарне датотеке Zabbix-а могу копирати на друге Windows машине без OpenSSL библиотека; међутим, када се објави нова верзија исправке грешака OpenSSL-а, Zabbix агент ће морати поново да се компајлира.
  • Без опције no-shared, Zabbix се ослања на OpenSSL DLL-ове током извршавања. То значи да ажурирања OpenSSL-а можда неће захтевати поновно компајлирање Zabbix агента; међутим, приликом копирања на друге машине, OpenSSL DLL-ове такође морају бити копиране.

За више информација о другим опцијама конфигурације OpenSSL-а, погледајте OpenSSL документацију.

4. Конфигуришите и инсталирајте OpenSSL покретањем скрипте (имајте на уму да ово може потрајати неко време):

cd /c/Zabbix/openssl-3.5.0
       ./build.sh
Инсталирање PCRE2

1. Преузмите PCRE2 изворну архиву и распакујте је у C:\Zabbix\pcre2-10.45.

2. Отворите MSYS2 MSYS терминал са администраторским привилегијама. Затим, креирајте build директоријум у распакованом PCRE2 директоријуму и идите до њега:

mkdir /c/Zabbix/pcre2-10.45/build
       cd /c/Zabbix/pcre2-10.45/build

3. Конфигуришите PCRE2:

# За 64-битне верзије:
       export PATH="/c/Zabbix/mingw64/bin:$PATH"
       cmake -DCMAKE_C_COMPILER=gcc -DCMAKE_C_FLAGS="-O2 -g" -DCMAKE_INSTALL_PREFIX="/c/Zabbix/x64/PCRE2" ..
       
       # За 32-битне верзије:
       export PATH="/c/Zabbix/mingw32/bin:$PATH"
       cmake -DCMAKE_C_COMPILER=gcc -DCMAKE_C_FLAGS="-m32 -O2 -g" -DCMAKE_EXE_LINKER_FLAGS="-Wl,-mi386pe" -DCMAKE_INSTALL_PREFIX="/c/Zabbix/x86/PCRE2" ..

Ако дође до било каквих грешака, препоручује се да обришете кеш меморију CMake-а пре него што покушате да поновите процес изградње CMake-а. Кеш меморија (CMakeCachecache.txt) се може наћи у директоријуму за изградњу распакованог директоријума PCRE2.

4. Инсталирајте PCRE2:

make install
Компилација Zabbix агента 2

1. Преузмите Zabbix архиву изворног кода и распакујте је у C:\Zabbix\zabbix-7.0.0.

Ако треба да генеришете архиву изворног кода из репозиторијума сирових изворних кодова (нпр., да бисте применили прилагођене закрпе или изградили из најновијег изворног кода), покрените следеће команде на Linux машини са инсталираним Go (потребно за конфигурисање Zabbix агента 2):

git clone https://git.zabbix.com/scm/zbx/zabbix.git
       cd zabbix
       ./bootstrap.sh
       ./configure --enable-agent2 --enable-ipv6 --prefix=`pwd`
       make dist

Ово ће креирати архиву изворног кода, која се затим може копирати на Windows машину.

2. Отворите командну линију са администраторским привилегијама. Затим, идите до директоријума за изградњу Zabbix-а и компајлирајте Zabbix агента; Обавезно правилно наведите директоријуме где су инсталирани OpenSSL и PCRE2:

  • За 64-битне верзије:
cd C:\Zabbix\zabbix-7.0.0\build\mingw
       set PATH=C:\Zabbix\mingw64\bin;%PATH%
       mklink /D C:\Zabbix\x64\OpenSSL-Win64-350-static\lib C:\Zabbix\x64\OpenSSL-Win64-350-static\lib64
       
       # Са TLS подршком:
       mingw32-make ARCH=AMD64 PCRE2="C:\Zabbix\x64\PCRE2" OPENSSL="C:\Zabbix\x64\OpenSSL-Win64-350-static"
       
       # Без TLS подршке:
       mingw32-make ARCH=AMD64 PCRE2="C:\Zabbix\x64\PCRE2"
  • За 32-битне верзије:
cd C:\Zabbix\zabbix-7.0.0\build\mingw
       set PATH=C:\Zabbix\mingw32\bin;%PATH%
       
       # Са TLS подршком:
       mingw32-make ARCH=x86 PCRE2="C:\Zabbix\x86\PCRE2" OPENSSL="C:\Zabbix\x86\OpenSSL-Win64-350-static"
       
       # Без TLS подршке:
       mingw32-make ARCH=x86 PCRE2="C:\Zabbix\x86\PCRE2"

Након компилације, бинарна датотека Zabbix агента 2 ће се налазити у C:\Zabbix\zabbix-7.0.0\bin\win64 (или C:\Zabbix\zabbix-7.0.0\bin\win32 за 32-битне верзије). Конфигурационе датотеке Zabbix агента 2 налазе се у C:\Zabbix\zabbix-7.0.0\src\go\conf.

Да бисте покренули агента, копирајте бинарну датотеку zabbix_agent2.exe и њене конфигурационе датотеке у посебну фасциклу (нпр., C:\Zabbix\agent2) и затим покрените агента:

mkdir C:\Zabbix\agent2
       copy C:\Zabbix\zabbix-7.0.0\bin\win64\zabbix_agent2.exe C:\Zabbix\agent2\
       copy C:\Zabbix\zabbix-7.0.0\src\go\conf\zabbix_agent2.win.conf C:\Zabbix\agent2\
       xcopy /E /I C:\Zabbix\zabbix-7.0.0\src\go\conf\zabbix_agent2.d C:\Zabbix\agent2\zabbix_agent2.d\
       
       C:\Zabbix\agent2\zabbix_agent2.exe -c C:\Zabbix\agent2\zabbix_agent2.win.conf

Ако је потребно, наставите са компилирањем учитаних додатака за Zabbix агент 2.