1. Как узнать, запущен ли asterisk
1.1 Локальная проверка
Для того, чтобы проверить, запущен ли asterisk локально (на этом же компьютере), достаточно (это самый надёжный способ) выполнить из командной строки:
1 |
asterisk -rv |
В случае успешного запуска появится приглашение астериска:
1 2 3 4 5 6 |
Asterisk ..., Copyright (C) 1999 - ... Digium, Inc. and others. Created by Mark Spencer <markster@digium.com> Asterisk comes with ABSOLUTELY NO WARRANTY; type 'core show warranty' for details. This is free software, with components licensed under the GNU General Public License version 2 and other licenses; you are welcome to redistribute it under certain conditions. Type 'core show license' for details. ========================================================================= Connected to Asterisk ... currently running on ... (pid = ....) |
Приведенное выше сообщение означает, что выполнены следующие условия:
asterisk успешно установлен на данном компьютере;
служба астериска запущена и работает (не отвалилась с ошибкой);
к астериску можно подключиться, по крайней мере теоретически.
1.2 Удаленная проверка
Для того, чтобы удаленно проверить, работает ли астериск, необходимо подключиться к нему. Для этого сначала определите, какой порт прослушивает астериск, после чего подключитесь к этому порту с помощью любого sip клиента.
2. Пользуйтесь автодополнением астериска
Теоретически, это не совсем относится к диагностике asterisk, но по факту, значительно ускоряет процесс диагностики (если знать об этой возможности).
Дело в том, что в командной строке астериска широко используется автодополнение команд (и параметров!). Набрав команду (или любой ее фрагмент), нажмите клавишу Tab (или знак вопроса – “?”) – и asterisk предложит варианты дополнений. Если вариант только один, он сразу дополнит команду. Если несколько – отобразит список вариантов. Достаточно дописать еще несколько букв к команде, чтобы однозначно выбрать нужный Вам вариант – и снова нажимайте клавишу Tab.
Особенно полезно это в случае (например) отображения информации о каком-либо канале:
core show channel <нажимаем Tab> <набираем пару символов с названием нужного нам канала> <снова нажимаем Tab>
3. Какой порт прослушивает asterisk (на каком порту висит астериск)
3.1 Как определить SIP порт asterisk
Это можно определить локально, выполнив в консоли астериска (asterisk CLI) следующую команду:
1 |
sip show settings |
Если астериск “висит” на UDP порту (обычно), то соответствующий порт Вы найдете в строке, начинающейся с “UDP Bindaddress”, например:
1 |
UDP Bindaddress: 0.0.0.0:5060 |
Если же астериск “висит” на TCP порту (или вообще использует шифрование TLS), то искать надо строки “TCP SIP Bindaddress” и “TLS SIP Bindaddress” соответственно.
3.2 Как определить IAX2 порт asterisk
Это можно определить локально, выполнив в консоли астериска (asterisk CLI) следующую команду:
1 |
iax2 show provisioning |
Номер порта, на котором “висит” asterisk, Вы найдете в строке “Bind Port” (обычно это порт 4569).
4. Диагностика пиров
4.1 Статус SIP пира (или нескольких пиров)
Для того, чтобы получить (краткую) информацию о sip пире, выполните в командной строке астериска следующую команду:
1 |
sip show peers like <имя-пира> |
например:
1 |
sip show peers like 1000 |
Так же Вы можете получить информацию о нескольких пирах. Используя слово like, Вы даете команду астериску отобразить все пиры, содержащие (в имени) указанную подстроку. Например, команда:
1 |
sip show peers like 100 |
Эта команда отобразит информацию о пирах с именами 100, 1000, 1001…1009, 10000…100099, а также 1100 (при условии, что пиры с такими именами присутствуют в системе).
При этом Вы увидите:
Имя пира.
IP адрес хоста, с которого зарегистрирован peer.
Номер порта (со стороны пира), который используется для связи с астериском.
Статус пира (Unmonitored, UNKNOWN, OK, …). В случае, если у Вас отображается состояние Unmonitored – значит, пир включен (активен), но настройках этого пира (в файле sip.conf) не указан параметр qualify.
Другую информацию.
4.2 Подробная информация про SIP peer
Для того, чтобы получить подробную информацию о SIP пире, выполните в командной строке астериска следующую команду:
1 |
sip show peer <имя-пира> |
например:
1 |
sip show peer 1000 |
4.3 Статус IAX2 пира (или нескольких пиров)
Для того, чтобы получить (краткую) информацию об IAX2 пире, выполните в командной строке астериска следующую команду:
1 |
iax2 show peers <имя-пира> |
например:
1 |
iax2 show peers like test-peer |
Так же Вы можете получить информацию о нескольких пирах. Используя слово like, Вы даете команду астериску отобразить все пиры, содержащие (в имени) указанную подстроку. Например, команда:
1 |
iax2 show peers like 100 |
Эта команда отобразит информацию о пирах с именами 100, 1000, 1001…1009, 10000…100099, а также 1100 (при условии, что пиры с такими именами присутствуют в системе).
При этом Вы увидите:
Имя пира.
IP адрес хоста, с которого зарегистрирован peer.
Номер порта (со стороны пира), который используется для связи с астериском.
Статус пира (Unmonitored, UNKNOWN, OK, …). В случае, если у Вас отображается состояние Unmonitored – значит, пир включен (активен), но настройках этого пира (в файле iax.conf) не указан параметр qualify.
Другую информацию.
4.4 Подробная информация про IAX2 peer
Для того, чтобы получить подробную информацию об IAX2 пире, выполните в командной строке астериска следующую команду:
1 |
iax2 show peer <имя-пира> |
например:
1 |
iax2 show peer test-peer |
5. Диагностика диалплана
5.1 Отобразить содержимое контекста
Отобразить содержимое контекста со всеми экстенами и командами:
1 |
dialplan show <имя-контекста> |
Например:
1 |
dialplan show phones |
5.2 Отобразить содержимое экстена
Чтобы отобразить все приоритеты и команды для нужного Вам экстена (точнее, для подходящего к этому экстену шаблона в указанном контексте), выполните следующую команду в asterisk CLI:
1 |
dialplan show <имя-экстена>@<имя-контекста> |
например:
1 |
dialplan show 1000@phones |
5.3 Отобразить весь диалплан
Чтобы отобразить весь диалплан (например, чтобы убедиться, что никаких “лишних” контекстов и экстенов в каких-то затесавшихся файлах нет) просто выполните команду:
1 |
dialplan show |
5.4 Поиск экстена во всех контекстах
Вы также можете попробовать выполнить поиск нужного Вам экстена во всех контекстах. При этом будут отображены все шаблоны экстенов, под которые попадает Ваш экстен, во всех контекстах диалплана. Просто выполните команду:
1 |
dialplan show <имя-экстена>@ |
Например:
1 |
dialplan show 1000@ |
6. Диагностика пользователей
6.1 Отображение списка SIP пользователей
Для отображения списка всех SIP пользователей asterisk, с их паролями, а также с основными параметрами (например, контекстами по умолчанию) воспользуйтесь командой:
1 |
sip show users |
Эта команда отобразит всех SIP пользователей. Если нужно ограничиться отдельными группами пользователей, воспользуйтесь командой:
1 |
sip show users like <шаблон> |
например:
1 |
sip show users like 100 |
6.2 Отображение списка IAX2 пользователей
Для отображения списка всех IAX2 пользователей asterisk, с их паролями, а также с основными параметрами (например, контекстами по умолчанию) воспользуйтесь командой:
1 |
iax2 show users |
Эта команда отобразит всех IAX2 пользователей. Если нужно ограничиться отдельными группами пользователей, воспользуйтесь командой:
1 |
iax2 show users like <шаблон> |
например:
1 |
iax2 show users like guest |
6.3 Подробная информация о SIP пользователе
Для получения подробной информации об отдельном пользователе (такой как контекст, язык, callgrop/pickupgroup, CallerID, кодеки и так далее) выполните следующую команду:
1 |
sip show user <имя пользователя> |
Например:
1 |
sip show user 1000 |
Для IAX2 пользователя такой информации не предоставляется.
7. Каналы и звонки
7.1 Отображение текущего списка активных каналов
Для отображения списка активных каналов, а также их количества (как правило, 1 звонок создает 2 активных канала), выполните команду:
1 |
core show channels |
Самое главное назначение этой команды – по ней Вы сможете увидеть названия активных каналов и воспользоваться ими для выполнения следующей задачи: отобразить информацию о конкретном активном канале.
7.2 Отображение информации о конкретном активном канале
Для отображения подробной (действительно подробной – этой информации действительно много) информации о конкретном активном канале воспользуйтесь командой:
1 |
core show channel <имя канала> |
Например:
1 |
core show channel SIP/1000-00000025 |
Для того, чтобы получить название канала, сначала отобразите список активных каналов, а затем укажите приведенную выше команду, пользуясь автодополнением команд asterisk.
7.3 Отображение количества текущих звонков и общего количества обработанных звонков
Для этого введите команду:
1 |
core show calls |
Вы получите информацию как о текущем количестве звонков, так и об общем количестве обработанных звонков (с момента последнего запуска астериска).
8. Отладка asterisk и уровни отладки
8.1 Verbose
Verbose отвечает за отображение информации о протекающих в asterisk процессах: вызовах, их обработке, запуске call файлов, и т.п.
Для включения отображения такой информации есть 2 варианта:
Подключаясь к asterisk CLI, выполните строку с добавлением буквы “v”:
1 2 3 |
asterisk -rv asterisk -rvv asterisk -rvvvvvvvvvvvv |
При этом количество букв “v” указывает на уровень отладки verbose: от verbose 1 до verbose 10 (и выше). Можно также подключиться к asterisk, отключив отображении такой информации вообще:
1 |
asterisk -r |
Если у Вас уже открыт asterisk CLI, то выполните в командной строке астериска:
1 |
core set verbose 1 |
или
1 |
core set verbose 3 |
…
1 |
core set verbose 10 |
Число после verbose отвечает за подробность и количество сообщений. Число может быть и больше 10 (используйте автозаполнение asterisk).
Для отключения вывода сообщений verbose наберите в asterisk CLI:
1 |
core set verbose off |
8.2 Debug
В режиме отладки debug выводится информация, которая может быть более полезна для разработчиков.
Режим debug можно включить из командной строки asterisk:
1 |
core set debug 1 |
или
1 |
core set debug 3 |
…
1 |
core set debug 10 |
Число после debug отвечает за подробность и количество сообщений.
Для отключения вывода сообщений debug наберите в asterisk CLI:
1 |
core set debug off |
9. Отладка SIP
Для того, чтобы получить подробную информацию об обмене SIP-пакетами, можно использовать отладку SIP. Для этого существуют следующие команды:
Включить отладку SIP с отображением всех пакетов, проходящих через asterisk:
1 |
sip set debug on |
Включить отладку SIP только для определенного пира:
1 |
sip set debug peer <имя-пира> |
например:
1 |
sip set debug peer 1000 |
Включить отладку SIP для определенного IP адреса:
1 |
sip set debug ip 192.168.0.5 |
Отключить отладку SIP:
1 |
sip set debug off |
10. Отладка RTP
После поднятия трубки обоими абонентами начинается разговор. Для передачи разговора используется протокол RTP. Чтобы получить подробную информацию об обмене RTP-трафиком, можно использовать отладку RTP. Для этого существуют следующие команды:
Включить отладку RTP с отображением всех пакетов, проходящих через asterisk:
1 |
rtp set debug on |
Включить отладку RTP для определенного IP адреса:
1 |
rtp set debug ip 192.168.0.5 |
Отключить отладку RTP:
1 |
rtp set debug off |
В случае двустороннего разговора (а не автоматического оповещения например) обмен RTP пакетами должен идти в обе стороны, например так:
1 2 3 4 5 6 |
... Got RTP packet from 192.168...:10284 (type 08, seq 020993, ts 3334415728, len 000160) Sent RTP packet to 192.168...:10284 (type 08, seq 012334, ts 010240, len 000160) Got RTP packet from 192.168...:10284 (type 08, seq 020994, ts 3334415888, len 000160) Sent RTP packet to 192.168...:10284 (type 08, seq 012335, ts 010400, len 000160) Got RTP packet from 192.168...:10284 (type 08, seq 020995, ts 3334416048, len 000160) |