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, брокерами, очередями, доменами и маршрутами

СРМ как основа мониторинга
СРМ PostgreSQL задает иерархию объектов (Сервер FESB → Менеджер очередей → очередь и т.п.), для каждого из которых собираются метрики.
Механизм сбора метрик
Сбор метрик осуществляется JSON экспортером
Метрики по уровню CRM
Уровень СРМ: FESB Сервер
Примеры метрик:
memoryHeap,memoryUsed,memoryFree,memoryMax: объём, использование и лимит heap JVM.processorUsage: загрузка CPU.disk_total,disk_used,disk_free: дисковое пространство.uptime: непрерывное время работы.
Прогресс‑бары показывают текущую загрузку CPU, использование памяти и диска, а под ними линейные графики отражают динамику этих ресурсов во времени.

Уровень СРМ: Домен
Примеры метрик:
domainStatus: 1 — домен запущен.processedQty: обработано сообщений всеми маршрутами домена.failed: ошибки маршрутов домена.
Single Value сводят статус домена, количество СОПС, число ошибок и незавершённых транзакций.
Уровень СРМ: СОПС
Примеры метрик:
processedQty: обработано сообщений данным маршрутом.failed: необработанные ошибки.exchangesInflight: сообщений «на лету».route_state: 1 — Started, 0 — Stopped.
Линейные графики отображают: среднее время обработки, скорость обработки в сообщениях/с, среднее число сообщений за 5 минут и накопительное количество обработанных сообщений.

Уровень СРМ: Менеджер очередей
Примеры метрик:
qm_Status: RUNNING (1) / STOPPED (0).queueSize: суммарная глубина очередей брокера.activeConsumers: количество активных потребителей.persistentStoreSize: размер message‑store на диске.
Single Value показывают статус брокера, роль MASTER/SLAVE, количество очередей, отправителей и получателей, а также усреднённые счётчики сообщений и глубину очередей.

Уровень СРМ: Очередь
Примеры метрик:
queueSize,messageCount: текущая глубина.storeMessageSize: объём сообщений (байт).consumerCount,producerCount: активные клиенты.enqueueCount,dequeueCount: отправлено/изъято с момента запуска.expiredCount: устаревшие сообщения.inFlightCount,deliveringCount: сообщения в доставке.scheduledCount: отложенные сообщения.minMessageSize,maxMessageSize: минимальный/максимальный объём сообщения.durable,paused: флаги durability и паузы.
Верхняя панель содержит Single Value (глубина, скорости прироста/разбора, прогноз разбора и размеры сообщений). Ниже линейные графики визуализируют изменение размера очереди, количество отправителей и потребителей.

Уровень СРМ: Канал
Примеры метрик:
channel_status: RUNNING / FAILED.duplex: true — двусторонний обмен.start: время последнего запуска.
Single Value детализирует соединение: статус канала, ID, протокол, порт, удалённый адрес, duplex и другие параметры подключения.

Уровень СРМ: Расширенный брокер
Примеры метрик:
qme_Status: RUNNING / STOPPED.backup,active,replicaSynced: роли и состояние репликации.uptime: время работы процесса.
Single Value показывают статус внешнего брокера, его активность, роль backup/active, локальный доступ, синхронизацию с репликой и uptime.

Уровень СРМ: Расширенная очередь
Примеры метрик:
queueSize,messageCount: глубина.messagesAdded,messagesAcknowledged: добавлено/подтверждено.deliveringCount,deliveringSize,persistentSize: доставка и диск.consumerCount,producerCount: клиенты.durable,paused,autoDelete: флаги конфигурации.rate(messageCount[5m]): скорость прироста.
Single Value отражают ключевые показатели (размер, скорости, устаревшие/убитые сообщения, доставку, хранилище). Под ними — линейные графики динамики размера очереди, числа потребителей и добавленных сообщений за 5 минут.

Индикаторы здоровья
Длина очереди
Следит, чтобы глубина очереди не вышла из‑под контроля.
Уровень СРМ: Очередь (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 – Системные ресурсы» показывает:
- загрузку CPU;
- использование памяти JVM (
memoryHeap,memoryUsed,memoryFree,memoryMax); - занятое и свободное дисковое пространство;
- uptime процесса, версии JVM и продукта.
Скриншот дашборда

Дашборд «Группы доменов» даёт обзор:
- списка групп доменов;
- количества доменов в каждой группе;
- текущего статуса (OK / Warning / Error) каждой группы.
Скриншот дашборда

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

Дашборд «Маршруты (СОПС)» показывает:
- таблицу маршрутов с количеством обработанных сообщений и ошибок;
- текущее состояние маршрута (
route_state); - длительность последней обработки.
Скриншот дашборда

Дашборд «Менеджер очередей (QM)» включает:
- статус брокера (
qm_Status, роль MASTER/SLAVE); - статистику по очередям (глубина, размер сообщений);
- список каналов и приёмников с их состоянием;
- использование хранилища сообщений.
Скриншот дашборда

Дашборд «Канал FESB» отображает:
- параметры соединения (удалённый адрес, протокол, порт, duplex);
- текущий статус канала (
channel_status).
Скриншот дашборда

Дашборд «Очередь FESB» показывает:
- размер очереди (
queueSize) и скорость прироста/разбора; - количество отправителей и потребителей;
- объём сообщений в хранилище;
- устаревшие и доставляемые сообщения.
Скриншот дашборда

Дашборд «Расширенные брокеры (QME)» даёт обзор:
- их статусов (
qme_Status,backup,active,replicaSynced); - времени непрерывной работы.
Скриншот дашборда

Дашборд «Расширенные очереди» отображает:
- размер очереди и скорость прироста сообщений;
- число потребителей и сообщений в доставке;
- прогнозное время разбора;
Скриншот дашборда

Файлы конфигурации
- CI Types (TKE) — Конфигурационный файл, описывающий TКЕ.
- Шаблоны FESB — Шаблон метрик и индикаторов здоровья.
- Дашборды — Файл конфигурации дашбордов.
- Экспортер — Файл настроек экспортёров для сбора метрик FESB.
Исторический мониторинг JSON/XML интеграционных взаимодействий
Расчет входящего потока и объема данных
Исходные данные:
- Количество СОПС: 3 000
- Сообщений на СОПС в час: 100
- Событий на одно сообщение: 2 (начало, конец)
- Средний размер тела сообщения: 10 КБ
- Средний размер метаданных: 1 КБ
- Размер одного трейс-события: 10 КБ + 1 КБ = 11 КБ
Расчеты:
-
Общее количество событий в час:
3 000 СОПС * 100 сообщ./час * 2 события/сообщ. = 600 000 событий/час -
Общий объем данных в час:
600 000 событий/час * 11 КБ/событие = 6 600 000 КБ/час ≈ 6.3 ГБ/час -
Количество событий в секунду (RPS):
600 000 / 3600 сек = ~167 событий/сек -
Входящий поток данных (Throughput):
6.3 ГБ/час / 3600 сек/час ≈ 1.8 МБ/сек -
Объем данных в сутки:
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 ТБ. |