0 added
0 removed
Original
2026-01-01
Modified
2026-03-10
1
<p>Теги: zabbix, asterisk, мониторинг, телефония, sip, voip</p>
1
<p>Теги: zabbix, asterisk, мониторинг, телефония, sip, voip</p>
2
<p>Однажды установив программную автоматическую телефонную станцию Asterisk (далее Asterisk PBX), рано или поздно каждый приходит к необходимости выполнять мониторинг не только сервера, но и таких аспектов как: 1. Маркер, что Asterisk PBX отзывается на запросы пользователей. 2. Метрики нагруженности Asterisk PBX как сервиса телефонии. 3. Метрики нагруженности Asterisk PBX как системы (программы).</p>
2
<p>Однажды установив программную автоматическую телефонную станцию Asterisk (далее Asterisk PBX), рано или поздно каждый приходит к необходимости выполнять мониторинг не только сервера, но и таких аспектов как: 1. Маркер, что Asterisk PBX отзывается на запросы пользователей. 2. Метрики нагруженности Asterisk PBX как сервиса телефонии. 3. Метрики нагруженности Asterisk PBX как системы (программы).</p>
3
<p>Далее я вкратце опишу что и каким образом можно посмотреть.</p>
3
<p>Далее я вкратце опишу что и каким образом можно посмотреть.</p>
4
<h2>Маркер, что Asterisk PBX отзывается на запросы пользователей</h2>
4
<h2>Маркер, что Asterisk PBX отзывается на запросы пользователей</h2>
5
<p>Здесь всё просто - мы можем отправить remote-команду в CLI Asterisk PBX запрос на получение версии Asterisk (asterisk -rx 'core show version') и отслеживать изменение получаемого ответа, а также актуальность информации.</p>
5
<p>Здесь всё просто - мы можем отправить remote-команду в CLI Asterisk PBX запрос на получение версии Asterisk (asterisk -rx 'core show version') и отслеживать изменение получаемого ответа, а также актуальность информации.</p>
6
<p>Если взять для примера Zabbix, то в нем возможна следующая ситуация - функция last() будет возвращать корректное значение если в какой-то момент сервис перестанет отвечать или отдавать информацию в формате, который не сможет распознать zabbix-agent.</p>
6
<p>Если взять для примера Zabbix, то в нем возможна следующая ситуация - функция last() будет возвращать корректное значение если в какой-то момент сервис перестанет отвечать или отдавать информацию в формате, который не сможет распознать zabbix-agent.</p>
7
<p>Это одна из типовых ошибок при построении мониторинга на базе Zabbix, когда системный администратор при создании триггера не проверяет item-ы на предмет отсутствия поступления данных в течение заданного таймера (функция nodata()). Если вы используете другую систему мониторинга - рекомендую проверить алгоритм реакции по умолчанию на подобные ситуации и заблаговременно принять меры по их недопущению.</p>
7
<p>Это одна из типовых ошибок при построении мониторинга на базе Zabbix, когда системный администратор при создании триггера не проверяет item-ы на предмет отсутствия поступления данных в течение заданного таймера (функция nodata()). Если вы используете другую систему мониторинга - рекомендую проверить алгоритм реакции по умолчанию на подобные ситуации и заблаговременно принять меры по их недопущению.</p>
8
<h2>Метрики нагруженности Asterisk PBX как сервиса телефонии</h2>
8
<h2>Метрики нагруженности Asterisk PBX как сервиса телефонии</h2>
9
<p>Здесь я могу порекомендовать ряд команд, которые могут выводить ряд полезной информации: - 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, чтобы видеть его статус и задержку отклика. Если у вас есть аккаунт без регистрации - его можно проверять через данную команду.</p>
9
<p>Здесь я могу порекомендовать ряд команд, которые могут выводить ряд полезной информации: - 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, чтобы видеть его статус и задержку отклика. Если у вас есть аккаунт без регистрации - его можно проверять через данную команду.</p>
10
<h2>Метрики нагруженности Asterisk PBX как системы (программы)</h2>
10
<h2>Метрики нагруженности Asterisk PBX как системы (программы)</h2>
11
<p>К данной группе относится намного меньше команд, и что конкретно отслеживать в конкретной ситуации - зависит от ситуации. - 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. По большей части информация тут нужна для отладки конкретной аварийной ситуации, но, возможно, вы захотите отслеживать конкретные счетчики по приложениям.</p>
11
<p>К данной группе относится намного меньше команд, и что конкретно отслеживать в конкретной ситуации - зависит от ситуации. - 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. По большей части информация тут нужна для отладки конкретной аварийной ситуации, но, возможно, вы захотите отслеживать конкретные счетчики по приложениям.</p>
12
<h2>Итого</h2>
12
<h2>Итого</h2>
13
<p>В целом описанных выше метрик должно быть достаточно для построения мониторинга работоспособности Asterisk PBX, который позволит вовремя среагировать на проблему и локализовать её до конкретного уровня логики или приложения.</p>
13
<p>В целом описанных выше метрик должно быть достаточно для построения мониторинга работоспособности Asterisk PBX, который позволит вовремя среагировать на проблему и локализовать её до конкретного уровня логики или приложения.</p>
14
14