IP – АТС Asterisk – сложная система обработки телефонных вызовов, состоящая из различных драйверов и модулей. Зачастую системные администраторы сталкиваются с неисправностью того или иного функционала: не работает входящая/исходящая связь, односторонняя слышимость, проблемы с внутренними номерами и так далее. Чтобы решить данные проблемы, надо понять их суть – посмотреть в журнал (лог – файл) Asterisk и узнать, что же происходит на самом деле. О том, как правильно собрать логи, их глубина и параметры, а также про сбор сетевого дампа расскажем в этой статье.
НАСТРОЙКА ЛОГИРОВАНИЯ
Приступаем к настройке. Для этого, нам необходим посмотреть содержимое файла /etc/asterisk/logger.conf. Давайте откроем его:
[root@asterisk ~]# cat /etc/asterisk/logger.conf
[general]
#include logger_general_additional.conf
#include logger_general_custom.conf
[logfiles]
#include logger_logfiles_additional.conf
#include logger_logfiles_custom.conf
Как видим, в данный файл включен «кастомная» настройка – файл logger_logfiles_custom.conf . В нем мы и будем производить необходимые настройки. Допустим, мы хотим записывать в файл logs_20181121 основные события. Для этого, откроем для редактирования файл и добавим в него следующую запись:
[root@asterisk ~]# vim logger_logfiles_custom.conf
logs_20181121 => notice,warning,error,debug,verbose,dtmf
Сохраняем изменения нажатием :x!.
Начиная с 13 версии Asterisk, существует возможность создавать задачи на логирования прямо из консоли. Для этого существует команда logger add channel . Например:logger add channel logs_20181121 notice,warning,error,debug,verbose,dtmf
Логирование будет остановлено при следующем рестарте Asterisk.
ГЛУБИНА ЗАПИСИ ЛОГОВ
В Asterisk можно задавать глубину логирования параметром verbose и debug. Первый режим более информативен для администратора, когда необходимо оперативно понять причину неисправности, тогда как второй режим более полезен для более глубоко анализа. Глубина задается от 1 до 10, где 10 – максимальный уровень информативности:
asterisk*CLI> core set verbose 3
asterisk*CLI> core set debug 3
После этого, необходимо перезагрузить модуль логирования:
asterisk*CLI> module reload logger
ОСТАНОВИТЬ ЛОГИРОВАНИЕ
Когда отладка закончена, необходимо вернуть все в первоначальный вид. Отключаем дополнительный дебаг:
asterisk*CLI> core set verbose 0
asterisk*CLI> core set debug 0
Чтобы выключить дебаг на конкретных каналах, даем команду вида:
asterisk*CLI> sip set debug on
asterisk*CLI> iax2 set debug off
Далее, в файле /etc/asterisk/logger.conf закомментируйте или удалите добавленную строчку. После этого перегружаем модуль логирования:
asterisk*CLI> module reload logger
ДЕБАГ ASTERISK В ФАЙЛ
Прямо из консоли можно добавлять дебаг в файл. Для этого, его необходимо первоначально создать. Например:
[root@asterisk ~]# touch /home/asterisk_cli.txt
Далее, вызываем консоль сервера IP – АТС Asterisk следующим способом:
[root@asterisk ~]# asterisk -rvvvv | tee /home/asterisk_cli.txt
В открывшейся консоли дайте одну из перечисленных команд дебага, например, sip set debug on. Весь вывод будет сохранен в указанном файле. По окончанию укажите в консоли sip set debug off и quit.
СЕТЕВОЙ ДАМП ASTERISK ДЛЯ АНАЛИЗА В WIRESHARK
Простейшим способом снять сетевой дамп является утилита tcpdump. Чтобы ей воспользуйтесь командой:
[root@asterisk ~]# tcpdump -s 0 -w /home/dump.cap
Затем, после снятия необходимого дампа, Вы сможете сохранить файл dump.cap в директории /home себе на компьютер, для последующего анализа. Помимо этого, в команде есть возможность дать дополнительные ключи, например -i eth0 - указание интерфейса, с которого необходимо снять дамп, а port 5060 - указать порт, на который приходят пакеты.