Диагностика asterisk

Автор: | 25.10.2018

1. Как узнать, запущен ли asterisk
1.1 Локальная проверка

Для того, чтобы проверить, запущен ли asterisk локально (на этом же компьютере), достаточно (это самый надёжный способ) выполнить из командной строки:

В случае успешного запуска появится приглашение астериска:

Приведенное выше сообщение означает, что выполнены следующие условия:

asterisk успешно установлен на данном компьютере;
служба астериска запущена и работает (не отвалилась с ошибкой);
к астериску можно подключиться, по крайней мере теоретически.

1.2 Удаленная проверка

Для того, чтобы удаленно проверить, работает ли астериск, необходимо подключиться к нему. Для этого сначала определите, какой порт прослушивает астериск, после чего подключитесь к этому порту с помощью любого sip клиента.

2. Пользуйтесь автодополнением астериска

Теоретически, это не совсем относится к диагностике asterisk, но по факту, значительно ускоряет процесс диагностики (если знать об этой возможности).

Дело в том, что в командной строке астериска широко используется автодополнение команд (и параметров!). Набрав команду (или любой ее фрагмент), нажмите клавишу Tab (или знак вопроса – “?”) – и asterisk предложит варианты дополнений. Если вариант только один, он сразу дополнит команду. Если несколько – отобразит список вариантов. Достаточно дописать еще несколько букв к команде, чтобы однозначно выбрать нужный Вам вариант – и снова нажимайте клавишу Tab.
Особенно полезно это в случае (например) отображения информации о каком-либо канале:
core show channel <нажимаем Tab> <набираем пару символов с названием нужного нам канала> <снова нажимаем Tab>

3. Какой порт прослушивает asterisk (на каком порту висит астериск)

3.1 Как определить SIP порт asterisk

Это можно определить локально, выполнив в консоли астериска (asterisk CLI) следующую команду:

Если астериск “висит” на UDP порту (обычно), то соответствующий порт Вы найдете в строке, начинающейся с “UDP Bindaddress”, например:

Если же астериск “висит” на TCP порту (или вообще использует шифрование TLS), то искать надо строки “TCP SIP Bindaddress” и “TLS SIP Bindaddress” соответственно.

3.2 Как определить IAX2 порт asterisk
Это можно определить локально, выполнив в консоли астериска (asterisk CLI) следующую команду:

Номер порта, на котором “висит” asterisk, Вы найдете в строке “Bind Port” (обычно это порт 4569).

4. Диагностика пиров

4.1 Статус SIP пира (или нескольких пиров)
Для того, чтобы получить (краткую) информацию о sip пире, выполните в командной строке астериска следующую команду:

например:

Так же Вы можете получить информацию о нескольких пирах. Используя слово like, Вы даете команду астериску отобразить все пиры, содержащие (в имени) указанную подстроку. Например, команда:

Эта команда отобразит информацию о пирах с именами 100, 1000, 1001…1009, 10000…100099, а также 1100 (при условии, что пиры с такими именами присутствуют в системе).
При этом Вы увидите:
Имя пира.
IP адрес хоста, с которого зарегистрирован peer.
Номер порта (со стороны пира), который используется для связи с астериском.
Статус пира (Unmonitored, UNKNOWN, OK, …). В случае, если у Вас отображается состояние Unmonitored – значит, пир включен (активен), но настройках этого пира (в файле sip.conf) не указан параметр qualify.
Другую информацию.

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

например:

4.3 Статус IAX2 пира (или нескольких пиров)
Для того, чтобы получить (краткую) информацию об IAX2 пире, выполните в командной строке астериска следующую команду:

например:

Так же Вы можете получить информацию о нескольких пирах. Используя слово like, Вы даете команду астериску отобразить все пиры, содержащие (в имени) указанную подстроку. Например, команда:

Эта команда отобразит информацию о пирах с именами 100, 1000, 1001…1009, 10000…100099, а также 1100 (при условии, что пиры с такими именами присутствуют в системе).
При этом Вы увидите:
Имя пира.
IP адрес хоста, с которого зарегистрирован peer.
Номер порта (со стороны пира), который используется для связи с астериском.
Статус пира (Unmonitored, UNKNOWN, OK, …). В случае, если у Вас отображается состояние Unmonitored – значит, пир включен (активен), но настройках этого пира (в файле iax.conf) не указан параметр qualify.
Другую информацию.

4.4 Подробная информация про IAX2 peer
Для того, чтобы получить подробную информацию об IAX2 пире, выполните в командной строке астериска следующую команду:

например:

5. Диагностика диалплана

5.1 Отобразить содержимое контекста
Отобразить содержимое контекста со всеми экстенами и командами:

Например:

5.2 Отобразить содержимое экстена
Чтобы отобразить все приоритеты и команды для нужного Вам экстена (точнее, для подходящего к этому экстену шаблона в указанном контексте), выполните следующую команду в asterisk CLI:

например:

5.3 Отобразить весь диалплан
Чтобы отобразить весь диалплан (например, чтобы убедиться, что никаких “лишних” контекстов и экстенов в каких-то затесавшихся файлах нет) просто выполните команду:

5.4 Поиск экстена во всех контекстах
Вы также можете попробовать выполнить поиск нужного Вам экстена во всех контекстах. При этом будут отображены все шаблоны экстенов, под которые попадает Ваш экстен, во всех контекстах диалплана. Просто выполните команду:

Например:

6. Диагностика пользователей

6.1 Отображение списка SIP пользователей
Для отображения списка всех SIP пользователей asterisk, с их паролями, а также с основными параметрами (например, контекстами по умолчанию) воспользуйтесь командой:

Эта команда отобразит всех SIP пользователей. Если нужно ограничиться отдельными группами пользователей, воспользуйтесь командой:

например:

6.2 Отображение списка IAX2 пользователей
Для отображения списка всех IAX2 пользователей asterisk, с их паролями, а также с основными параметрами (например, контекстами по умолчанию) воспользуйтесь командой:

Эта команда отобразит всех IAX2 пользователей. Если нужно ограничиться отдельными группами пользователей, воспользуйтесь командой:

например:

6.3 Подробная информация о SIP пользователе
Для получения подробной информации об отдельном пользователе (такой как контекст, язык, callgrop/pickupgroup, CallerID, кодеки и так далее) выполните следующую команду:

Например:

Для IAX2 пользователя такой информации не предоставляется.

7. Каналы и звонки

7.1 Отображение текущего списка активных каналов
Для отображения списка активных каналов, а также их количества (как правило, 1 звонок создает 2 активных канала), выполните команду:

Самое главное назначение этой команды – по ней Вы сможете увидеть названия активных каналов и воспользоваться ими для выполнения следующей задачи: отобразить информацию о конкретном активном канале.

7.2 Отображение информации о конкретном активном канале
Для отображения подробной (действительно подробной – этой информации действительно много) информации о конкретном активном канале воспользуйтесь командой:

Например:

Для того, чтобы получить название канала, сначала отобразите список активных каналов, а затем укажите приведенную выше команду, пользуясь автодополнением команд asterisk.

7.3 Отображение количества текущих звонков и общего количества обработанных звонков
Для этого введите команду:

Вы получите информацию как о текущем количестве звонков, так и об общем количестве обработанных звонков (с момента последнего запуска астериска).

8. Отладка asterisk и уровни отладки

8.1 Verbose
Verbose отвечает за отображение информации о протекающих в asterisk процессах: вызовах, их обработке, запуске call файлов, и т.п.
Для включения отображения такой информации есть 2 варианта:
Подключаясь к asterisk CLI, выполните строку с добавлением буквы “v”:

При этом количество букв “v” указывает на уровень отладки verbose: от verbose 1 до verbose 10 (и выше). Можно также подключиться к asterisk, отключив отображении такой информации вообще:

Если у Вас уже открыт asterisk CLI, то выполните в командной строке астериска:

или

Число после verbose отвечает за подробность и количество сообщений. Число может быть и больше 10 (используйте автозаполнение asterisk).
Для отключения вывода сообщений verbose наберите в asterisk CLI:

8.2 Debug
В режиме отладки debug выводится информация, которая может быть более полезна для разработчиков.
Режим debug можно включить из командной строки asterisk:

или

Число после debug отвечает за подробность и количество сообщений.
Для отключения вывода сообщений debug наберите в asterisk CLI:

9. Отладка SIP

Для того, чтобы получить подробную информацию об обмене SIP-пакетами, можно использовать отладку SIP. Для этого существуют следующие команды:
Включить отладку SIP с отображением всех пакетов, проходящих через asterisk:

Включить отладку SIP только для определенного пира:

например:

Включить отладку SIP для определенного IP адреса:

Отключить отладку SIP:

10. Отладка RTP

После поднятия трубки обоими абонентами начинается разговор. Для передачи разговора используется протокол RTP. Чтобы получить подробную информацию об обмене RTP-трафиком, можно использовать отладку RTP. Для этого существуют следующие команды:
Включить отладку RTP с отображением всех пакетов, проходящих через asterisk:

Включить отладку RTP для определенного IP адреса:

Отключить отладку RTP:

В случае двустороннего разговора (а не автоматического оповещения например) обмен RTP пакетами должен идти в обе стороны, например так: