Перейти к основному содержимому

FESB

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

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

Памир понимает структуру FESB и строит его сервисно-ресурсную модель (СРМ). СРМ FESB - это иерархическая структура, которая описывает компоненты FESB и их взаимосвязи. Она помогает систематизировать мониторинг, управление и планирование ресурсов.

Уровни модели СРМ

Тип сервера (кластер)  

├── ✅ FESB (Экземпляр FESB)
│ │
│ ├── ✅ Группа доменов (domain_group)
│ │ │
│ │ └── ✅ Домен (domain)
│ │ │
│ │ └── ✅ СОПС (маршруты)
│ │
│ ├── ✅ Менеджер очередей (QM)
│ │ │
│ │ └── ✅ Очередь (Queue)
│ │
│ ├── ✅ Канал (Channel)
│ │
│ └──✅ Приёмник (Connector) – при необходимости

├── ✅ Расширенный менеджер очередей (QME)
│ │
│ └── ✅Расширенная очередь (extended_queue)

├── Прочие компоненты (при необходимости)

└── Физические ресурсы OS (CPU, RAM, Disk, Network)

✅ — отмечены уровни, включённые в шаблон мониторинга FESB. Ниже приведены описания уровней модели.

FESB Сервер

Атрибуты:

  • Название: Имя FESB
  • Наименование КЕ: Отображаемое имя на дашбордах/графе.
  • IP адрес: IP-адрес сервера.
  • Ревизия: Дополнительная информация о сборке.
  • Версия продукта: Версия продукта.
  • Версия JVM: Версия виртуальной машины Java .
  • Путь установки: Корневая директория FESB (root_directory).

Группа доменов

Атрибуты:

  • Название: Имя группы доменов
  • Наименование КЕ: Отображаемое имя на дашбордах/графе.

Домен

Атрибуты:

  • Название: Имя домена.
  • Наименование КЕ: Отображаемое имя на дашбордах/графе.
  • Статус домена: запущен/остановлен .
  • Свойства Домена, Дополнительная конфигурация: Настройки домена
  • Константы: Служебные переменные, доступные внутри маршрутов.
  • GUID: Идентификатор домена.

Маршруты (СОПС)

Атрибуты:

  • Название: Имя маршрута
  • Состояние: Запущен/остановлен
  • Процессы обработки: Процессы обработки сообщений
  • Точки входа: Источники сообщений (коннекторы, очереди и т.д.).
  • ID: Идентификатор СОПС.
  • Ревизия: Версия или номер сборки маршрута.

Менеджер очередей

Атрибуты:

  • Название: Имя брокера
  • Наименование КЕ: Отображаемое имя на дашбордах/графе.
  • Статус: Текущее состояние, например RUNNING/STOPPED.
  • Настройки хранилища: Параметры хранения сообщений.
  • ID: Уникальный идентификатор брокера.
  • Настройки SSL: Сертификаты, шифрование.
  • Ограничения: Параметры лимитов на очередь/обмен.
  • Основные настройки: Конфигурация брокера.
  • Пользователи: Список пользователей и прав доступа.
  • Node Role: Роль узла в кластере (мастер, слейв и т.п.).

Очередь

Атрибуты:

  • Название: Имя очереди.
  • Наименование КЕ: Отображаемое имя на дашбордах/графе.
  • Свойства очереди: Настройки очереди.
  • Составная очередь: Использование композитной очереди.

Канал

Атрибуты:

  • Название: Имя канала.
  • Наименование КЕ: Отображаемое имя на дашбордах/графе.
  • Адрес подключения: IP/хост.
  • Порт: Порт соединения.
  • Протокол: Протокол подключения.
  • Дюплекс: Настройка duplex.
  • Статус: Состояние канала .
  • ID: Уникальный идентификатор.

Приёмник

Атрибуты:

  • Название: Идентификатор коннектора .
  • Наименование КЕ: Отображаемое имя на дашбордах/графе.
  • Всего подключений: Текущее число соединений .
  • Протокол: Протокол подключения.
  • Порт: Порт подключение.
  • Адрес обмена: Адрес, куда отправляются/принимаются сообщения.
  • Адрес подключения: Конечная точка подключения к источнику.

Расширенный менеджер очередей

Атрибуты:

  • Название: Имя брокера
  • Наименование КЕ: Отображаемое имя на дашбордах/графе.
  • Статус: Текущее состояние, например RUNNING/STOPPED.
  • ID: Уникальный идентификатор

Расширенная очередь

Атрибуты:

  • Название: Имя очереди.
  • Наименование КЕ: Отображаемое имя на дашбордах/графе.

