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

Обзор

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

Эти инструкции применимы к версиям Windows, поддерживающим Visual Studio 2022.

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

  • Компилятор C (входит в состав инструментов сборки (Build Tools) для Visual Studio 2022)
  • OpenSSL (для функций шифрования в Zabbix)
  • PCRE2 (Perl-совместимые регулярные выражения — Perl Compatible Regular Expressions; для функций сопоставления шаблонов регулярных выражений в Zabbix)

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

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

В зависимости от ваших потребностей в мониторинге могут потребоваться дополнительные библиотеки. Подробнее смотрите Требования.

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

  • Для выполнения команд используйте командную строку x64 Native Tools (входит в состав Build Tools for Visual Studio 2022), запущенную пользователем с правами на запись в защищённые папки.
  • Рекомендуется создать рабочий каталог C:\Zabbix для всех исходных файлов и папок сборки. Однако скомпилированные компоненты следует устанавливать в C:\Program Files\Zabbix\x64.

Сборка агента Zabbix с помощью vcpkg

В этом разделе приведены инструкции по сборке агента Zabbix с помощью vcpkg — менеджера пакетов, который упрощает управление зависимостями и интеграцию с проектами на C++.

1. Скачайте и установите Build Tools for Visual Studio 2022. Во время установки обязательно выберите рабочую нагрузку Desktop development with C++, которая включает инструменты, необходимые для сборки агента с помощью vcpkg:

  • C compiler (Microsoft Visual C++)
  • NMake command-line tool
  • vcpkg package manager
  • x64 Native Tools Command Prompt

2. Инициализируйте vcpkg и установите зависимости, необходимые для сборки агента Zabbix (учтите, что это может занять некоторое время):

cd C:\Zabbix
vcpkg new --application
vcpkg add port pcre2
vcpkg add port openssl
vcpkg install --triplet x64-windows-static --x-install-root="C:\Program Files\Zabbix\x64"

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

4. Перейдите в каталог сборки Zabbix (C:\Zabbix\zabbix-7.4.0\build\win32\project) и создайте следующий скрипт build.bat; убедитесь, что правильно указаны каталоги, в которых установлены OpenSSL и PCRE2:

:: Set vcpkg installation path:
set vcpkg=C:\Program Files\Zabbix\x64\x64-windows-static

:: Run the build process:
nmake -f Makefile CPU=AMD64 ^
    PCRE2INCDIR="%vcpkg%\include" ^
    PCRE2LIBDIR="%vcpkg%\lib" ^
    TLS=openssl ^
    TLSINCDIR="%vcpkg%\include" ^
    TLSLIBDIR="%vcpkg%\lib" ^
    LIBS="$(LIBS) Crypt32.lib" ^
    all

5. Скомпилируйте агент Zabbix, выполнив скрипт:

build.bat

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

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

mkdir C:\Zabbix\agent
copy C:\Zabbix\zabbix-7.4.0\bin\win64\zabbix_agent.exe C:\Zabbix\agent\
copy C:\Zabbix\zabbix-7.4.0\conf\zabbix_agent.win.conf C:\Zabbix\agent\

C:\Zabbix\agent\zabbix_agent.exe -c C:\Zabbix\agent\zabbix_agent.win.conf

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

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

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

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

