Рекомендации по мониторингу и поддержке инфраструктуры Webitel

В документе Webitel Architecture описаны все возможные приложения Webitel и взаимодействие между ними. В текущем документе мы рассмотрим основные рекомендации относительно мониторинга и сопровождения инфраструктуры Webitel.

Ресурсы

Требования к аппаратному комплексу может отличаться, в зависимости от приложений, которые запущены на сервере либо VM, а также интенсивности использования проложения. Исправная операционная система, работающая поверх инфраструктуры, имеет решающее значение для поддержания стабильности всего комплекса приложений. Раннее выявление всплесков использования ресурсов, позволяет предотвратить возможные инциденты в будущем. 

Ниже приведем ключевые компоненты и рекомендации к мониторингу ресурсов.

База данных

Webitel использует базу данных PostgreSQL, которая выступает единым хранилищем как исторических, так и оперативных данных для всех сервисов. 

  • CPU - При выполнении сложных запросов, база данных максимально утилизирует процессорное время. Мониторинг должен следить, чтобы загрузка CPU не превышала 80% дольше 5 минут. Если очень часто наблюдается загрузка 80% и выше, то необходимо подключиться к анализу запросов либо увеличить количество ядер на сервере.

  • RAM - Большие и сложные запросы используют оперативную память для формирования ответа. Поэтому необходимо мониторить, чтобы объем занятой RAM не превышал 85%. Обратите внимание, что существует такие понятия, как used memory и cached memory. Cached memory временно используется и автоматически освобождается. Вам необходимо мониторить именно used memory (это же касается и других сервисов, где будет идти речь о мониторинге оперативной памяти).

  • Disk - Когда речь идет о дисках под базой данных, то важным является задержка чтения/записи на диск (disk latency). Медленный диск - означает медленную работу базы данных, и это влияет абсолютно на все приложения Webitel. Что касается свободного места на диске, то больше 90% занятого места - является критическим сигналом.

Хорошей практикой является использование репликации базы данных для работы с аналитическими отчётами (Grafana либо другого внешнего сервиса)

Consul и RabbitMQ

Для определения сервисов и обмена сообщениями, сервисы Webitel используют Consul и RabbitMQ. Основные критерии мониторинга ресурсов:

  • CPU - Загрузка на каждое ядро CPU не должна превышала 80% дольше 1 минуты.

  • RAM - Объем занятой RAM не должен превышать 80%.

  • Disk - Как и с базой данных — задержка чтения/записи на диск (disk latency) влияет на быстродействие всего комплекса приложений. Важно не забывать о мониторинге свободного места на диске, которое никогда не должно опускаться ниже 5% от общего объема диска либо меньше 5Gb.

Телефония

Для работы сервисов телефонии Webitel использует несколько приложений, а именно: OpenSIPS, FreeSWITCH и rtpengine. Для всех 3-х критически важным является утилизация процессорного времени.

  • CPUЕсли загрузка CPU превышать 60% на время дольше 5 минут, то это может негативно сказываться на качестве голоса (металлический голос, искажения, выпадания слов).

  • RAMЗагрузка оперативной памяти не должна превышать 80%.

  • DiskУровень свободного места на диске не должен опускаться меньше 10% от общего объема диска.

Записи разговоров

Хорошей практикой является использование S3 совместимого хранилища под записи разговоров. Если вы используете локальную файловую систему, то рекомендуем мониторить наличие свободного места на диске под записями, которое не должно опускаться ниже 10% от общего объема диска.

Сервисы Webitel

Нижи приводим общие рекомендации для других сервисов Webitel:

  • CPU - Загрузка на каждое ядро CPU не должна превышала 80% дольше 5 минут.

  • RAMЗагрузка оперативной памяти не должна превышать 90%.

  • DiskУровень свободного места на диске не должен опускаться меньше 10% от общего объема диска.

Сетевая доступность

Пропускная способность

Пропускная способность сети между серверами на которых развёрнуты все сервисы Webitel должна быть менее 100 Mbps со средним значением ping до 10мс без потерь пакетов.

Для обеспечения стабильной работы телефонии, между сервером телефонии и поставщиком SIP линий, должен быть обеспечен канал с параметрами, которые не превышают граничные значения:

  • Гарантированная пропускная способность канала в сторону провайдера телефонии не должна быть менее 10 Mbps (для 30 одновременных звонков с использованием G711 кодека);

  • Среднее значение параметра ping к серверу провайдера телефонии не должно превышать 100мс;

  • Значение параметра Packet Loss к серверу провайдера телефонии не должно превышать 1%;

  • Значение параметра Jitter к серверу провайдера телефонии не должно превышать 50 мс.

В сторону пользователей телефонии требования к гарантированному каналу не должно быть:

  • не меньше 512 kbps на 1 пользователя при использовании только чатов;

  • не меньше 1 Mbps на 1 пользователя при использовании чатов и аудиозвонков;

  • не меньше 5 Mbps на 1 пользователя при использовании чатов, аудио и видеозвонков;

Значение параметра Packet Loss к серверу провайдера телефонии не должно превышать 1%, а задержка не более 50 мс. Если задержка превышает 100мс, возможны проблемы с качеством голоса (искажения фраз либо выпадания слов).

Фильтрация трафика

Все сервисы Webitel должны свободно общаться между собой. Рекомендуем обратиться к документу Webitel Architecture, где описаны детали сетевого взаимодействия.

Порты сервисов

В таблице ниже приведем основные порты, которые необходимо мониторить на доступность:

Приложение

Порты

Приложение

Порты

Consul

8500/tcp

RabbitMQ

5672/tcp

PostgreSQL

5432/tcp

Opensips

5060/udp, 5060/tcp, 5061/tcp

FreeSWITCH

5080/udp, 5080/tcp

Nginx

443/tcp

Доступность сервисов

Важно проверять актуальность SSL сертификата для nginx.

Все сервисы Webitel должны быть запущены и работать:

webitel-app webitel-uac webitel-api engine messages-srv messages-bot flow_manager call_center storage freeswitch ngcp-rtpengine-daemon opensips grafana-server nginx

Мониторинг телефонии

Хорошей практикой является мониторинг SIP и RTP протоколов с помощью Homer. Настройка описана в статье Мониторинт SIP и RTP протоколов. Это позволить быстрее диагностировать проблемы связанные с качеством и доступностью телефонии.