Сборка 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 агента 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; например:

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

# 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-8.0.0.

6. Перейдите в каталог сборки Zabbix (C:\Zabbix\zabbix-8.0.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 агент 2, выполнив скрипт:

build.bat

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

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

mkdir C:\Zabbix\agent2

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

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

copy C:\Zabbix\zabbix-8.0.0\src\go\conf\zabbix_agent2.win.conf C:\Zabbix\agent2\
xcopy /E /I C:\Zabbix\zabbix-8.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-postgresql-8.0.0.tar.gz), и распакуйте его в C:\Zabbix.

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

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

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

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

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

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

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

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

Путь к файлу конфигурации плагина необходимо указать в параметре Include файла конфигурации Zabbix агент 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

Затем распакуйте его в 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 и распакуйте его в 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) может находиться в каталоге build распакованного каталога PCRE2.

4. Установите PCRE2:

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

1. Загрузите архив с исходным кодом Zabbix и распакуйте его в C:\Zabbix\zabbix-8.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-8.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-8.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-8.0.0\bin\win64 (или C:\Zabbix\zabbix-8.0.0\bin\win32 для 32-битных сборок). Файлы конфигурации Zabbix агент 2 находятся в C:\Zabbix\zabbix-8.0.0\src\go\conf.

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

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