Яндекс.Метрика

Курс Zabbix: мониторинг Asterisk и VoIP

Курс Zabbix: мониторинг Asterisk и VoIP с 10 ноября по 14 ноября

Количество
свободных мест

8 Записаться

Курс по Asterisk

Интенсив-курс по Asterisk с 29 сентября по 3 октября

Количество
свободных мест

5 Записаться

Курсы по Mikrotik MTCNA

Курсы по Mikrotik MTCNA с 13 октября по 16 октября

Количество
свободных мест

3 Записаться
Asterisk monitoring. Homer в docker и captagent. Настройка.
98
Мастер-класс
Илья Панько
Asterisk monitoring. Homer в docker и captagent. Настройка.

Asterisk monitoring. Homer в docker и captagent. Настройка.

Практическая задача: обеспечить постоянный и пригодный для обмена сбор SIP-дебага в системах VoIP на базе Asterisk, с возможностью ретроспективного анализа и быстрого экспорта PCAP для операторов связи. Рассматриваются типовые инструменты (консольный лог Asterisk, less/tail/grep, tcpdump/Wireshark, sngrep) и их ограничения, после чего предлагается промышленное решение на основе стека Homer (SIPCapture) и протокола HEP. Дополнительно затрагиваются вопросы развертывания в Docker, ограничения по хранению, сбор метрик (Prometheus/Grafana/Loki) и альтернативные агенты (captagent, HEPlify). Приводятся практические оценки по дисковым ресурсам и минимальные конфигурации.

Зачем нужен системный мониторинг и SIP-дебаг

Проблемы в телефонии часто возникают ниже уровня диалплана: на границах с провайдерами, на сетевом уровне или при взаимодействии конечных устройств. Типовой запрос от оператора связи — предоставить PCAP с SIP (а нередко и с RTP/RTCP), а от внутренних пользователей — «звонок не проходит/рвётся». Для таких кейсов требуется:

  • фиксировать сигнализацию и (при необходимости) медиатрафик постоянно;
  • иметь временные метки, порядок сообщений и чистый протокол без «шумных» строк Asterisk;
  • быстро фильтровать интересующие вызовы и экспортировать PCAP, пригодный для разбора на стороне провайдера.

Базовые методы и их ограничения

1. Логи Asterisk

  • Включение SIP-логирования: для PJSIP: pjsip set logger on, для chan_sip: sip set debug on.
  • Запись попадает в обычные текстовые логи (например, /var/log/asterisk/full), где присутствуют служебные сообщения Asterisk (Verbose, Warning и т. п.).
  • Плюсы: доступно «из коробки», видны временные метки.
  • Минусы: протокол зашумлён, провайдеры обычно не принимают такие выжимки; на нагруженной АТС «онлайновое» чтение непрактично.

2. less, tail -f, grep/egrep

  • Удобно для точечного поиска по логам (по номеру, Call-ID и т. п.).
  • Плюсы: быстро, доступно в любом Linux; less уверенно открывает очень большие файлы.
  • Минусы: это всё ещё текстовые логи Asterisk, без структурированного SIP и без удобного экспорта PCAP.

3. tcpdump/Wireshark

  • Позволяют ловить SIP/UDP, фильтровать и писать сразу в pcap.
  • Плюсы: формат устраивает провайдеров.
  • Минусы: на нагруженных системах «подхватить» нужный момент сложно; постоянная запись в скрин/крон порождает хрупкие решения и проблемы с хранилищем.

4. sngrep

  • Практически обязательный инструмент: интерактивный просмотр SIP-диалогов и сохранение PCAP, включая RTP при необходимости.
  • Плюсы: интерфейс, фильтры (From, To, Call-ID), запись PCAP по выбранным сессиям.
  • Минусы: подходит для оперативной съёмки «здесь и сейчас». Для ретроспективного анализа за вчера/на прошлой неделе нужен постоянный сбор.