1. Скачайте и установите [Инструменты сборки (Build Tools) для Visual Studio 2022] (https://visualstudio.microsoft.com/downloads/#build-tools-for-visual-studio-2022).

Во время установки обязательно выберите рабочую нагрузку Desktop development with C++, которая включает в себя инструменты, необходимые для ручной сборки агента:

  • Компилятор C (Microsoft Visual C++)
  • Инструмент командной строки NMake
  • Командная строка x64 Native Tools Command Prompt
Установка OpenSSL

Чтобы скомпилировать агент Zabbix без поддержки TLS, перейдите к разделу Установка PCRE2.

1. Скачайте и установите Strawberry Perl (доступен в виде MSI-установщика).

Во время установки обязательно укажите C:\Zabbix\Strawberry в качестве папки для установки.

2. Установите модуль Perl Text::Template:

cpanm Text::Template

3. Убедитесь, что Netwide Assembler (NASM; требуется для компиляции OpenSSL) был скомпилирован во время установки Strawberry Perl:

nasm -v
# NASM version 2.16.01 compiled on May3 2024

Если NASM не скомпилирован, установите его вручную. Подробнее см. в документации NASM [en].

4. Скачайте архив исходного кода OpenSSL и распакуйте его в C:\Zabbix\openssl-3.5.0.

5. Перейдите в извлечённый каталог и настройте OpenSSL, например:

cd C:\Zabbix\openssl-3.5.0
perl Configure VC-WIN64A no-shared no-capieng no-winstore no-srp no-gost no-dgram no-dtls1-method no-dtls1_2-method --api=1.1.0 --prefix="C:\Program Files\Zabbix\x64\OpenSSL" --openssldir="C:\Program Files\Zabbix\x64\OpenSSL"

Если вы выбрали пользовательский каталог для OpenSSL при компиляции Zabbix агента в Windows (например, C:\zabbix или C:\openssl-64bit), обязательно отзовите права на запись в этот каталог для пользователей без прав администратора. В противном случае агент будет загружать настройки 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 [en].

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

Запускайте тесты без прав администратора; в противном случае это может привести к непредвиденным результатам или угрозам безопасности. Если некоторые тесты не пройдут, обратитесь к документации OpenSSL [en] для устранения неполадок.

nmake
nmake test
...
All tests successful.
Files=325, Tests=3101, 822 wallclock secs ( 4.81 usr +0.81 sys =5.62 CPU)
Result: PASS
  1. Установите OpenSSL:
nmake install

Чтобы установить только программные компоненты (библиотеки, заголовочные файлы, но без документации), можно использовать nmake install_sw.

Установка PCRE2

1. Скачайте и установите [CMake] (https://cmake.org/download/) (доступен в виде MSI-установщика).

Во время установки обязательно укажите C:\Zabbix\CMake в качестве папки установки и выберите опцию Add CMake to the PATH environment variable (Добавить CMake в переменную среды PATH).

2. Скачайте [архив исходного кода PCRE2] (https://github.com/PCRE2Project/pcre2/releases/latest) и распакуйте его в C:\Zabbix\pcre2-10.45.

3. Создайте каталог build в распакованном каталоге PCRE2 и перейдите в него:

mkdir C:\Zabbix\pcre2-10.45\build
cd C:\Zabbix\pcre2-10.45\build

4. Настройте PCRE2:

cmake -G "NMake Makefiles" -DPCRE_SUPPORT_UNICODE_PROPERTIES=ON -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX="C:\Program Files\Zabbix\x64\PCRE2" "C:\Zabbix\pcre2-10.45"

При возникновении ошибок рекомендуется удалить кэш CMake перед повторной попыткой сборки CMake. Кэш (CMakeCachecache.txt) находится в каталоге build извлечённого каталога PCRE2.

5. Соберите PCRE2 с помощью NMake:

nmake

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

cmake --install .
Сборка агента Zabbix

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

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

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

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

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

cd C:\Zabbix\zabbix-7.4.0\build\win32\project

# С поддержкой TLS:
nmake /K -f Makefile_agent PCRE2INCDIR="C:\Program Files\Zabbix\x64\PCRE2\include" PCRE2LIBDIR="C:\Program Files\Zabbix\x64\PCRE2\lib" TLS=openssl TLSINCDIR="C:\Program Files\Zabbix\x64\OpenSSL\include" TLSLIBDIR="C:\Program Files\Zabbix\x64\OpenSSL\lib"
nmake /K -f Makefile_get PCRE2INCDIR="C:\Program Files\Zabbix\x64\PCRE2\include" PCRE2LIBDIR="C:\Program Files\Zabbix\x64\PCRE2\lib" TLS=openssl TLSINCDIR="C:\Program Files\Zabbix\x64\OpenSSL\include" TLSLIBDIR="C:\Program Files\Zabbix\x64\OpenSSL\lib"
nmake /K -f Makefile_sender PCRE2INCDIR="C:\Program Files\Zabbix\x64\PCRE2\include" PCRE2LIBDIR="C:\Program Files\Zabbix\x64\PCRE2\lib" TLS=openssl TLSINCDIR="C:\Program Files\Zabbix\x64\OpenSSL\include" TLSLIBDIR="C:\Program Files\Zabbix\x64\OpenSSL\lib"

# Без поддержки TLS:
nmake /K -f Makefile_agent PCRE2INCDIR="C:\Program Files\Zabbix\x64\PCRE2\include" PCRE2LIBDIR="C:\Program Files\Zabbix\x64\PCRE2\lib"
nmake /K -f Makefile_get PCRE2INCDIR="C:\Program Files\Zabbix\x64\PCRE2\include" PCRE2LIBDIR="C:\Program Files\Zabbix\x64\PCRE2\lib"
nmake /K -f Makefile_sender PCRE2INCDIR="C:\Program Files\Zabbix\x64\PCRE2\include" PCRE2LIBDIR="C:\Program Files\Zabbix\x64\PCRE2\lib"

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

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

mkdir C:\Zabbix\agent
copy C:\Zabbix\zabbix-7.4.0\bin\win64\zabbix_agentd.exe C:\Zabbix\agent\
copy C:\Zabbix\zabbix-7.4.0\conf\zabbix_agentd.win.conf C:\Zabbix\agent\

C:\Zabbix\agent\zabbix_agentd.exe -c C:\Zabbix\agent\zabbix_agentd.win.conf -f