Начинаем серию самых интересных статей по докладам с ежегодной технической конференции Firebird Conf. Алексей Мараховец, продакт-оунер и сооснователь 10-Strike Software, рассказал об опыте применения Firebird в продукте для мониторинга сети. В своем докладе Алексей рассмотрел причины выбора данной СУБД, проанализировал преимущества и недостатки её применения, а также поделился техническими аспектами интеграции и эксплуатации.

Всем привет! Меня зовут Алексей Мараховец, сегодня я расскажу о применении Firebird в продукте для мониторинга сети, который мы выпускаем с 2015 года.

Наша компания называется 10-Strike Software, и мы специализируемся на решениях для системного администрирования. В 2003 году запустили наши первые продукты для мониторинга локальных сетей организаций. Одним из флагманских продуктов является Мониторинг Сети Pro – это система для мониторинга серверов и оборудования, которая позволяет своевременно узнавать о произошедшем сбое (разрывах связи, остановках служб и т. п.) и устранять проблему с минимальными потерями времени.

Архитектура ПО и где используется Firebird

Архитектура «Мониторинг Сети Pro» построена по топологии «звезда»: в центре находится база данных Firebird, к которой подключены все остальные компоненты системы. Хранение накопленной статистики, все параметры мониторинга – это все находится под управлением Firebird.

Центральным компонентом системы является сервер мониторинга, который осуществляет обработку данных мониторинга и отправку уведомлений в случае возникновения сбоев.

Для сбора данных, недоступных через стандартные сетевые протоколы, используются удаленные агенты. Они подключаются к датчикам материнской платы и передают данные по сети серверу мониторинга.

В инструменте есть графическая консоль, представляющая собой некий дашборд администратора, который также интегрируется с Firebird и отображает статистические данные и строит графики.

Для поставщиков услуг мониторинга предусмотрен модуль-провайдер, объединяющий различные организации под единым дашбордом. Он позволяет получать статистику по каждой организации, включая информацию о состоянии системы и выявленных сбоях.

Технологический стек или что под капотом?

Изначально продукт создавался для ОС Windows, но последние два года мы переводим наш продукт на ОС семейства Linux, включая РЕД ОС, ALT, Astra, Ubuntu и Debian.

В качестве языка программирования используем Delphi. Почему? Всё просто: с самого начала создания компании мы выбрали эту среду, и она оказалась достаточно мощной. Продукты в ней успешно компилируются под разными версиями Delphi и даже работают под Wine. В последствии мы также начали использовать C++, Java и C#.

В качестве фреймворков применяем VCL, QT для Linux, .Net и GWT.

Изначально мы использовали Firebird версии 2.5, но со временем возникла потребность обновления на более свежие 3 и 5. Учитывая огромные масштабы распространения продукта, сложно оперативно перевести клиентов на более свежие версии, но мы ведем активную работу по обновлению.

Для контроля версий используется Bitbucket и Trello для управления.

Критерии выбора СУБД — на что стоит обратить внимание?

В 2015 году мы поняли, что наш продукт для мониторинга, работавший на текстовой базе данных, нуждается в серьезном обновлении. Нам требовалась СУБД, которая могла бы эффективно хранить данные, стабильно работать и масштабироваться. Почему мы выбрали Firebird, а не PostgreSQL, MySQL или даже не MS SQL Server?

Ключевым фактором стало бесплатное использование в коммерческом ПО. Это позволило значительно снизить расходы на приобретение и обслуживание. Компактность дистрибутива была также важна: Firebird занимает гораздо меньше места, чем PostgreSQL и MySQL, что положительно сказывается на весе конечного продукта.

Наличие встроенной версии (Embedded) стало дополнительным плюсом. Хотя на момент выбора это не было приоритетом, этот функционал оказался полезным.

Механизм событий (Events) для связывания компонентов распределенного ПО мониторинга позволил создать систему оповещения клиентов о любых изменениях в базе данных.

Наличие готового дистрибутива под Linux упростило развертывание на различных операционных системах.

Историческая преемственность, связанная с тем, что Firebird основан на открытых исходных текстах InterBase, позволила продолжить работу с проверенной и надежной технологией.

Что мы используем в Firebird?

В настоящее время используется Firebird версии 3 и планируется обновление до версии 5.

1) Events: «горячее» конфигурирование серверов мониторинга

В рамках системы мониторинга мы реализовали возможность интеграции различных компонентов через протоколы передачи данных. Основным протоколом, обеспечивающим взаимодействие между ядром мониторинга, программой управления и базой данных, является TCP. Однако, помимо этого традиционного подхода, также предусмотрен альтернативный механизм, основанный на использовании базы данных.

Консоль системы позволяет администратору настраивать параметры мониторинга, добавлять новые проверки и вносить изменения в существующие конфигурации. Эти действия фиксируются в базе данных, что вызывает срабатывание соответствующих триггеров и генерирует инвент. Служба мониторинга, подписанная на эти события, получает уведомления об изменениях, обновляет свои внутренние данные и продолжает работу уже с новыми параметрами.

Это позволяет реализовать «горячее» (hot) конфигурирование серверов мониторинга без необходимости их перезагрузки или остановки работы.

2) Linux: дистрибутивы ПО для отечественных РЕД ОС, Astra Linux, ALT Linux