Пример СРМ, на котором видны взаимосвязи между сервером FESB, брокерами, очередями, доменами и маршрутами graph

СРМ как основа мониторинга

СРМ PostgreSQL задает иерархию объектов (Сервер FESB → Менеджер очередей → очередь и т.п.), для каждого из которых собираются метрики.

Механизм сбора метрик

Сбор метрик осуществляется JSON экспортером

Метрики по уровню CRM

Уровень СРМ: FESB Сервер

Примеры метрик:

  • memoryHeap, memoryUsed, memoryFree, memoryMax: объём, использование и лимит heap JVM.
  • processorUsage: загрузка CPU.
  • disk_total, disk_used, disk_free: дисковое пространство.
  • uptime: непрерывное время работы.

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


Уровень СРМ: Домен

Примеры метрик:

  • domainStatus: 1 — домен запущен.
  • processedQty: обработано сообщений всеми маршрутами домена.
  • failed: ошибки маршрутов домена.

Single Value сводят статус домена, количество СОПС, число ошибок и незавершённых транзакций.
domain


Уровень СРМ: СОПС 

Примеры метрик:

  • processedQty: обработано сообщений данным маршрутом.
  • failed: необработанные ошибки.
  • exchangesInflight: сообщений «на лету».
  • route_state: 1 — Started, 0 — Stopped.

Линейные графики отображают: среднее время обработки, скорость обработки в сообщениях/с, среднее число сообщений за 5 минут и накопительное количество обработанных сообщений.
sops


Уровень СРМ: Менеджер очередей 

Примеры метрик:

  • qm_Status: RUNNING (1) / STOPPED (0).
  • queueSize: суммарная глубина очередей брокера.
  • activeConsumers: количество активных потребителей.
  • persistentStoreSize: размер message‑store на диске.

Single Value показывают статус брокера, роль MASTER/SLAVE, количество очередей, отправителей и получателей, а также усреднённые счётчики сообщений и глубину очередей.
qm


Уровень СРМ: Очередь 

Примеры метрик:

  • queueSize, messageCount: текущая глубина.
  • storeMessageSize: объём сообщений (байт).
  • consumerCount, producerCount: активные клиенты.
  • enqueueCount, dequeueCount: отправлено/изъято с момента запуска.
  • expiredCount: устаревшие сообщения.
  • inFlightCount, deliveringCount: сообщения в доставке.
  • scheduledCount: отложенные сообщения.
  • minMessageSize, maxMessageSize: минимальный/максимальный объём сообщения.
  • durable, paused: флаги durability и паузы.

Верхняя панель содержит Single Value (глубина, скорости прироста/разбора, прогноз разбора и размеры сообщений). Ниже линейные графики визуализируют изменение размера очереди, количество отправителей и потребителей.
ochered


Уровень СРМ: Канал 

Примеры метрик:

  • channel_status: RUNNING / FAILED.
  • duplex: true — двусторонний обмен.
  • start: время последнего запуска.

Single Value детализирует соединение: статус канала, ID, протокол, порт, удалённый адрес, duplex и другие параметры подключения.
chanel


Уровень СРМ: Расширенный брокер 

Примеры метрик:

  • qme_Status: RUNNING / STOPPED.
  • backup, active, replicaSynced: роли и состояние репликации.
  • uptime: время работы процесса.

Single Value показывают статус внешнего брокера, его активность, роль backup/active, локальный доступ, синхронизацию с репликой и uptime.
ext_qm


Уровень СРМ: Расширенная очередь

Примеры метрик:

  • queueSize, messageCount: глубина.
  • messagesAdded, messagesAcknowledged: добавлено/подтверждено.
  • deliveringCount, deliveringSize, persistentSize: доставка и диск.
  • consumerCount, producerCount: клиенты.
  • durable, paused, autoDelete: флаги конфигурации.
  • rate(messageCount[5m]): скорость прироста.

Single Value отражают ключевые показатели (размер, скорости, устаревшие/убитые сообщения, доставку, хранилище). Под ними — линейные графики динамики размера очереди, числа потребителей и добавленных сообщений за 5 минут.
ext_ochered

Индикаторы здоровья

Длина очереди

Следит, чтобы глубина очереди не вышла из‑под контроля.
Уровень СРМ: Очередь (Queue)
Метрика: queueSize
Порог: > 5000 сообщений
Причины:

  • Сообщения не обрабатываются (нет потребителей).
  • Сбой в маршрутах или сервисах.

Прогнозное время разбора очереди

Оценивает, сколько времени займёт полная обработка накопленных сообщений.
Уровень СРМ: Очередь
Метрика: (queueSize / rate(dequeueCount[5m])) / 60 (мин)
Порог: > 10 минут
Причины:

  • Низкая скорость обработки.
  • Частичная недоступность потребителей.

