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. Скачайте и установите Инструменты сборки для 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] (https://www.zabbix.com/download_sources#70LTS) и распакуйте его в C:\Zabbix\zabbix-7.0.0.

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

:: Задать путь для установки vcpkg:
       set vcpkg=C:\Program Files\Zabbix\x64\x64-windows-static
       
       :: Запустить процесс сборки:
       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.0.0\bin\win64. Файл конфигурации агента Zabbix находится в папке C:\Zabbix\zabbix-7.0.0\conf.

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

mkdir C:\Zabbix\agent
       copy C:\Zabbix\zabbix-7.0.0\bin\win64\zabbix_agent.exe C:\Zabbix\agent\
       copy C:\Zabbix\zabbix-7.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) для 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] (https://www.zabbix.com/download_sources#70LTS) и распакуйте его в C:\Zabbix\zabbix-7.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-7.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 Файлы\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 Файлы\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.0.0\bin\win64. Файл конфигурации агента Zabbix находится в папке C:\Zabbix\zabbix-7.0.0\conf.

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

mkdir C:\Zabbix\agent
       copy C:\Zabbix\zabbix-7.0.0\bin\win64\zabbix_agentd.exe C:\Zabbix\agent\
       copy C:\Zabbix\zabbix-7.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