Вывод: для продакшн-контуров требуется централизованный, постоянный сбор SIP-сигнализации (а по потребности — и RTCP/RTP) с удобным поиском и экспортом PCAP. Эту роль закрывает стек Homer.

Решение: Homer (SIPCapture) и протокол HEP

Что такое HEP

HEP (Homer Encapsulation Protocol) — лёгкая инкапсуляция SIP/RTCP/прочих событий для доставки в коллектор Homer. Протокол поддерживается нативно рядом SIP-платформ и агентами.

Поддержка в Asterisk

  • Нативный HEP доступен, начиная с Asterisk 12+ для стека PJSIP (модуль res_hep_pjsip.so).
  • Для chan_sip нативной поддержки HEP нет — потребуется агент.

Агенты

  • captagent — системная служба, собирает трафик и шлёт его в Homer по HEP; гибкая конфигурация (транспорт, TLS, таймауты, отдача в Redis/JSON и пр.).
  • HEPlify (hepify/HEPlifyd) — лёгкие агенты для пересылки в HEP.
  • Нативный HEP в PJSIP позволяет обойтись без агентов, если подходит функциональности.

Развёртывание стека Homer в Docker

Стек включает UI Homer, базу PostgreSQL, сбор метрик (Prometheus), визуализацию (Grafana) и логи (Loki). Развёртывание через docker compose избавляет от тонкой настройки сервисов и автозапуска.

  • Веб-интерфейс Homer по умолчанию: порт 9080 (доступ по admin/admin, рекомендуется сменить).
  • Порт HEP по умолчанию: 9060/UDP (можно изменить).
  • Примерная нагрузка на сервер при сборе только SIP умеренная; стек пригоден для запуска на той же машине, где работает Asterisk (при наличии ресурса).

Управление объёмом хранения

Критический момент — ограничить рост БД. В docker-compose стека предусмотрена опция наподобие:

HOMER_DB_DROP_DAYS = 3

Рекомендуется привести параметры хранения к единому горизонту (например, 3–7 дней) во всех компонентах, чтобы стек не «съедал» диск.

Практическая оценка: при 5 серверах Asterisk и суммарно ~7–10 тыс. вызовов/сутки хранение 3 дней SIP-сигнализации (без RTP) занимает порядка 40–50 ГБ. Для горизонта в неделю дисковый запас следует наращивать пропорционально. Для продуктивных стендов разумно планировать 80–100 ГБ под SIP при нескольких тысячах вызовов в день.

Подключение Asterisk к Homer (PJSIP → HEP)

Убедиться, что загружен модуль:

module load res_hep_pjsip.so

Минимальная конфигурация hep.conf (псевдопример):

[general]
enabled = yes

[hep]
; Куда отправлять HEP
server       = 10.10.10.10        ; IP сервера Homer
port         = 9060               ; UDP-порт HEP
capture-id   = 1234               ; идентификатор источника (для фильтрации)
; auth-password = secret          ; при необходимости аутентификации

Перезапустить/перезагрузить модуль и включить логгер PJSIP:

pjsip set logger on

После этого SIP-сообщения будут поступать в Homer почти мгновенно. По capture-id удобно фильтровать звонки из конкретного узла, когда к одному Homer подключены несколько АТС.
Для chan_sip вместо нативного HEP использовать captagent/HEPlify, установленный рядом с Asterisk и слушающий соответствующие интерфейсы.

Работа в веб-интерфейсе Homer

  • Рекомендуется заранее добавить в фильтры поля: Source/Destination IP/Port, User-Agent, Call-ID, To/From User, Capture-ID и др.
  • Установить локальный часовой пояс (иначе возможны ложные «пустые» результаты при поиске за «не тот» день).
  • По найденному вызову доступен полный SIP-диалог с дельтой времени между сообщениями; именно тут быстро выявляются задержки ответа провайдера (например, 100 Trying через сотни миллисекунд/секунды).
  • Экспорт PCAP — штатная функция в карточке сессии, формирует корректный файл для оператора.
  • PCAP uploader — обратная функция: загрузка готовых PCAP в Homer для их просмотра и сопоставления (например, с логами со стороны провайдера).

