Сборка агента 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-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 (доступен в виде 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