2. Сборка Zabbix агента 2 на Windows

Обзор

На этой странице показано, как собрать агент Zabbix 2 из исходного кода в Windows 10 (64- или 32-разрядной версии).

32- и 64-разрядные версии можно собрать на 64-разрядной платформе, но на 32-разрядной платформе можно собрать только 32-разрядную версию.

Для сборки агента Zabbix 2 требуются:

  • инструменты сборки MinGW
  • язык программирования Go
  • OpenSSL (для функций шифрования в Zabbix)
  • PCRE2 (Perl Compatible Regular Expressions; для функций сопоставления с шаблонами регулярных выражений в Zabbix)

Собрать агент Zabbix 2 можно одним из следующих способов:

  • С использованием vcpkg - автоматизированный подход, упрощающий управление зависимостями с помощью менеджера пакетов C++.
  • Сборка вручную - ручной подход, требующий установки всех зависимостей перед компиляцией агента.

Перед началом процесса сборки обратите внимание на следующее:

  • Для выполнения команд используйте командную строку, запущенную пользователем с достаточными правами для записи в защищенные папки. Однако при установке OpenSSL и PCRE2 используйте терминал MSYS2.
  • Рекомендуется создать рабочий каталог C:\Zabbix для всех исходных файлов и папок сборки. Однако скомпилированные компоненты следует устанавливать в C:\Zabbix\x64 (или в C:\Zabbix\x86 для 32-разрядных сборок).

Сборка Zabbix agent 2 с vcpkg

В этом разделе приведены инструкции по сборке Zabbix agent с помощью 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; например:

  • Для 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

Версия MinGW должна соответствовать минимальным требованиям.

Затем распакуйте его в C:\Zabbix\mingw64 (или в C:\Zabbix\mingw32 для 32-разрядных сборок).

4. Инициализируйте vcpkg и установите зависимости, необходимые для сборки Zabbix agent 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

# For 64-bit builds:
set PATH=C:\Zabbix\mingw64\bin;%PATH%
vcpkg install --triplet x64-mingw-static --x-install-root=x64

# For 32-bit builds:
set PATH=C:\Zabbix\mingw32\bin;%PATH%
vcpkg install --triplet x86-mingw-static --x-install-root=x86

5. Скачайте исходный архив Zabbix и распакуйте его в C:\Zabbix\zabbix-7.4.0.

6. Перейдите в каталог сборки Zabbix (C:\Zabbix\zabbix-7.4.0\build\mingw) и создайте следующий сценарий build.bat:

  • Для 64-разрядных сборок:
:: Add MinGW and Go to the system `PATH` variable for the current session:
set PATH=C:\Zabbix\mingw64\bin;%PATH%
set PATH=C:\Zabbix\Go\bin;%PATH%

:: Set vcpkg installation path:
set vcpkg="C:\Zabbix\x64\x64-mingw-static"

:: Set linker flags for Crypt32 library:
SET CGO_LDFLAGS="-lCrypt32"

:: Run the build process:
mingw32-make GOFLAGS="-buildvcs=false" ARCH=AMD64 ^
    PCRE2="%vcpkg%" ^
    OPENSSL="%vcpkg%" ^
    all
  • Для 32-разрядных сборок:
:: Add MinGW and Go to the system `PATH` variable for the current session:
set PATH=C:\Zabbix\mingw32\bin;%PATH%
set PATH=C:\Zabbix\Go\bin;%PATH%

:: Set vcpkg installation path:
set vcpkg="C:\Zabbix\x86\x86-mingw-static"

:: Set linker flags for Crypt32 library:
SET CGO_LDFLAGS="-lCrypt32"

:: Run the build process:
mingw32-make GOFLAGS="-buildvcs=false" ARCH=x86 ^
    PCRE2="%vcpkg%" ^
    OPENSSL="%vcpkg%" ^
    all

7. Скомпилируйте Zabbix agent 2, выполнив сценарий:

build.bat

После компиляции двоичный файл Zabbix agent 2 будет находиться в C:\Zabbix\zabbix-7.4.0\bin\win64 (для 64-разрядных сборок) или в C:\Zabbix\zabbix-7.4.0\bin\win32 (для 32-разрядных сборок). Файлы конфигурации Zabbix agent 2 находятся в C:\Zabbix\zabbix-7.4.0\src\go\conf.

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

mkdir C:\Zabbix\agent2

# For 64-bit builds:
copy C:\Zabbix\zabbix-7.4.0\bin\win64\zabbix_agent2.exe C:\Zabbix\agent2\

# For 32-bit builds:
copy C:\Zabbix\zabbix-7.4.0\bin\win32\zabbix_agent2.exe C:\Zabbix\agent2\

copy C:\Zabbix\zabbix-7.4.0\src\go\conf\zabbix_agent2.win.conf C:\Zabbix\agent2\
xcopy /E /I C:\Zabbix\zabbix-7.4.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 agent 2 с помощью подключаемых модулей.