Метрики и логи: Prometheus / Grafana / Loki

В состав стека включены готовые дашборды:

  • SIP Overview — инвайты/регистры, распределение кодов ответов (404/486/5xx и т. п.).
  • Errors/KPI — доли ошибок, пики, средние.
  • QoS (RTCP) — при наличии RTCP отображаются jitter, packet loss и другие показатели качества.

Когда агенты уместны

captagent целесообразен, если нужна расширенная логика: дополнительные транспорты (включая TLS), иные таймауты, дублирование потока (JSON/Redis), фильтрация на стороне агента и т. п. В минимальных установках с PJSIP достаточно нативного HEP.

Эксплуатационные заметки

  • Дисковая подсистема: главный потребитель места — PostgreSQL. Вынесение тома БД на отдельный раздел или быстрый диск повышает устойчивость.
  • Ротация: помимо DB_DROP_DAYS, стоит проверить размеры логов (Loki и сопутствующие) — привести сроки хранения к единому горизонту.
  • Сетевые фильтры: открыть UDP 9060 от источников к Homer; веб-порт 9080 ограничить по ACL/VPN; дефолтные учётные записи заменить.
  • Поиск «по вчера»: в UI следить за указателем даты/интервала (частая причина «пустых» выдач — остался вчерашний день).

Связанные системные симптомы: при жалобах на «металлический звук»/обрывы полезно контролировать ОС-метрики:

  • top/htop — CPU, load;
  • iotop — задержки записи/чтения диска (частая причина проблем при записи разговоров);
  • atop — сводные показатели по CPU/диску/сети с возможностью записи и последующего просмотра.

Альтернативы и совместное использование

В качестве альтернативы нередко рассматривается SIP3 (включая сценарии с RTP). Выбор платформы зависит от требований к медиазахвату, удобству UI, объёму и бюджету. Для большинства задач мониторинга сигнализации и разбирательств с операторами достаточно стека Homer (+HEP), а RTP целесообразно включать точечно.

Краткая «памятка по шагам»

  1. Поднять стек Homer в Docker (docker compose up -d), веб — 9080, HEP — 9060/UDP.
  2. Ограничить хранение: настроить …DB_DROP_DAYS и иные ретенции (3–7 дней типично).
  3. На Asterisk (PJSIP) включить HEP: загрузить res_hep_pjsip, заполнить hep.conf (server/port/capture-id), включить pjsip set logger on. Для chan_sip — установить captagent/HEPlify рядом с АТС.
  4. В UI Homer добавить нужные поля фильтрации, установить часовой пояс.
  5. Для проблемных вызовов использовать экспорт PCAP; по необходимости — загрузку внешних PCAP через PCAP uploader.
  6. В Grafana подключить дашборды/алерты (ошибки 5xx, рост 404, QoS по RTCP).

Заключение

Подход с постоянным сбором SIP-сигнализации в Homer решает ключевые проблемы: сохраняется ретроспектива, ускоряется поиск и доказательная база для провайдера, обеспечивается единый интерфейс для контроля качества и ошибок. В сравнении с разрозненными методами (tail/grep, tcpdump «на лету», единичные съёмы sngrep) стек даёт воспроизводимый процесс и управляемую эксплуатацию. Для типовых инсталляций достаточно SIP+RTCP и ограничения хранения на уровне нескольких дней; при необходимости медиазахвата RTP можно подключать адресно.

Ежегодная конференция по Asterisk 2025!

Билеты уже в продаже!

Остались вопросы?

Я - Виталий Шелест, менеджер компании Voxlink. Хотите уточнить детали или готовы оставить заявку? Укажите номер телефона, я перезвоню в течение 3-х секунд.

Наши
клиенты

Посмотреть все