Секреты Asterisk CLI: подробный логгинг SIP и PJSIP для поиска причин обрыва звонков
- Звонки абонентов внезапно обрываются во время разговора, и непонятно, кто инициатор сброса.
- IP-телефон не может зарегистрироваться на АТС, выдавая неизвестную ошибку.
- Необходимо в реальном времени увидеть полные заголовки SIP-пакетов (INVITE, 200 OK, BYE, CANCEL).
1. Как подключиться к консоли Asterisk CLI
Подключитесь к вашему серверу IP-АТС по SSH под пользователем root и выполните команду входа в интерактивную консоль управления:
asterisk -rvvvvv(Количество букв «v» задает уровень подробности вывода сообщений — Verbosity).
2. Включение подробного логгинга для современного драйвера PJSIP
Внутри консоли Asterisk введите команды:
# Включить полный вывод всех SIP-пакетов в консоль
pjsip set logger on
# Включить фильтрацию дебага только по конкретному номеру (например, 101)
pjsip set logger host 192.168.1.50
# Отключить логгирование после завершения диагностики
pjsip set logger off3. Включение логгинга для старого драйвера Chan_SIP
# Включить дебаг для всех пакетов
sip set debug on
# Включить дебаг только для IP-адреса провайдера
sip set debug ip 10.20.30.40
# Отключить дебаг
sip set debug off4. Как читать основные SIP-сигналы в логе при обрыве звонка
INVITE→ начальный запрос на установку соединения;100 Trying→ сервер начал обработку звонка;180 Ringing→ у вызываемого абонента пошли гудки;200 OK→ абонент поднял трубку, разговор начался;BYE→ одна из сторон повесила трубку (в заголовке From указано, кто именно нажал кнопку отбоя);CANCEL→ звонящий сбросил вызов до того, как ему ответили.
Частые вопросы (FAQ)
Как сохранить лог звонка в текстовый файл для отправки техподдержке провайдера?
Включите запись в файл через Linux-команду: 'asterisk -rx "pjsip set logger on" && tail -f /var/log/asterisk/full > /tmp/sip_debug.log'. Воспроизведите звонок и нажмите Ctrl+C.
Почему консоль завалена тысячами сообщений, мешающими читать логи?
Уменьшите уровень детализации вывода командной: 'core set verbose 1' и 'core set debug 0'.
Как увидеть статус всех активных телефонных трубок в PJSIP?
Выполните в консоли команду: 'pjsip show endpoints' — вы увидите список всех внутренних номеров, их IP-адреса и текущий статус доступности (Available / Unavailable).
Что означает строка 'Reason: Q.850;cause=16' в пакете BYE?
Код Q.850 Cause 16 означает 'Normal call clearing' — абсолютно нормальное штатное завершение разговора по инициативе одного из собеседников (нажатие кнопки 'Положить трубку').