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.jar (в tests/, не входит в 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/ |
При расхождениях ориентируйтесь на файлы выше, а не только на этот документ; обновляйте страницу при добавлении новых опциональных компонентов.