Найти тему
Merion Academy

Как собрать логи Asterisk?

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 - указать порт, на который приходят пакеты.