Skip to content

Glaber — библиотеки и зависимости

English: LIBRARIES_AND_DEPENDENCIES.md

В этом документе перечислены внешние библиотеки и зависимости проекта Glaber, сгруппированные по языку и назначению. Составлено на основе системы сборки (configure.ac, m4/*.m4), пакетирования (build/*/SPECS/glaber.spec), манифестов UI (ui/composer.json, ui/package.json) и встроенных исходников в репозитории.

Последняя проверка: 2026-05-20 (Glaber 6.4.11 по configure.ac)


Краткий обзор

Область Основной механизм Примечания
Демоны C/C++ (server, proxy, agent) Autoconf + системные библиотеки Большинство возможностей опциональны через флаги ./configure
Встроенный C Duktape в дереве исходников Встроенный движок сценариев
Go (agent2, web service) Go toolchain + CGO → C libs Исходники ожидаются в src/go/ (может отсутствовать при неполном клоне)
Java (gateway) JDK + vendored JAR JAR в src/zabbix_java/lib/
PHP (веб-интерфейс) расширения PHP ОС + Composer Зависимости Composer в ui/vendor/
JavaScript (сборка UI) npm Только на этапе сборки (Vite, Vue, Tailwind)
Python Вспомогательные инструменты Роли Ansible appliance, скрипты анализа — не runtime ядра продукта

C и C++

Инструменты сборки

Необходимы для компиляции server, proxy, agent, sender, get и связанных бинарников:

Инструмент Назначение
GCC или Clang (g++, по умолчанию C++17 через --with-cxx-standard) Компиляция C/C++
GNU Autoconf, Automake, Libtool ./configure / make
GNU Make Оркестрация сборки
pkg-config Опционально; используется при наличии для части библиотек
ranlib Индексация статических библиотек

Опции configure: --enable-server, --enable-proxy, --enable-agent, --enable-agent2, --enable-webservice, --enable-java, --enable-ipv6, --enable-static, --with-cxx-standard=17|20|23.

Обязательные библиотеки (типичная сборка server/proxy/agent)

Подключаются или проверяются при сборке большинства демонов:

Библиотека Роль Configure / обнаружение
zlib Сжатие (обмен server/proxy) --with-zlib (обязательна при включённых server/proxy)
libpthread Потоки (PTHREAD_PROCESS_SHARED) --with-libpthread (обязательна при включённых server/proxy)
libiconv Преобразование кодировок --with-iconv (обязательна)
libpcre или libpcre2 Регулярные выражения (по умолчанию PCRE; PCRE2 через --with-libpcre2) --with-libpcre / --with-libpcre2
libresolv DNS-запросы Автоматически (configure завершится ошибкой при отсутствии)
libm, libdl, libpthread Математика, динамическая загрузка, потоки AC_CHECK_LIB / AC_SEARCH_LIBS
Платформенные libs напр. libsocket, libnsl, librt, libkvm, libexecinfo, libperfstat, libdevstat, libjail Автоопределение под ОС

СУБД (server/proxy — ровно одна)

Библиотека Мин. версия (configure) Флаг configure
Клиент MySQL/MariaDB (libmysqlclient / mariadb-connector-c) через mysql_config --with-mysql
Клиент PostgreSQL (libpq) 9.2+ --with-postgresql
Oracle OCI 10.0+ --with-oracle
SQLite3 --with-sqlite3 (только proxy; не подходит как основная БД server)

Зависимости сборки RPM (spec AlmaLinux 8): mariadb-connector-c-devel, postgresql-devel >= 12.0, sqlite-devel.

Опциональные библиотеки (server/proxy)

Библиотека Мин. версия Флаг configure Возможность
libxml2 --with-libxml2 Мониторинг VMware / XML
unixODBC --with-unixodbc Проверки ODBC
Net-SNMP 5.3.0 --with-net-snmp SNMP-мониторинг
libssh2 1.0.0 --with-ssh2 SSH-проверки (взаимоисключение с libssh)
libssh 0.6.0 (в сообщениях 0.7.0) --with-ssh SSH-проверки
OpenIPMI --with-openipmi IPMI-мониторинг
libevent --with-libevent IPC-сервисы (нужна при IPMI/IPC server/proxy)
GnuTLS 3.1.18 --with-gnutls TLS (взаимоисключение с OpenSSL)
OpenSSL (libssl, libcrypto) 1.0.1 --with-openssl TLS (взаимоисключение с GnuTLS)
OpenLDAP --with-ldap Аутентификация / синхронизация LDAP
libcurl 7.13.1 --with-libcurl Веб-мониторинг, HTTP-проверки агента
Boost (boost_filesystem) --with-boost Опционально; пути файловой системы

