ECCM — централизованная система мониторинга и управления сетевым оборудованием, реализованная в виде набора микросервисов, развёртываемых в Docker-контейнерах.
1. Архитектура системы
Архитектурный паттерн
Микросервисная архитектура на основе Docker-контейнеров. Межсервисная коммуникация: асинхронная через RabbitMQ (Pub-Sub, RPC) + синхронная через gRPC/Protobuf.
Функциональные возможности
- Управление устройствами — добавление, конфигурирование, шаблоны
- Конфигурирование
- WLC — профили SSID, RADIUS, Portal, Airtune, WIDS, привязки, мониторинг точек доступа
- MES
- Административное управление — профили (общий, VLAN, Interface , Switchport, Storm Control). IP-фабрика
- Оперативное управление — L1, L2, L3, VxLAN, EVPN Multihoming
- Кластер ESR — мониторинг и управление кластерными устройствами
- VSAT — MCPC/SCPC, MF-TDMA, мониторинг VSAT-устройств
- Мониторинг — мониторинг доступности, SNMP-опрос, телеметрия, инвентаризация, дашборды, карты сети
- Управление ПО — централизованное управление ПО на устройстве
- Web-конфигуратор — доступ до web-интерфейса устройства
- Web-терминал — SSH-доступ к CLI устройств через браузер
- Лицензии - Мониторинг и установка лицензий
- Конфигурирование
- Обнаружение проблем (Fault Management) — регистрация событий (syslog, SNMP trap), корреляция, MIB, уведомления, выявление проблемы устройств
- Уведомление— уведомление пользователей о событиях и проблемах как в системе так и на сети
- ZTP (Zero-Touch Provisioning) — автоматическая начальная конфигурация устройств через DHCP
- Управление сетью —дерево объектов, поиск
- Групповые операции над устройствами — групповые, перезагрузка, обновление ПО, конфигурирование и т.д.
- IP-Fabric — Построение IP-Fabric сети из устройств MES ROS 5+ с помощью высокоуровневого конфигурирования (ISIS, BGP, OSPF, L2/L3, VxLAN, EVPN Multihoming). Также есть автообнаружение.
- БШПД — обнаружение, добавление ТД + STA, мониторинг доступности, мониторинг радио метрик
- Кластер — кластер из WLC/ESR устройств одной модели, валидация состава, мониторинг состояние кластера: роли ACTIVE/STANDBY, статус синхронизации конфигов/ПО/лицензий и VRRP
- Спутниковый MCPC-сегмент — группа VSAT(EVT) устройств в режиме SCPC, где каждый терминал имеет выделенную несущую, хранение частотного плана, собственная логика валидации
- Спутниковый SCPC-сегмент — группа VSAT(EVT) устройств в режиме SCPC, где каждый терминал имеет выделенную несущую, хранение частотного плана, собственная логика валидации
- Спутниковый MF-TDMA-сегмент — иерархическая структура из трех групп VSAT(EVS/EVT) устройств, основная группа с частотным планом, параметров пакетов передач, параметров несущих обратных каналов, параметров группы несущих обратных каналов, сетевыми параметрами, подгруппа STATIONS для станций, подгруппа WORKSPACE для терминалов, защита от удаления при активном статусе сети(ENABLED, NO_SYNC), мониторинг сетевого статуса, синхронизация конфигурации устройства и системы
- Лицензирование — Лицензирование системы
- Публичное API — REST API для интеграции со внешними системами
- Конфигурирование параметров мониторинга
- Конфигурирование параметров опросов SNMP, ICMP, SSH. Также изменение интервалов опроса метрик и интервалов обнаружения и хранения сущностей мониторинга.
- Конфигурирование параметров доступа по SNMP, SSH.
- Интеграция с SIEM
- Безопасность
- Журналирование - Журнал действия пользователей, жкрныл безопасности, журнал API, настройка периода хранения.
- Авторизация/Аутентификация - OAuth/OIDC. LDAP
- RBAC - Ограничение доступа к системе на основе их служебных обязанностей (ролей)
- Администрирование паролей — настройка сложности, срока действия паролей.
Backend-сервисы
| Сервис | Назначение |
backend-ui | API Gateway |
device-manager | Основной сервис: управление устройствами, шаблоны, конфигурации |
monitoring-service | SNMP-опрос, сбор телеметрии (горизонтально масштабируемый) |
data-presenter | Агрегация и презентация данных (горизонтально масштабируемый) |
cron-manager | Планировщик задач на устройствах. Подключается по SSH и делает задачи. Также есть периодические задачи |
problem-manager | Корреляция событий, обнаружение проблем |
notification-service | Уведомления о событиях по каналам доставки |
delivery-manager | Используется для интеграции с SIEM, external alerting и подобным |
syslog-receiver | Приём syslog-сообщений от устройств |
trap-receiver | Приём SNMP trap от устройств |
upgrader | Управление ПО устройств, обновление |
ztp-manager | Zero-Touch Provisioning устройств |
terminal-manager | Web-терминал (SSH-сессии к устройствам) |
identity-provider | Аутентификация, авторизация, RBAC, OAuth/OIDC |
license-service | Лицензирование системы и функционала |
vsat-manager | Управление VSAT-устройствами |
| Сервис | Наружние порты | Внутренний порт | Примичание |
| backend-ui | - | 8081 | |
| device-manager | - | 8083 | |
| monitoring-service | - | 8088 | |
| data-presenter | - | 8089 | |
| cron-manager | - | 8082 | |
| problem-manager | - | 8099 | |
| notification-service | - | 8100 | |
| delivery-manager | - | 8102 | |
| syslog-receiver | ${ECCM_SYSLOG_PORT} | ${ECCM_SYSLOG_PORT} | Настраивается, по умолчанию 514 |
| trap-receiver | 162 | 162 | |
| - | 8098 | ||
| upgrader | 69 | 69 | |
| 2222 | 22 | ||
| - | 8084 | ||
| ztp-manager | - | 8095 | |
| terminal-manager | - | 8097 | |
| identity-provider | - | 9999 | |
| license-service | - | 8103 | |
| vsat-manager | - | 8105 |
Инфраструктурные сервисы
| Сервис | Назначение |
| TimescaleDB | Основная база данных: реляционные данные + временные ряды (телеметрия). HA-режим: repmgr (failover) |
| Redis | Кэш, сессии пользователей |
| Redis Sentinel | Сервис для обеспечения высокой доступности (High Availability) Redis в режиме кластреа |
| RabbitMQ | Межсервисная асинхронная коммуникация (Pub-Sub, RPC) |
| Nginx (ECCM Gateway) | API-шлюз, обратный прокси |
| Kea DHCP | DHCP-сервер для ZTP |
| epg-service | Сервис лицензирования оборудования |
| keepalived + VRRP | Виртуальный IP для HA-режима (cluster) |
| Сервис | Наружние порты | Внутренний порт | Примичание |
| TimescaleDB | 5432 | 5432 | |
| Redis | 6379 | 6379 | |
| Redis Sentinel | 26379 | 26379 | В режиме кластера |
| RabbitMQ | 5671 | 5671 | |
| 4369 | 4369 | В режиме кластера | |
| 25672 | 25672 | В режиме кластера | |
| Nginx (ECCM Gateway) | ${ECCM_WEB_PORT}, | 80 | Настраивается, по умолчанию 80 |
| ${ECCM_WEB_HTTPS_PORT} | 443 | Настраивается, по умолчанию 443 | |
| Kea DHCP | 67 | 67 | При включенном DHCP |
| epg-service | - | 8100 |
Frontend (Web GUI)
| Сервис | Назначение |
| Web GUI | Статическое фронтенд-приложение |
| Сервис | Наружние порты | Внутренний порт |
| Web GUI | - | 80 |
- Angular 20.3.18, TypeScript 5.8.3, RxJS 7.5.5
- Node.js 20 (среда сборки)
- Cytoscape — визуализация сетевой топологии
- Monaco Editor — редактор конфигураций
- xterm — web-терминал SSH
Сетевая архитектура (Docker сети)
external(по умолчанию подсеть 172.20.0.0/20, но может быть изменена через переменные окружения) — публичные сервисы (доступ к устройствам, API)internal(по умолчанию подсеть 172.21.0.0/20, но может быть изменена через переменные окружения) — межсервисная коммуникация (изолированная docker-сеть)
Режимы работы
| Standalone | Однохостовое развёртывание. Один сервер со всеми сервисами и базой данных |
| Cluster (HA) | Горячее резервирование из 3 узлов: master / slave / witness. PostgreSQL repmgr (синхронная репликация, failover), Redis Sentinel, RabbitMQ-кластер, keepalived + VRRP (виртуальный IP). TLS-шифрование межсервисной связи. |
2. Используемое программное обеспечение
Backend
| Компонент | Технология | Версия |
| Язык | Kotlin | 2.3.20 |
| Фреймворк | Spring Boot | 3.5.13 |
| JDK | JDK | 25 |
| Система сборки | Gradle | 9.4.1 |
Frontend
| Компонент | Технология | Версия |
| Фреймворк | Angular | 20.3.18 |
| Язык | TypeScript | 5.8.3 |
| Среда выполнения | Node.js | 20 |
| Реактивная библиотека | RxJS | 7.5.5 |
Инфраструктура
| Компонент | Технология | Версия |
| База данных | PostgreSQL | 16.11 |
| TimescaleDB | 2.24.0 | |
| Кэш и сессии | Redis | 8.4.2 |
| Message broker | RabbitMQ | 4.2.4 |
| API-шлюз | Nginx | 1.29.6 |
| DHCP-сервер | Kea DHCP | — |
| Epg-service | epg-service | 1.3 |
Среда развёртывания
| Компонент | Технология | Версия |
| Контейнеризация | Docker | 20.10+ |
| Оркестрация контейнеров | Docker Compose | v2.17+ |
Поддерживаемые операционные системы
- Ubuntu 22/24
- RED OS 7 / 8
- AstraLinux 1.7.5
- ALT Linux 10
3. Предварительные условия и ограничения
Минимальные системные требования
| Параметр | Минимум | Рекомендуется |
| CPU | 4 ядра | 8+ ядер |
| RAM | 16 ГБ | 16–32 ГБ |
| Диск | 200 ГБ | Зависит от объёма телеметрии и числа устройств |
Программные требования
- Docker 20.10+ (AstraLinux: docker-compose-v2 ≥ 2.17.0)
- OpenJDK 25 — для сборки из исходных кодов
Сетевые требования
- Сервер должен иметь доступ к управляемым устройствам по протоколам: SSH, SNMP, TFTP/SFTP
- Две Docker-сети:
external(устройства/внешние сервисы) иinternal(межсервисная коммуникация) - Для HA-режима требуется виртуальный IP (keepalived + VRRP)
Ограничения HA-режима (Cluster)
- Кластер состоит из 3 узлов: master, slave, witness
- Всё межсервисное общение в кластере шифруется TLS
- PostgreSQL: repmgr (синхронная репликация master ↔ slave, witness для quorum)
- Redis: Sentinel (failover при недоступности master)
- RabbitMQ: кластеризация с TLS (AMQPS)
- Необходимы TLS-сертификаты (кластерный сертификат + root CA)