Компиляция загружаемых плагинов Zabbix agent 2

1. Скачайте исходный код плагина Zabbix, соответствующий вашей версии Zabbix agent 2 (например, zabbix-agent2-plugin-postgresql-7.4.0.tar.gz), и распакуйте его в C:\Zabbix.

Перед установкой плагина обязательно ознакомьтесь с файлом README. Он может содержать особые требования и инструкции по установке.

2. Перейдите в распакованный каталог плагина и скомпилируйте плагин:

cd C:\Zabbix\zabbix-agent2-plugin-ember-plus-7.4.0

# Для 64-разрядных сборок:
mingw32-make ARCH=AMD64

# Для 32-разрядных сборок:
mingw32-make ARCH=x86

После компиляции исполняемый файл плагина Zabbix agent 2 и его файл конфигурации будут находиться в том же каталоге плагина.

Исполняемый файл плагина можно разместить в любом месте, если он может быть загружен Zabbix agent 2. Укажите путь к двоичному файлу плагина в файле конфигурации плагина, например в postgresql.conf для плагина PostgreSQL:

Plugins.PostgreSQL.System.Path=/path/to/executable/zabbix-agent2-plugin-postgresql

Путь к файлу конфигурации плагина необходимо указать в параметре Include файла конфигурации Zabbix agent 2:

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

Перейдите к настройке для получения дополнительных сведений о настройке плагинов.

Сборка Zabbix агента 2 вручную

Этот метод сборки агента Zabbix 2 подходит пользователям, которым требуется полный контроль над средой сборки или которые находятся в ограниченной среде, где использование vcpkg невозможно.

В этом разделе содержатся инструкции по ручной сборке агента Zabbix 2, включая установку необходимых инструментов сборки и зависимостей, а также компиляцию агента.

Настройка инструментов сборки

1. Скачайте и установите MSYS2 (доступен в виде MSI-установщика). Во время установки обязательно укажите C:\Zabbix\msys64 в качестве папки установки.

2. Скачайте и установите Go (доступен в виде MSI-установщика; см. текущие поддерживаемые версии Go). Во время установки обязательно укажите C:\Zabbix\Go в качестве папки установки.

3. Скачайте дистрибутив MinGW, который использует библиотеку времени выполнения Microsoft Visual C; например:

  • Для 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

Версия MinGW должна соответствовать минимальным требованиям.

Затем распакуйте его в 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 Configure 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 использует DLL OpenSSL во время выполнения. Это означает, что обновление OpenSSL может не требовать повторной компиляции агента Zabbix. Однако при копировании агента на другие компьютеры необходимо также скопировать DLL OpenSSL.

Дополнительную информацию о других параметрах конфигурации OpenSSL см. в документации OpenSSL.

4. Настройте и установите OpenSSL, выполнив скрипт (обратите внимание, что это может занять некоторое время):

cd /c/Zabbix/openssl-3.5.0
./build.sh
Установка PCRE2

1. Скачайте архив исходного кода PCRE2 [en] и распакуйте его в C:\Zabbix\pcre2-10.45.

2. Откройте терминал MSYS2 с правами администратора. Затем создайте каталог 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.4.0.

Если необходимо создать архив с исходным кодом из репозитория исходного кода (например, чтобы применить пользовательские исправления или выполнить сборку из последней версии исходного кода), выполните следующие команды на машине Linux с установленным Go (требуется для настройки агента Zabbix 2):

git clone https://git.zabbix.com/scm/zbx/zabbix.git
cd zabbix
./bootstrap.sh
./configure
make dist

Будет создан архив с исходным кодом, который затем можно скопировать на машину Windows.

2. Откройте командную строку с правами администратора. Затем перейдите в каталог сборки Zabbix и скомпилируйте агент Zabbix; убедитесь, что каталоги установки OpenSSL и PCRE2 указаны правильно:

  • Для 64-разрядных сборок:
cd C:\Zabbix\zabbix-7.4.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.4.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-Win32-350-static"

# Без поддержки TLS:
mingw32-make ARCH=x86 PCRE2="C:\Zabbix\x86\PCRE2"

После компиляции двоичный файл агента Zabbix 2 будет находиться в C:\Zabbix\zabbix-7.4.0\bin\win64 (или в C:\Zabbix\zabbix-7.4.0\bin\win32 для 32-разрядных сборок). Файлы конфигурации агента Zabbix 2 находятся в C:\Zabbix\zabbix-7.4.0\src\go\conf.

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

mkdir C:\Zabbix\agent2
copy C:\Zabbix\zabbix-7.4.0\bin\win64\zabbix_agent2.exe C:\Zabbix\agent2\
copy C:\Zabbix\zabbix-7.4.0\src\go\conf\zabbix_agent2.win.conf C:\Zabbix\agent2\
xcopy /E /I C:\Zabbix\zabbix-7.4.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.