Теги: zabbix, asterisk, мониторинг, телефония, sip, voip
Однажды установив программную автоматическую телефонную станцию Asterisk (далее Asterisk PBX), рано или поздно каждый приходит к необходимости выполнять мониторинг не только сервера, но и таких аспектов как:
1. Маркер, что Asterisk PBX отзывается на запросы пользователей.
2. Метрики нагруженности Asterisk PBX как сервиса телефонии.
3. Метрики нагруженности Asterisk PBX как системы (программы).
Далее я вкратце опишу что и каким образом можно посмотреть.
Маркер, что Asterisk PBX отзывается на запросы пользователей
Здесь всё просто — мы можем отправить remote-команду в CLI Asterisk PBX запрос на получение версии Asterisk (asterisk -rx 'core show version') и отслеживать изменение получаемого ответа, а также актуальность информации.
Если взять для примера Zabbix, то в нем возможна следующая ситуация — функция last() будет возвращать корректное значение если в какой-то момент сервис перестанет отвечать или отдавать информацию в формате, который не сможет распознать zabbix-agent.
Это одна из типовых ошибок при построении мониторинга на базе Zabbix, когда системный администратор при создании триггера не проверяет item-ы на предмет отсутствия поступления данных в течение заданного таймера (функция nodata()). Если вы используете другую систему мониторинга — рекомендую проверить алгоритм реакции по умолчанию на подобные ситуации и заблаговременно принять меры по их недопущению.
Метрики нагруженности Asterisk PBX как сервиса телефонии
Здесь я могу порекомендовать ряд команд, которые могут выводить ряд полезной информации:
- asterisk -rx 'core show channels concise' — список активных каналов и ряда их параметров с разделителем. Можно парсить с помощью awk для получения каких-то сгруппированных блоков информации для построения графиков в Grafana;
- asterisk -rx 'core show calls' — отображает количество активных звонков. Те кто в курсе того, как Asterisk PBX работает со звонками абонентов и считает их — знает, что точность этой цифры может колебаться в пределах от 70% до 100% (реальное число звонков может быть ниже отображаемого из-за особенностей конкретного dialplan-а), однако для получения обобщенной статистики по нагрузке этого в целом достаточно;
- asterisk -rx 'sip show registry' — вывод состояния регистрации аккаунтов у внешних провайдеров.
- asterisk -rx 'sip show peer PeerName' — вывод информации о конкретном peer-е (в данном примере PeerName). Полезно в комбинации с опцией qualify=yes, чтобы видеть его статус и задержку отклика. Если у вас есть аккаунт без регистрации — его можно проверять через данную команду.
Метрики нагруженности Asterisk PBX как системы (программы)
К данной группе относится намного меньше команд, и что конкретно отслеживать в конкретной ситуации — зависит от ситуации.
- asterisk -rx 'core show taskprocessors' — здесь можно посмотреть сколько задач с момента запуска Asterisk PBX было выполнено каждым из модулей (Processed), сколько находится в очереди (In Queue), какой был максимум задач в очереди (Max Depth), а также какие заданы threshold-ы, при достижении которых будут выведены предупреждения в CLI (Low water / High Water). Отслеживать все смысла нет, но посмотреть те модули, которые чаще всего используются и поставить на мониторинг их — будет явно не лишним, чтобы вовремя принять меры по корректировке или откату изменений в настройках Asterisk PBX;
- asterisk -rx 'core show threads' — отображает список запущенных thread-ов приложений внутри Asterisk PBX. По большей части информация тут нужна для отладки конкретной аварийной ситуации, но, возможно, вы захотите отслеживать конкретные счетчики по приложениям.
Итого
В целом описанных выше метрик должно быть достаточно для построения мониторинга работоспособности Asterisk PBX, который позволит вовремя среагировать на проблему и локализовать её до конкретного уровня логики или приложения.