1. Сборка 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. Во время установки обязательно выберите рабочую нагрузку Разработка классических приложений на C++, которая включает инструменты, необходимые для сборки агента с помощью vcpkg:
- Компилятор C (Microsoft Visual C++)
- Средство командной строки NMake
- Менеджер пакетов vcpkg
- "x64 Native Tools Command Prompt"
2. Откройте cmd.exe с правами администратора, инициализируйте 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. Откройте "x64 Native Tools Command Prompt" и скомпилируйте агент Zabbix, выполнив скрипт:
cd C:\Zabbix\zabbix-7.4.0\build\win32\project
build.bat
Если вы открыли другую командную строку, сначала инициализируйте среду сборки Visual Studio:
"%ProgramFiles(x86)%\Microsoft Visual Studio\2022\BuildTools\VC\Auxiliary\Build\vcvarsall.bat" x64
cd C:\Zabbix\zabbix-7.4.0\build\win32\project
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 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-sharedZabbix использует 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] (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
make dist
Будет создан архив с исходным кодом, который затем можно скопировать на машину Windows.
2. Перейдите в каталог сборки Zabbix, откройте "x64 Native Tools Command Prompt" и скомпилируйте агент Zabbix (или другие компоненты); убедитесь, что каталоги установки OpenSSL и PCRE2 указаны правильно:
# Если открыта другая командная строка, сначала инициализируйте среду сборки Visual Studio:
"%ProgramFiles(x86)%\Microsoft Visual Studio\2022\BuildTools\VC\Auxiliary\Build\vcvarsall.bat" x64
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