Скорость прироста сообщений очереди

Предупреждает, если сообщения прибывают слишком быстро.
Уровень СРМ: Очередь
Метрика: rate(queueSize[5m]) (msg/s)
Порог: > 100 msg/s
Причины:

  • Поток входящих сообщений превышает пропускную способность.
  • «Шторм» событий от внешних систем.

Скорость разбора сообщений очереди

Фиксирует ситуации, когда очередь почти не обрабатывается.
Уровень СРМ: Очередь
Метрика: rate(dequeueCount[5m]) (msg/s)
Порог: < 1 msg/s при queueSize > 0
Причины:

  • Потребители остановлены или «подвисли».
  • Ошибка логики обработки.

Незавершённые транзакции

Показывает зависшие обмены в маршрутах.
Уровень СРМ: СОПС
Метрика: sops_failed
Порог: > 200 за 5 минут
Причины:

  • Долгие операции с внешними сервисами.
  • Исключения внутри маршрута.

Ошибки маршрутов

Отслеживает всплеск необработанных исключений.
Уровень СРМ: СОПС
Метрика: failed
Порог: > 10 за 5 минут
Причины:

  • Некорректная логика интеграции.
  • Недоступность внешнего ресурса.

Состояние СОПС

Позволяет мгновенно увидеть, что маршрут остановлен.
Уровень СРМ: СОПС
Метрика: sops_Status (значение routeState)
Порог: routeState ≠ Started
Причины:

  • Ручная остановка на обслуживание.
  • Критическая ошибка в процессе.

Состояние домена

Показывает доступность всех маршрутов домена.
Уровень СРМ: Домен
Метрика: domainStatus
Порог: active = false
Причины:

  • Домен остановлен администратором.
  • Ошибка конфигурации.

Состояние канала

Сигнализирует о неработающих network‑коннекторах.
Уровень СРМ: Канал
Метрика: channelStatus
Порог: status ≠ RUNNING
Причины:

  • Сетевая ошибка или таймаут.
  • Неверный удалённый адрес.

Состояние менеджера очередей

Отражает доступность брокера сообщений.
Уровень СРМ: Менеджер очередей (QM)
Метрика: qm_Status
Порог: status = STOPPED или STARTING
Причины:

  • Процесс брокера остановлен.
  • Проблемы с хранилищем сообщений.

Высокая загрузка памяти FESB

Предупреждает о риске OOM и деградации производительности.
Уровень СРМ: FESB сервер Метрика: memoryUsed / memoryMax
Порог: > 0.85 (85 %)
Причины:

  • Наплыв сообщений, удерживаемых в памяти.
  • Утечки памяти в приложении.

Дашборды

Дашборд «FESB – Общая сводка» отображает показатели:

  • общее количество запущенных узлов FESB;
  • число брокеров (QM), доменов и очередей;
  • активные потребители, глубину очередей и среднюю скорость обработки.

Скриншот дашборда
FESB_MAIN


Дашборд «FESB – Системные ресурсы» показывает:

  • загрузку CPU;
  • использование памяти JVM (memoryHeap, memoryUsed, memoryFree, memoryMax);
  • занятое и свободное дисковое пространство;
  • uptime процесса, версии JVM и продукта.

Скриншот дашборда
fesb_system


Дашборд «Группы доменов» даёт обзор:

  • списка групп доменов;
  • количества доменов в каждой группе;
  • текущего статуса (OK / Warning / Error) каждой группы.

Скриншот дашборда
domain_group


Дашборд «Домен FESB» отображает:

  • свойства выбранного домена (ID, статус, константы);
  • список маршрутов (СОПС) с метриками processedQty, failed, exchangesInflight;
  • графики средней скорости обработки сообщений.

Скриншот дашборда
domain


Дашборд «Маршруты (СОПС)» показывает:

  • таблицу маршрутов с количеством обработанных сообщений и ошибок;
  • текущее состояние маршрута (route_state);
  • длительность последней обработки.

Скриншот дашборда
sops


Дашборд «Менеджер очередей (QM)» включает:

  • статус брокера (qm_Status, роль MASTER/SLAVE);
  • статистику по очередям (глубина, размер сообщений);
  • список каналов и приёмников с их состоянием;
  • использование хранилища сообщений.

Скриншот дашборда
qm


Дашборд «Канал FESB» отображает:

  • параметры соединения (удалённый адрес, протокол, порт, duplex);
  • текущий статус канала (channel_status).

Скриншот дашборда
chanel