Используется дистрибутив Linux, который развёртывается на РЕД ОС, Astra и Alt. В апреле 2024 года была подтверждена совместимость дистрибутива компании с РЕД ОС версий 7.3 и 8.0. В ходе тестирования все компоненты были успешно развернуты и стабильно функционируют.

3) Таблицы статистики по 100+ млн. записей

Таблица статистики собирает данные о состоянии инфраструктуры организации, включающей до 10 тысяч компью��еров. На каждом компьютере проверяются от 5 до 10 различных сервисов с интервалом в одну минуту. В результате за сутки генерируется несколько миллионов записей. За месяц объём накопленных данных составляет уже сотни миллионов записей. В программе предусмотрен механизм автоматического архивирования и очистки ненужной статистики. Также создаются резервные копии базы данных.

4) Embedded: связка встроенной и основной БД. Повышаем надёжность ПО

Для обеспечения непрерывности работы системы мониторинга в случае отказа центрального сервера базы данных, мы внедрили механизм использования встроенной базы данных. Он включает в себя создание файла, содержащего структуру и данные центральной базы данных. Встроенный экземпляр базы данных устанавливается вместе с сервером мониторинга и активируется в случае разрыва связи с центральным сервером.

При обнаружении разрыва связи служба мониторинга переключается на использование встроенной базы данных. Все текущие настройки и данные оперативной памяти сохраняются в этом файле. После восстановления связи с центральным сервером накопленные данные переносятся обратно, что позволяет избежать потери информации.

5) Мультипотоки: тысячи подключений к одной БД с разных серверов

Система мониторинга обрабатывает сотни запросов и записывает данные в нескольких потоках, что позволяет одновременно выполнять десятки и сотни параллельных запросов к различным сервисам.

В таблице представлены тактико-технические характеристики базы данных, которые используются для мониторинга. Хотя информация может показаться не особенно интересной, она представляет собой конфигурацию, рекомендованную для систем Firebird и доступную на специализированных ресурсах, таких как E-base.ru.

Таблиц: 28 Таблиц статистики: 4

Средняя скорость заполняемости таблиц: 1,4 млн записей в сутки (из расчета 1000 проверок с интервалом 60 сек)

Таблиц с blob: 2 (png, jpg < 1920x1080)

firebird.conf:

DefaultDbCachePages = 100K

FileSystemCacheThreshold = 2M

TempBlockSize = 2M TempCacheLimit = 1000M

LockMemSize = 15M

LockHashSlots = 30011

ServerMode = Super

Указанные параметры конфигурации мы успешно применяем в системе. Наиболее важными являются четыре таблицы статистики, которые ежедневно пополняются несколькими миллионами записей.

6) JDBC: подключение к базе Firebird из сервлета Java

Для обеспечения кроссплатформенной совместимости и удобства использования был   разработан веб-интерфейс на Java + GWT. Приложение полностью повторяет функциональность десктопной версии, включая внешний вид и основные принципы работы. Взаимодействие с базой данных Firebird осуществляется через JDBC-драйвер. 

Firebird в Linux

Сначала мы попробовали развернуть свой продукт под Wine и оказалось, что прямое использование клиентской части СУБД Firebird, разработанной для Windows, в среде Linux невозможно из-за несовместимости с файловой системой и драйверами.

Для решения проблемы использовали клиентскую часть Firebird, адаптированную для Linux, а также веб-сервер Jetty и среду выполнения Java. Веб-сервер Jetty обеспечивает поддержку сервлетов Java, а Java-приложение работает на базе Libericа JDK, российской версии Java.

Для совместимости с различными версиями Wine мы создали собственный дистрибутив, включающий все необходимые компоненты. Дистрибутив представляет собой единый файл tar.gz, который можно скачать с сайта и установить с помощью скриптов. После установки пользователь получает готовое к использованию приложение с иконкой на рабочем столе, которое работает как в Linux, так и через Wine.

Таким образом, мы достигли своей цели — создали универсальный дистрибутив, который позволяет использовать СУБД Firebird в различных операционных системах семейства Linux.

Подведем итоги

В целом, Firebird имеет множество преимуществ среди своих конкурентов. Основными критериями выбора стали бесплатное использование в коммерческом ПО без необходимости раскрытия кода и компактность дистрибутива для оптимизации размера конечного продукта. СУБД Firebird соответствует этим требованиям, предлагая также ряд дополнительных преимуществ: поддержку встроенного режима (embedded), механизм событий (events) для реализации межкомпонентного взаимодействия в распределённой системе мониторинга, кроссплатформенность с готовыми дистрибутивами для Linux.

Однако есть и вопросы, которые пока ещё находятся в стадии решения. Большой объём накопленной статистики приводит к росту файла базы данных. Механизм автоматического удаления старой статистики снижает количество записей, но из-за версионности Firebird не уменьшает размер самого файла. Сейчас мы рекомендуем нашим пользователям проводить процедуру backup/restore для уменьшения размера файла БД, но всё ещё в поиске автоматизированного решения.

Несмотря на   это, Firebird остаётся эффективным решением для нашей архитектуры. Мы уже перешли на Firebird 5, в будущем планируем внедрить механизм репликации, создать конструктор отчётов и мобильное приложение.

Понравилась статья? Присоединяйтесь к сообществу пользователей, администраторов и разработчиков Firebird и послушайте доклады лично в этом году!

Зарегистрироваться в качестве участника

Посмотреть доклад Алексея Мараховец в RUTUBE