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

Обзор

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

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

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

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

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

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

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

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

  • Для выполнения команд используйте x64 Native Tools Command Prompt (входит в состав 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 (Microsoft Visual C++)
  • инструмент командной строки NMake
  • менеджер пакетов vcpkg
  • 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-8.0.0.

4. Перейдите в каталог сборки Zabbix (C:\Zabbix\zabbix-8.0.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-8.0.0\bin\win64. Файл конфигурации агента Zabbix находится в C:\Zabbix\zabbix-8.0.0\conf.

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

mkdir C:\Zabbix\agent
copy C:\Zabbix\zabbix-8.0.0\bin\win64\zabbix_agent.exe C:\Zabbix\agent\
copy C:\Zabbix\zabbix-8.0.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 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 May  3 2024

Если NASM не был скомпилирован, установите его вручную. Дополнительную информацию см. в документации NASM.

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"

Если при компиляции Zabbix агент в Windows вы выбираете для OpenSSL пользовательский каталог (например, 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.

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

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

nmake
nmake test
...
All tests successful.
Files=325, Tests=3101, 822 wallclock secs ( 4.81 usr +  0.81 sys =  5.62 CPU)
Result: PASS

7. Установите OpenSSL:

nmake install

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

Установка PCRE2

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

2. Загрузите архив с исходным кодом PCRE2 и распакуйте его в 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-8.0.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-8.0.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-8.0.0\bin\win64. Файл конфигурации агента Zabbix расположен в C:\Zabbix\zabbix-8.0.0\conf.

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

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

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