Зависимости сборки RPM для опций server: libxml2-devel, libevent-devel, openssl-devel, gnutls-devel, libcurl-devel, libssh-devel, net-snmp-devel, unixODBC-devel, openldap-devel, OpenIPMI, pcre-devel или pcre2-devel.

Опциональные библиотеки (agent)

Библиотека Мин. версия Флаг configure Возможность
libmodbus 3.0.0 --with-libmodbus Мониторинг Modbus
libcurl 7.13.1 --with-libcurl Веб-мониторинг (agent 2.0+)
TLS libs как у server --with-openssl или --with-gnutls Шифрованный обмен с агентом
OpenLDAP --with-ldap Функции агента, связанные с LDAP

C-библиотеки только для тестов

Библиотека Флаг configure Назначение
cmocka --with-cmocka Юнит-тесты (при наличии m4/conf_tests.m4)
libyaml --with-libyaml Тесты / утилиты конфигурации при включении

Встроенная C-библиотека (in-tree)

Библиотека Версия Расположение Лицензия
Duktape 2.7.0 src/libs/zbxembed/duktape.c, duktape.h Лицензия Duktape (в духе MIT)

Используется встроенным движком сценариев (zbxembed, zabbix_js, препроцессинг, скрипты).

Стандартные заголовки C/POSIX

Сборка проверяет большой набор системных заголовков (stdio, pthread, сокеты, resolv.h, платформенные sys/*, Windows API при кросс-компиляции и т.д.). См. configure.ac (AC_CHECK_HEADERS).


Go

Используется при сборке Agent 2 (--enable-agent2) и Web Service (--enable-webservice).

Требование Примечания
Компилятор Go (go в PATH) Обязателен; configure завершится ошибкой при отсутствии
CGO Линковка со статическими C-библиотеками Glaber и флагами TLS/PCRE (CGO_CFLAGS, CGO_LDFLAGS в configure.ac)
C-компилятор Тот же, что для сборки agent, для CGO
Thread-local storage Agent2/webservice требуют поддержки _Thread_local в компиляторе

Исходники Go ожидаются в src/go/ (упоминается в dist-hook Makefile.am и GOWORKDIR). Каталог может отсутствовать при неполном клоне; в полном дереве релиза там лежат исходники Agent2/Web Service.

Внешние модули Go (при наличии src/go) задаются в go.mod этого дерева — для точного списка выполните go list -m all в src/go после checkout.


Java

Java gateway (--enable-java): JMX и внутренние проверки.

Сборка и runtime

Требование Примечания
JDK javac, jar в PATH; RPM: java-devel >= 1.6.0
JRE Runtime: java-headless >= 1.6.0

Встроенные JAR-зависимости (src/zabbix_java/lib/)

JAR Назначение
android-json-4.3_r3.1.jar Разбор JSON org.json (AOSP libcore JSON)
slf4j-api-2.0.16.jar API логирования
logback-core-1.5.16.jar Ядро Logback
logback-classic-1.5.16.jar Реализация Logback

Только для тестов: junit-4.8.2.jartests/, не входит в production-установку).

В исходниках используются стандартные модули JDK: javax.management, java.net, java.util.concurrent и др.


PHP

Веб-интерфейс (ui/): отдаётся через PHP-FPM или Apache с PHP.

Runtime — версия PHP и расширения

По ui/include/classes/setup/CFrontendSetup.php и RPM glaber-web-deps:

Требование Детали
PHP >= 7.4.0
php-gd >= 2.0, PNG/JPEG/FreeType (предупреждение при отсутствии GIF)
php-bcmath Обязательно
php-mbstring Обязательно; mbstring.func_overload не должен ломать строковые функции
php-xml / libxml libxml >= 2.6.15
php-xmlwriter, php-xmlreader Обязательно
php-sockets Обязательно
php-ctype Обязательно
php-session Обязательно
php-gettext Обязательно
php-ldap Рекомендуется (предупреждение при отсутствии)
php-openssl Рекомендуется (SAML, HTTPS)
Драйвер БД Один из: mysqli (MySQL), pgsql (PostgreSQL), oci8 (Oracle)

Пакеты RPM: php-fpm, php-gd, php-bcmath, php-mbstring, php-xml, php-ldap, php-json, плюс php-mysqlnd или php-pgsql в зависимости от варианта.

Ожидания php.ini (мастер установки): memory_limit >= 128M, post_max_size >= 16M, upload_max_filesize >= 2M, max_execution_time / max_input_time >= 300, arg_separator.output = &.

Зависимости Composer (ui/composer.json)

Устанавливаются в ui/vendor/ (vendored в коммите):

Пакет Ограничение версии Назначение
symfony/yaml v5.1.3 Разбор YAML
onelogin/php-saml ^4.0 SAML SSO

Транзитивные (vendored):

Пакет Версия (установлена) Роль
robrichards/xmlseclibs 3.1.1 XML-цифровые подписи (SAML)
symfony/deprecation-contracts v2.5.1 Хелперы устаревания Symfony
symfony/polyfill-ctype v1.25.0 Полифилл ctype_*

Установка/обновление: composer install в ui/ (см. ui/composer.json).


JavaScript / TypeScript (сборка UI)

Только на этапе сборки — артефакты собираются через npm; на production-серверах с PHP не нужны, если UI не пересобираете.

Определено в ui/package.json:

Runtime-зависимости (включаются в сборку фронтенда)

Пакет Версия Назначение
vue ^3.5.25 UI-компоненты
@fortawesome/vue-fontawesome ^3.1.3 Иконки
@fortawesome/free-solid-svg-icons ^7.1.0 Глифы иконок

Dev-зависимости

Пакет Версия Назначение
vite ^7.3.0 Сборщик / dev-сервер
@vitejs/plugin-vue ^6.0.3 Поддержка Vue SFC
tailwindcss ^3.4.0 CSS utility framework

Скрипты: npm run build, npm run build:tailwind, npm run build:all (см. ui/package.json).

Lockfile: ui/package-lock.json (включая транзитивные зависимости: esbuild, PostCSS и т.д.).

Для npm нужен Node.js; используйте актуальный LTS, совместимый с Vite 7.

Устаревшая тема Sass может оставаться в sass/ для старых стилей; современный путь UI — Tailwind + Vite.


Python

Python не входит в runtime ядра Glaber server или веб-UI. Используется в:

Контекст Пакеты / применение
tests/vcdump_analyze/ python3 для vcdump_items_analyze.py
Ansible appliance (build/appliance/run/ansible/) python3-psycopg2, python3-mysqldb на целевых хостах для автоматизации БД
Общая автоматизация Playbook Ansible (в репозитории нет requirements.txt с фиксацией версий)

Зависимости ОС и развёртывания

Не линкуются на этапе компиляции, но требуются или типичны в пакетах и appliance:

Компонент Назначение
systemd Unit-файлы сервисов (glaber-server, glaber-proxy, glaber-agent и др.)
nginx или httpd Reverse proxy фронтенда (glaber-nginx.conf, пакет конфигурации Apache)
php-fpm PHP FastCGI
fping ICMP-проверки (RPM Requires server/proxy)
logrotate Ротация логов (пакет agent)
dejavu-sans-fonts Шрифты веб-UI
ClickHouse Опциональное хранилище истории в Docker appliance (build/appliance/run/docker/)
MySQL/MariaDB или PostgreSQL База конфигурации
Hurl Тестирование appliance (переменная hurl в ansible vars)

Docker Compose appliance также ссылается на образы вроде yandex/clickhouse-server:21.3.20 (см. build/appliance/run/docker/docker-compose.yml).


Краткая справка по configure

Типичные флаги ./configure для опциональных возможностей C/C++:

--with-mysql|--with-postgresql|--with-oracle|--with-sqlite3
--with-libxml2 --with-unixodbc --with-net-snmp
--with-ssh|--with-ssh2
--with-openipmi --with-libevent
--with-openssl|--with-gnutls
--with-ldap --with-libcurl
--with-libmodbus          # agent
--with-libpcre2           # PCRE2 вместо PCRE
--with-boost
--enable-agent2 --enable-webservice   # требуется Go
--enable-java                         # требуется JDK

Полный список: ./configure --help после autogen.sh.


Источники истины

Тема Расположение
Опциональные зависимости C/C++ configure.ac, m4/*.m4
Зависимости сборки RPM build/almalinux/8/SPECS/glaber.spec, build/altlinux/*/SPECS/glaber.spec
PHP Composer ui/composer.json, ui/vendor/composer/installed.json
Расширения PHP ui/include/classes/setup/CFrontendSetup.php
npm ui/package.json, ui/package-lock.json
Java JAR src/zabbix_java/Makefile.am, src/zabbix_java/lib/
Встроенный Duktape src/libs/zbxembed/
Стек appliance build/appliance/run/docker/, build/appliance/run/ansible/

При расхождениях ориентируйтесь на файлы выше, а не только на этот документ; обновляйте страницу при добавлении новых опциональных компонентов.