Дашборд «Очередь FESB» показывает:

  • размер очереди (queueSize) и скорость прироста/разбора;
  • количество отправителей и потребителей;
  • объём сообщений в хранилище;
  • устаревшие и доставляемые сообщения.

Скриншот дашборда
ochered


Дашборд «Расширенные брокеры (QME)» даёт обзор:

  • их статусов (qme_Status, backup, active, replicaSynced);
  • времени непрерывной работы.

Скриншот дашборда
ext_qm


Дашборд «Расширенные очереди» отображает:

  • размер очереди и скорость прироста сообщений;
  • число потребителей и сообщений в доставке;
  • прогнозное время разбора;

Скриншот дашборда
ext_ochered


Файлы конфигурации

  • CI Types (TKE) — Конфигурационный файл, описывающий TКЕ.
  • Шаблоны FESB — Шаблон метрик и индикаторов здоровья.
  • Дашборды — Файл конфигурации дашбордов.
  • Экспортер — Файл настроек экспортёров для сбора метрик FESB.

Исторический мониторинг JSON/XML интеграционных взаимодействий

Расчет входящего потока и объема данных

Исходные данные:

  • Количество СОПС: 3 000
  • Сообщений на СОПС в час: 100
  • Событий на одно сообщение: 2 (начало, конец)
  • Средний размер тела сообщения: 10 КБ
  • Средний размер метаданных: 1 КБ
  • Размер одного трейс-события: 10 КБ + 1 КБ = 11 КБ

Расчеты:

  1. Общее количество событий в час: 3 000 СОПС * 100 сообщ./час * 2 события/сообщ. = 600 000 событий/час

  2. Общий объем данных в час: 600 000 событий/час * 11 КБ/событие = 6 600 000 КБ/час ≈ 6.3 ГБ/час

  3. Количество событий в секунду (RPS): 600 000 / 3600 сек = ~167 событий/сек

  4. Входящий поток данных (Throughput): 6.3 ГБ/час / 3600 сек/час ≈ 1.8 МБ/сек

  5. Объем данных в сутки: 6.3 ГБ/час * 24 часа ≈ 151 ГБ/сутки

Итоговые объемы для хранения (RAW - без учета сжатия):

  • За 1 неделю: 151 ГБ/сутки * 7 дней ≈ 1.06 ТБ
  • За 1 месяц (30 дней): 151 ГБ/сутки * 30 дней ≈ 4.5 ТБ
  • За 1 год (365 дней): 151 ГБ/сутки * 365 дней ≈ 55 ТБ

Расчет требований к Kafka

Используем те же допущения: хранение 3 дня, репликация x3.

ПараметрРасчетТребования
Входящий поток1.8 МБ/секОчень умеренная нагрузка.
Дисковое пространство151 ГБ/день * 3 дня * 3 реплики ≈ 1.4 ТБТребования к дискам невысокие. Подойдут стандартные SSD.
CPU/RAMС такой нагрузкой легко справится стандартный кластер из 3-х брокеров с ресурсами (например, 4 vCPU, 16 ГБ RAM на каждый). Система будет работать с большим запасом.
Кол-во партицийRPS в ~167 не является высоким. Для начала будет достаточно 6-12 партиций в топике для обеспечения параллелизма потребителей.

Расчет требований к ClickHouse

Используем допущение о сжатии 5x. Для JSON/XML с большим количеством текста и повторяющейся структурой это вполне достижимо.

Период храненияРасчетТребования к хранилищу
1 неделя1.06 ТБ / 5 ≈ 212 ГБМинимальные.
1 месяц4.5 ТБ / 5 ≈ 900 ГБВполне умеренно.
1 год55 ТБ / 5 ≈ 11 ТБЭто стандартный объем для одного сервера или небольшого кластера ClickHouse. Потребуются быстрые диски (NVMe) для хорошей производительности запросов.

4.2 CPU и RAM

ПараметрОценкаТребования
Нагрузка на запись1.8 МБ/сек — это очень низкая нагрузка для ClickHouse. Система может обрабатывать сотни МБ/сек.С записью справится даже один сервер. Кластер нужен в основном для отказоустойчивости и распараллеливания аналитических запросов.
CPU (ориентировочно)Для кластера из 2-3 нод будет достаточно 8-16 vCPU на ноду. Суммарно 16-48 vCPU.Это позволит одновременно и эффективно записывать данные, и выполнять сложные аналитические запросы от пользователей.
RAM (ориентировочно)32-64 ГБ на ноду. RAM в ClickHouse используется для словарей, кэшей и выполнения запросов.Этого объема будет достаточно для быстрой работы с данными объемом 11 ТБ.