На странице описывается архитектура системы VoIP Monitor. В ней рассказывается о ключевых компонентах системы и объясняются основные модели развертывания: от простой установки «все в одном» до сложных распределенных решений для мониторинга нескольких объектов.

Основные компоненты

Система VoIP Monitor состоит из трёх основных логически разделённых компонентов (VoIP_Monitor Sensor(Slave)/Sensor(Master)/UI(Web_GUI)), которые могут работать на одном сервере или могут быть распределенными между несколькими машинами для обеспечения масштабируемости. Для первоначальной конфигурации/изменений/обновлений также требуется VoIP_Monitor Install Server.

Сенсор (Sniffer)

Сенсоры логически разделяются на Master и Slave. Основная задача slave-сенсора — прослушивание сетевого интерфейса, сбор данных о вызовах и передача их на master. 

Slave является пассивным сетевым анализатором по принципу работы схожим с такими инструментами, как tcpdump или wireshark. Выполняет следующие операции в режиме реального времени:

Master играет роль центрального обработчика информации. Его основной функционал:

При отсутствии отдельно вынесенных slave-сенсоров master выполняет функции slave. 

Важной функцией сенсоров также является сохранение данных о вызовах (как SIP-, так и RTP-потоки) на локальном диске в стандартном формате PCAP. Это позволяет проводить детальное устранение неполадок на уровне пакетов и воспроизводить вызовы прямо из графического интерфейса. Может выполняться как на slave, так и на master-сенсоре.

Веб-графический интерфейс (UI)

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

Install server — виртуальная машина или сервер, на котором выполняется подготовка к установке Voip Monitor и установка или добавление дополнительных сенсоров. Физически может находиться на виртуальной машине/сервере, где устанавливается master-сенсор или же на любом другом, имеющим доступность по протоколу SSH к другим серверам в составе Voip Monitor.

Требования к серверам

Для использования необходимы операционные системы:

  • Ubuntu 22.04 Server или выше;
  • astra linux 1.8.3 или выше.

Системные требования к slave- и master-сенсорам отличаются ввиду различий выполняемого ими функционала. Ниже приведены таблицы с указанием необходимых ресурсов в зависимости от количества одновременных вызовов.

Slave

Одновременные вызовыCPURAM (ГБ)Сеть (Гбит/с)
50141
200161
500281
10002101
20004121-10
500061610

Master

Одновременные вызовыCPURAM (ГБ)Сеть (Гбит/с)Диск RTP (ТБ/неделя)Диск БД (ГБ/неделя)
501410.11
2002810.51.5
50041611.253.5
100063212.57
20008641-10514
500016128101036

Данные таблицы применимы для случая, когда RTP сохраняется централизованно на master-сервере (packetbuffer_sender=yes). Ресурсы slave-сенсора требуются на сбор информации о вызовах и создание метаданных без сохранения RTP. В случае необходимости локального сохранения pcap на slave-сенсоре (packetbuffer_sender=no) следует ориентироваться на вторую таблицу в зависимости от того, сколько одновременных вызовов обрабатывает конкретный сенсор. При этом ресурсы диска для хранения базы данных в обоих случаях будут относиться к master-сенсору.

Для наиболее точного определения необходимого размера диска можно выполнить расчет следующим образом — 2 КБ требуется на одну запись CDR при включенном сжатии таблиц (mysqlcompress = yes). Емкость диска для хранения RTP можно вычислить из расчета:
2 МБ/минута на звонок × количество одновременных вызовов × часов в день × дней хранения.

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

Сценарии развертывания

Мониторинг отдельных VoIP-серверов (ECSS10/SMG и др.)

Для отслеживания работы нескольких VoIP-серверов есть три основных варианта архитектуры в зависимости от топологии вашей сети и требований:

Вариант 1: Универсальный сервер — централизованный мониторинг (рекомендуется для одного центра обработки данных/локальной сети)

Если оба VoIP-сервера находятся в одной локальной сети (в одной стойке/здании), проще всего направить трафик на один выделенный сенсор.

Вариант 2: Распределённая клиент-серверная архитектура: центральный Master/БД + графический интерфейс UI с удалёнными сенсорами Slave (рекомендуется для глобальных сетей/сайтов)

Для более крупных или географически распределённых сред рекомендуется использовать распределённую модель. Как правило, она включает в себя центральный сервер (Master) с графическим интерфейсом (UI либо сервер UI на отдельной машине) и базой данных, который собирает данные с одного или нескольких удалённых сенсоров (Slave). Удалённые сенсоры можно настроить двумя основными способами в зависимости от ресурсов, доступных на устройстве, на котором осуществляется сбор трафика.

Вариант 3: Независимые установки (простой, но менее масштабируемый)

Установите полное приложение VoIP Monitor (сенсор + локальная база данных + дополнительный локальный графический интерфейс) на каждый из серверов VoIP.

Описание модулей

Проект VoIP Monitor состоит из двух модулей VoIP monitor core и VoIP monitor UI.

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

VoIP Monitor UI

Клиентский модуль представляет собой три Docker-контейнера, описание которых приведено ниже.

API\BFF (NestJS)

Осуществляется взаимодействие с VoIP Monitor core:

Таблицы, которые были созданы:

Client (Angular)

Отображает интерфейс.

Authorization (Keycloak):

Предоставляется базовый функционал авторизации, есть один пользователь по умолчанию, можно создать дополнительных в панели администратора Keycloak. Связан только с контейнером Client (Angular).

VoIP Monitor core

Модуль VoIP Monitor core представляет собой два Docker-контейнера:


Варианты использования продукта

UI вынесен на отдельный хост

UI ставится на удаленный от VoIP core хост, подключается к нему по SSH и "пересылает" нужные порты (активные звонки\история вызовов) на свои порты. Файловую систему читает c удаленного хоста VoIP core для снятия детализации по SIP.

UI развернут локально с master-сенсором

UI ставится на локальный VoIP core хост, слушает свои порты, поскольку они заняты VoIP core. Файловую систему читает свою для снятия детализации по SIP.

UI развернут локально с master-сенсором без вынесенных slave-сенсоров

UI ставится на локальный VoIP core хост (master), слушает свои порты, поскольку они заняты VoIP core. Файловую систему читает свою для снятия детализации по SIP. Удаленные slave-сенсоры отсутствуют.