ECCM — централизованная система мониторинга и управления сетевым оборудованием, реализованная в виде набора микросервисов, развёртываемых в Docker-контейнерах.
Микросервисная архитектура на основе Docker-контейнеров. Межсервисная коммуникация: асинхронная через RabbitMQ (Pub-Sub, RPC) + синхронная через gRPC/Protobuf.
| Сервис | Назначение |
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 | Веб-терминал (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 |
| Сервис | Назначение |
| Web GUI | Статическое фронтенд-приложение |
| Сервис | Наружные порты | Внутренний порт |
| Web GUI | - | 80 |
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-шифрование межсервисной связи |
| Компонент | Технология | Версия |
| Язык | Kotlin | 2.3.20 |
| Фреймворк | Spring Boot | 3.5.13 |
| JDK | JDK | 25 |
| Система сборки | Gradle | 9.4.1 |
| Компонент | Технология | Версия |
| Фреймворк | 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+ |
| Параметр | Минимум | Рекомендуется |
| CPU | 4 ядра | 8+ ядер |
| RAM | 16 ГБ | 16–32 ГБ |
| Диск | 200 ГБ | Зависит от объёма телеметрии и количества устройств |
external (устройства/внешние сервисы) и internal (межсервисная коммуникация)