Данная статья посвящена работе с log-файлами, инструментам для работы с log-файлами и модули FreePBX способные помочь в работы с log-файлами.
Log-файлы. Для чего они нужны, где их искать и как использовать?
Log-файлы это друзья инженера и если проблема «плавающая», то не редко только логи могут прояснить ситуацию. Как известно, любая программа пишет свой лог файл, куда заносит информацию о том, что произошло, что вызвало ошибку или, к примеру, чего не хватает для нормальной работы и.т.д.
В конфигурационном каталоге asterisk (по умолчанию /etc/asterisk) находится несколько файлов, отвечающих за логи:
1.Файл asterisk.conf содержит переменную astlogdir, которая указывает местоположение логов asterisk (по умолчанию — /var/log/asterisk)
2.Файл конфигурации логов — logger.conf. В нем можно прописывать различные опции для ведения логов, а также указать, какие виды информации в эти логи должны будут сохранять. Так же для каждого вида информации можно предусмотреть свой файл логов.
Полный список и расположение лог файлов следующий:
- /var/log/asterisk/fail2ban — Лог-файл событий модуля fail2ban
- /var/log/asterisk/freepbx.log — Лог-файл событий событий модулей FreePBX
- /var/log/asterisk/freepbx_security.log — Лог-файл событий событий безопасности
- /var/log/asterisk/full — Лог-файл событий Asterisk всех уровней. Этот файл чаще всего используется для поиска старых звонков.
- /var/log/dmesg — Лог-файл событий событий уровня ядра
- /var/log/httpd/access_log — Лог-файл событий доступа к Apache
- /var/log/httpd/error_log — Лог-файл где можно посмотреть ошибки web сервера Apache
- /var/log/messages — Системный журнал событий Linux
- /var/log/yum.log — Лог-файл где записаны действия выполненных через yum
Обратите внимание, что в зависимости от используемого дистрибутива Linux место расположение log-файлов может отличаться.Тем не менее, настраивать какие-то дополнительные условия для логирования мы не будем. Как было написано выше – стандартный путь логов следующий: /var/log/asterisk. Перейдем туда
Как можете видеть – здесь содержится огромное количество логов очередей, фаервола и много чего еще, но в данном случае нас интересует полный лог станции с одноименным названием full. Есть два способа прочесть содержимое:
1 С помощью текстового редактора (vi/vim/nano)
2 С помощью утилиты grep
И мы даже не будем рассматривать просмотр лога с помощью текстового редактора. Вне зависимости от того, какой текстовый редактор вы будите использовать открывать весь лог-файл не оптимальное решение и удобнее использовать для этого утилиту grep. Grep это утилита командной строки которая используется для фильтрации текста по заданному шаблону. Пример: предположим, что интересующий момент произошел сегодня ночью (20 августа) в 04:42:58.
Используем следующую команду # grep ’04:42:58′ full
Как можете видеть утилита вывела все события которые произошли в указанное время, однако нам нужен полный лог связанный с этим событием и есть возможность его вывести игнорируя все остальные события. Для этого обратите внимание на значение [C-00004aec]
Это UID звонка и для каждого он уникален и позволяет по нему просмотреть все события связанные с этим звонком.
Теперь, если вы сделали все правильно, то вы можете посмотреть полный лог этого звонка от начала и до его завершения. На этом, конечно, функции grep не заканчиваются и вы ниже можете найти пару полезных ключей для grep.
Некоторые дополнительные ключи команды grep:
- -v : Выводи реверсивные результаты. Вместо того чтобы вывести строки где искомое было найдено — выводи те строки где искомой подстроки нет.
- -c : Отключает стандартный способ вывода результата и вместо этого отображает только число обозначающее количество найденых строк.
- -i : Делает поиск регистронезависимым
- -w : Ведет поиск по цельным словам. Например, при обычном поиске строки ‘200’ grep может найти слово ‘81002002020. А если используется данный ключ то будут найдены только строки где есть слово ‘200’.
- -l : Выводит только имена файлов, где была найдена строка.
- -r : Производит поиск рекурсивно по всем поддиректориям.
Этого будет более чем достаточно для просмотра логов. Подробнее по мониторингу системы вы можете узнать по следующей ссылке
Просмотр логов через Web-интерфейс
По каким-то причинам у вас не может оказаться доступа на АТС по ssh и в таком случае вы можете просмотреть логи на web-интерфейсе FreePBX с помощью модуля Asterisk Log Files. Этот модуль расположен по следующему пути: Reports — Asterisk Log Files
После попадаем мы на следующую страничку
Как можете видеть, уже без каких либо манипуляций модуль подгрузил последние логи со станции без каких либо фильтров
Есть возможность просматривать все логи не только за сегодняшнее число, но и за прошлые, а так же конкретно какой-то log-файл просмотреть.
Давайте для примера посмотрим подробную статистику по одному из звонков.
Как можете видеть поле Filtre выполняет ту же роль что и утилита grep
Тем не менее, советуем при возможности просматривать логи подключившись к серверу напрямую используя терминальный клиент PuTTy который, к примеру, поддерживает операцию копировать/вставить, что упрощает работу при анализе лога.
Модуль Support FreePBX
Обратите внимание, что данный модуль был включен в дистрибутив начиная с 13 версиии FreePBX.
Это очень полезная секция, которая позволяет получить доступ к логам. Благодаря ей можно скачать zip-файл, который будет содержать отчет с необходимой информацией, а так же логами для дальнейшего их исследования. Чтоб попасть на страничку модуля нужно пройти по следующему пути: Admin — System Admin
И мы попадаем в System Admin.
Здесь множество полезных утилит для администратора, но в данной статье нас интересует модуль Support. вниз и выбираем раздел
Выбираем раздел «Support»
На этой странице и можно скачать zip-архив с отчетом. Путем выбора ответа Yes/No можно сформировать свой отчет. Пункты выбора следующие:
- FreePBX Versions — Список всех установленных модулей и их версии
- System Information — Информация об операционной системе
- Asterisk Logs — Журналы событий Asterisk за последние 24 часа
- Firewall Setting — Вывод текущих настроек ip-tables
- ASTDB Dump — Полный дамп ASTBD (Не путать с MySQL)
- License Information — Информация о лицензировании и статусе сервера
- Dialplan — Полный дайл-план, созданный FreePBX (включая кастомные файлы _custom)
- SIP Settings — Настройки SIP (Может содержать секретную информацию)
- PJSIP Settings — Настройки PJSIP (Может содержать секретную информацию)
- IAX Settings — Настройки IAX (Может содержать секретную информацию)
После того, как мы включили интересующие нас пункты чтоб сформировать отчет и скачать достаточно нажать download и загрузить архив к себе компьютер. Для теста, давайте, соберем наиболее полный отчет выставив на всех пунктах Yes.
Если все сделано правильно, то вы сможете открыть файлик любым удобным для себя образом для дальнейшего изучения или перенаправления его в тех.поддержку.
Так же вам могут быть интересны следующие темы по логированию:
Сбор логов на одном сервере с нескольких других, посредством SysLog
Расширенное логгирование звонков: CEL — Channel Event Logging
Сбор статистики звонков по региональным направлениям
Данная статья посвящена решению проблем со звонками в Asterisk. В ней подробно расскажу принципы решения возникающих проблем с Asterisk.
Работа с лог файлами.
Как известно все программы пишут свои лог файл, в которые записывают что произошло, что вызвало ошибку, куда не получилось получить доступ и так далее.
И так как же работать с лог файлами? Как правило на работающем сервере эти файлы достаточно большие и надо уметь найти нужную строку в них. Для этих целей нам помогают текстовые редакторы. Я расскажу на примере встроенного текстового редактора nano.
Для того чтоб открыть файл в данном редакторе нам необходимо выполнить команду: «nano <путь к файлу>». Пример: «nano /var/log/asterisk/messages». Открыли данный файл и видим, что в нём огромное количество строк. Для поиска по строкам нам поможет комбинация клавиш Ctrl+W. В нижу окна редактора появилась поисковая строка, набираем в неё искомый текст, например номер телефона, на который не проходит звонок и нажимаем Enter. Найденный номер будет подсвечен. Если нам необходимо поискать этот же номер дальше по тексту то просто нажимаем Ctrl+W и Enter, будет подсвечен следующие совпадение в тексте.
После того как работа с файлом завершена, нажимаем Ctrl+X, если файл не был не был изменен, то редактор просто закроется. Если же файл изменили, то он спросить нужно ли сохранять файл и если нужно то под каким именем.
Очень часто бывает что файл слишком большой и часто повторяется искомая строка, тогда если в файле логов нет необходимости и можно его стереть для удобства последующего анализа сделать это можно следующей командой «dd if=/dev/null of=<путь к файлу>». Что сделает команда dd? Возьмет NULL и перезапишет им файл.
Отладка звонка VoIP с помощью WireShark.
Иногда нужно посмотреть какие же данные приходили и уходили от сервера. Сделать это можно с помощь программы WireShark. Для этого программе нужно «скормить» файл с расширением «.pcap». Как же его получить этот файл? Для получения файл необходимо включить дамп на сервере. Включается дамп следующей командой: «tcpdump -s 0 -w dump.cap». Это команда будет снимать дамп пока её не прервете нажатием Ctrl+C. В случае, если через Ваш сервер проходит большое количество звонков, то файл дампа окажется очень большим. Для того, чтоб уменьшить файл необходимо указать хост с которого должны приходить пакеты или на который отправляются.
Сделать это можно указам дополнительный параметр программе tcpdump host . Пример: «tcpdump -s 0 -w dump.cap host 192.168.1.1», для нескольких адресов «tcpdump -s 0 -w dump.cap host 192.168.1.1 or 192.168.1.2». Для снятия дампа с конкретного интерфейса выполните команду «tcpdump -i <имя интерфейса> -s 0 -w dump.cap».
Для работы с файлом Вам надо его скопировать себе на компьютер, для этого можно воспользоваться scp если у Вас nix система команда выполняющая копирования пишется так «scp <имя пользователя на VoIP сервере>@<адрес сервера>:<путь к файлу> <необязательный параметр, путь куда сохранить, если не указано сохранит в текущую директорию>». Пример: «scp root@192.168.1.1:/home/root/dumps/dump.cap /home/vasya/dumps/» Если надо скопировать всю папку, то вместо имени файла поставьте «*». Если у Вас Windows, то можно воспользоваться утилитой WinSCP.
Скачали файл теперь выполним ряд действий:
- Запустите wireshark.
- Выберите файл voip.cap в диалоге File->Open.
- После открытия файла нажмите Telephony->VoIP calls.
- Вам отобразятся все звонки которые были в пакетном логе.
- Выберите нужный звонок, кликнув по нему мышкой и нажмите «Flow».
- Вам отобразится диаграмма звонка.
- Кликнув по любой из стрелок, wireshark отобразит вам содержимое пакета, которое вы сможете посмотреть.
Отладка SIP протокола в Asterisk
Если Вам необходимо увидеть SIP сообщения приходящие от пира, и какие сообщения отсылает Ваш сервер ему, то на сервере надо выполнить следующую команду: «asterisk -rx «sip set debug peer SIPuserID»» SIPuserID соответственно меняете на имя SIP аккаунт пользователя. Здесь важно учесть, что сервер Asterisk должен знать IP пользователя, другими словами пользователь должен быть зарегистрирован или у него в настройках должен быть прописал IP.
Если Вам известен IP пользователя, но неизвестно имя пользователя, то можно воспользоваться командой «asterisk -rx «sip set debug ip 192.168.1.1″». Для просмотрах всех отправляемых/получаемых SIP сообщений выполните «asterisk -rx «sip set debug on»».
Просмотреть результат выполнения можно двумя вариантами:
- Консольный вариант. Заходим в CLI консоль командой: «asterisk -r». Данный способ быстрой, но на мой взгляд не очень удобный, так как лог бежит быстро и нет возможности поиска. Такой способ подходит для определения приходят ли сообщения вообще.
- Файл лог. Открываем файл логов asterisk /var/log/asterisk/messages и смотрим в нём всё что нам необходимо. При необходимости можем скопировать файл и часть файла.
После завершения просмотра SIP сообщений не забудьте отключить отладку командой: «asterisk -rx «sip set debug off»». В случае, если не получается выполнить какую либо команду из-за нехватки прав, перед командой пишите «sudo».
Отладка плана набора (DialPlan) в Asterisk
Для запуска отладки плана набора или DialPlan выполните команду: «asterisk -rx «core set verbose 3″» Уровень verbose говорит asterisk насколько подробно ему сообщать о своих действия, уровня 3 вполне достаточно для анализа прохождения звонка. После запуска отладки сделайте звонок и все сведения о нём попадут в файл логов /var/log/asterisk/messages. По файлу выполните поиск номера, нас интересует строка, которая начинается с Executing. В этой сроке будут описаны действия из файл extensions.conf. Продолжайте поиск пока не дойдете до последней инструкции, в ней скорее всего и есть ошибка.
Так же после отладки не забываем отключить её. «asterisk -rx «core set verbose off»» или «asterisk -rx «core set verbose 0″».
Вот пожалуй все действия, которые помогут Вам решить проблему со звонками.
Collecting Debug Information for the Asterisk Issue Tracker¶
This document will provide instructions on how to collect debugging logs from an Asterisk machine, for the purpose of helping bug marshals troubleshoot an issue on https://github.com/asterisk/asterisk/issues
If Asterisk has crashed or deadlocked, see Getting a Backtrace.
STEPS¶
Configure Asterisk logging¶
1. Edit the logger.conf file to enable specific logger channels to output to your filesystem. The word «debug_log_123456» can be changed to anything you want, as that is the filename the logging will be written to.
Modify the file name «debug_log_123456» to reflect your github.com/asterisk/asterisk/issues issue number.
logger.conf
[logfiles]
debug_log_123456 => notice,warning,error,debug,verbose,dtmf
!!! tip Asterisk 13+ In Asterisk 13 and later, you can dynamically create log channels from the CLI using the logger add channel
command. For example, to create the log file above, you would enter:
logger add channel debug_log_123456 notice,warning,error,debug,verbose,dtmf
The new log channel persists until Asterisk is restarted, the logger module is reloaded, or the log files are rotated. If using this CLI command, do not reload/restart/rotate the log files in Step 2.
Configure verbosity levels and rotate logs¶
2. From the Asterisk CLI, set the verbose and debug levels for logging (this affects CLI and log output) and then restart the logger module:
*CLI> core set verbose 5
*CLI> core set debug 5
*CLI> module reload logger
Optionally, if you’ve used this file to record data previously, then rotate the logs:
Enable channel tech or feature specific debug¶
2.1. Depending on your issue and if a protocol level trace is requested, be sure to enable logging for the channel driver or other module.
Module (version) | CLI Command |
---|---|
New PJSIP driver (12 or higher) | pjsip set logger on |
SIP (1.6.0 or higher) | sip set debug on |
SIP (1.4) | sip set debug |
IAX2 (1.6.0 or higher) | iax2 set debug on |
IAX2 (1.4) | iax2 set debug |
CDR engine | cdr set debug on |
Issue reproduction and clean up¶
3. Now that logging is configured, enabled and verbosity is turned up you should reproduce your issue.
4. Once finished, be sure to disable the extra debugging:
*CLI> core set verbose 0
*CLI> core set debug 0
4.1. Again, remember to disable any extra logging for channel drivers or features.
SIP (1.4 or higher)
IAX2 (1.4 or higher)
5. Disable logging to the filesystem. Edit the logger.conf file and comment out or delete the line you added in step 1. Using a semi-colon as the first character on the line will comment out the line.
logger.conf
[logfiles]
;debug_log_123456 => notice,warning,error,debug,verbose,dtmf
Then reload the logger module (or restart Asterisk) as you did in step 2:
*CLI> module reload logger
Provide debug to the developers¶
6. Upload the file located in /var/log/asterisk/debug_log_123456 to the issue tracker.
WARNING!¶
- Do NOT post the output of your file as a comment. This clutters the issue and will only result in your comment being deleted.
- Attach the file with a .txt extension to make it easy for the developers to quickly open the file without downloading.
Many times a support technician or a developer will ask you to provide logs or «debug». You may think to yourself, «I have no idea what logs they want?» or «I’ve barely used this PBX because everything has been working fine up until this point so I have no idea how to help!»
That’s the main reason this post was created.
There are a couple different types of debug:
FreePBX CLI Debug
If you are running FreePBX 13 or higher and are executing a command through fwconsole you can use the —verbose option to output a stack trace that is especially helpful for developers to be able to fix problems
FreePBX Debug
If you think the error you are facing is a FreePBX GUI issue (white screen or blank page or something not working right in the GUI) then you will want to provide developers the debug log of the gui.
To do this simply run (from the SSH CLI)
This will generate output similar to what is shown below:
[root@dahdidev1 ~]# amportal a dbug Fetching FreePBX settings with gen_amp_conf.php.. trying to run as user asterisk: [FPBXDBUGDISABLE] already set to [0] ==> /var/log/asterisk/freepbx_dbug <== ==> /var/log/httpd/error_log <== mv: cannot stat `/var/lib/asterisk/agi-bin/license-*.zl': No such file or directory [Wed Dec 03 00:05:09 2014] [error] [client 125.64.35.67] File does not exist: /var/www/html/zc [Wed Dec 03 01:14:26 2014] [error] [client 125.64.35.67] File does not exist: /var/www/html/ucp/zc [Wed Dec 03 01:14:26 2014] [error] [client 125.64.35.67] File does not exist: /var/www/html/restapi [Wed Dec 03 01:14:26 2014] [error] [client 125.64.35.67] File does not exist: /tftpboot/zc [Wed Dec 03 01:14:26 2014] [error] [client 125.64.35.67] File does not exist: /var/www/html/aastra [Wed Dec 03 01:14:26 2014] [error] [client 125.64.35.67] File does not exist: /var/www/html/restapps [Wed Dec 03 01:59:48 2014] [error] [client 94.102.49.82] script '/var/www/html/recordings/index.php' not found or unable to stat [Wed Dec 03 01:59:50 2014] [error] [client 94.102.49.82] File does not exist: /var/www/html/admin/modules/admindashboard [Wed Dec 03 01:59:51 2014] [error] [client 94.102.49.82] client denied by server configuration: /var/www/html/admin/page.framework.php ==> /var/log/asterisk/freepbx.log <== [2014-Dec-03 09:44:02] [PHP-WARNING] (/var/www/html/admin/modules/endpoint/functions.inc/functions_epm_ucp.php:0) - No license for this product (PBXact) - make sure zend_loader.license_path is properly configured in your ini file! [2014-Dec-03 09:44:02] [PHP-WARNING] (/var/www/html/admin/modules/endpoint/functions.inc/functions_epm_ucp.php:0) - License check failed! [2014-Dec-03 09:57:01] [WARNING] (libraries/modulefunctions.legacy.php:7) - Depreciated Function _module_distro_id detected in /var/www/html/admin/modules/sysadmin/functions.inc/general.php on line 107 [2014-Dec-03 09:57:01] [PHP-NOTICE] (/var/www/html/admin/modules/sysadmin/functions.inc/license.php:53) - Undefined index: register [2014-Dec-03 09:57:02] [WARNING] (libraries/modulefunctions.legacy.php:7) - Depreciated Function _module_distro_id detected in /var/www/html/admin/modules/sysadmin/functions.inc/general.php on line 107 [2014-Dec-03 09:57:02] [PHP-NOTICE] (/var/www/html/admin/modules/sysadmin/functions.inc/license.php:53) - Undefined index: register [2014-Dec-03 09:58:20] [INFO] (bin/freepbx_setting:39) - trying to run as user asterisk: [2014-Dec-03 09:58:20] [INFO] (bin/freepbx_setting:40) - [2014-Dec-03 09:58:21] [INFO] (bin/freepbx_setting:61) - [FPBXDBUGDISABLE] already set to [0] [2014-Dec-03 09:58:21] [INFO] (bin/freepbx_setting:62) -
Now the the initial interface has started up it’s time to go to whatever GUI issue you are having and replicate it. Once you have done that copy and past what is shown to you in the output of this command and send it to a developer or support technician.
Browser Debug (Console Log)
CHROME:
- Press either CTRL + SHIFT + J to open the “console” tab of the Developer Tools.
Alternative method:
- Press either CTRL + SHIFT + I or F12 to open the Developer Tools.
- Press ESC (or click on “Show console” in the bottom right corner) to slide the console up.
Note: In Chrome’s dev tools, there is a “console” tab. However, a smaller “slide-up” console can be opened while any of the other tabs is active.
SAFARI:
- Press CTRL + ALT + I to open the Web Inspector.
- See Chrome’s step 2. (Chrome and Safari have pretty much identical dev tools.)
Note: Step 1 only works if the “Show Develop menu in menu bar” check box in the Advanced tab of the Preferences menu is checked!
IE9:
- Press F12 to open the developer tools.
- Click the “console” tab.
FIREFOX:
- Press CTRL + SHIFT + K to open the Web console (COMMAND + SHIFT + K on Macs).
or, if Firebug is installed:
- Press F12 to open Firebug.
- Click on the “console” tab.
OPERA:
- Press CTRL + SHIFT + I to open Dragonfly.
- Click on the “console” tab.
Asterisk Logs
If you think this is an Asterisk bug or a FreePBX dial plan generation bug then you need to get the Asterisk Logs
To get these logs you will need to run (from SSH CLI):
tail -f /var/log/asterisk/full
This will then give you output like:
root@freepbxdev1 ivr]# tail -f /var/log/asterisk/full [2014-12-03 13:20:53] WARNING[6227] res_pjsip_mwi.c: AOR 1000 has no configured mailboxes. MWI subscription failed [2014-12-03 13:22:41] WARNING[6227] res_pjsip_mwi.c: AOR 1000 has no configured mailboxes. MWI subscription failed [2014-12-03 13:23:22] WARNING[6227] res_pjsip_mwi.c: AOR 1000 has no configured mailboxes. MWI subscription failed [2014-12-03 13:25:51] WARNING[6227] res_pjsip_mwi.c: AOR 1000 has no configured mailboxes. MWI subscription failed [2014-12-03 13:27:41] WARNING[6227] res_pjsip_mwi.c: AOR 1000 has no configured mailboxes. MWI subscription failed [2014-12-03 13:27:59] WARNING[6287] res_calendar_caldav.c: Unknown response to CalDAV calendar myGoogleCal, request REPORT to /calendar/dav/en.usa%23holiday%40group.v.calendar.google.com/events: SSL handshake failed: SSL error: GnuTLS internal error. [2014-12-03 13:28:20] WARNING[6227] res_pjsip_mwi.c: AOR 1000 has no configured mailboxes. MWI subscription failed [2014-12-03 13:30:49] WARNING[6227] res_pjsip_mwi.c: AOR 1000 has no configured mailboxes. MWI subscription failed [2014-12-03 13:32:41] WARNING[6227] res_pjsip_mwi.c: AOR 1000 has no configured mailboxes. MWI subscription failed [2014-12-03 13:33:18] WARNING[6227] res_pjsip_mwi.c: AOR 1000 has no configured mailboxes. MWI subscription failed
Now make a phone call or cause the disruption to happen and copy and paste that output to a developer or support technician.
Asterisk Logs — Part II
Suppose you want a call trace from a specific call that has already happened, so it’s too late to see it in the console live. First locate the call in the CDR, and get the uniquieid from the system column for the call in question:
Then grep the Asterisk full logs for that value:
[root@34693894 ~]# grep 1518526777.67 /var/log/asterisk/full* /var/log/asterisk/full-20180214:[2018-02-13 08:59:37] VERBOSE[24184][C-00000001] pbx.c: Executing [s@macro-user-callerid:1] Set("SIP/5002-00000001", "TOUCH_MONITOR=1518526777.67") in new stack /var/log/asterisk/full-20180214:[2018-02-13 08:59:37] VERBOSE[24184][C-00000001] pbx.c: Executing [700@from-internal:37] QueueLog("SIP/5002-00000001", "700,1518526777.67,NONE,DID,") in new stack
This will return a few lines, which will include the Asterisk CALL-ID (not to be confused with CallerID), the second number in the square brackets. It will also return a file name, as full logs are rotated daily and purged weekly. Perform a second grep on the CALL-ID and filename like:
[root@34693894 ~]# grep C-00000001 /var/log/asterisk/full-20180214 [2018-02-13 08:59:37] VERBOSE[29432][C-00000001] netsock2.c: Using SIP RTP TOS bits 184 [2018-02-13 08:59:37] VERBOSE[29432][C-00000001] netsock2.c: Using SIP RTP CoS mark 5 [2018-02-13 08:59:37] VERBOSE[24184][C-00000001] pbx.c: Executing [700@from-internal:1] Macro("SIP/5002-00000001", "user-callerid,") in new stack [2018-02-13 08:59:37] VERBOSE[24184][C-00000001] pbx.c: Executing [s@macro-user-callerid:1] Set("SIP/5002-00000001", "TOUCH_MONITOR=1518526777.67") in new stack [2018-02-13 08:59:37] VERBOSE[24184][C-00000001] pbx.c: Executing [s@macro-user-callerid:2] Set("SIP/5002-00000001", "AMPUSER=5002") in new stack [2018-02-13 08:59:37] VERBOSE[24184][C-00000001] pbx.c: Executing [s@macro-user-callerid:3] GotoIf("SIP/5002-00000001", "0?report") in new stack *snip*
This will return the full call trace from beginning to end of a specific call. You can then search through the trace and send to pastebin for a shareable URL:
[root@34693894 ~]# grep C-00000001 /var/log/asterisk/full-20180214 | pastebin title: Automatic Pastebin from Sangoma OS 7 name: [email protected] private: 1 expire: 0 http://pastebin.freepbx.org/view/<obfuscated>
If you wish to remove sensitive information before sending to pastebin you can use sed. Suppose you had a caller ID (or DID) of 3145551212 and you want to replace it with NPANXXXXXX, you can do so using this command:
grep C-00000001 /var/log/asterisk/full | sed 's/3145551212/NPANXXXXXX/g' | pastebin
Using grep to get a call trace in this way, requires that every line in the trace contain the string that is being grepped. If you have SIP debug enabled, and you also need SIP trace information for debug purposes, it will be filtered out by the above grep commands.
Backtraces (Segfaults/Core Dumps/Asterisk Crashing)
You must run this against the version of Asterisk that is crashing. EG if you had Asterisk 13.17 and it core dumped and then you rolled back to 13.16 you can’t run GDB against this as the debug tools will be on 13.16 and won’t be able to correctly parse the core dump from 13.17
If you’ve gotten this far, you hit a rare occurrence with Asterisk in that it’s randomly dying on you. The first thing to do is to determine if you are able to obtain a backtrace. To do this look for a file named core.* in your tmp directory. Please note the date and time of the core file you use as to not use an old core dump.
If you’re running FreePBX Distro 7, you can simply install the ‘sangoma-devel’ package and then use the new ‘debuginfo-install’ command to download all the required debug packages. Note that you should replace the asterisk version in the command with the actual asterisk version that you are running (‘asterisk11’ or ‘asterisk14’, for example)
# Only for FreePBX Distro 7! yum install -y sangoma-devel debuginfo-install --enablerepo=centos7-debuginfo asterisk14
If you’re running an older version of FreePBX Distro, you will need to install these packages manually, again replacing the asterisk version in this example with the actual version of asterisk you are running.
yum install pjproject-debuginfo asterisk13-debuginfo
If the asterisk version is 13.14.0 and 14.3.0 above then use the ast_coredumper tool to obtain the backtrace.
/var/lib/asterisk/scripts/ast_coredumper /tmp/[name of the core file]
If you want a backtrace from a running instance of Asterisk, possibly it’s hung but has not crashed and not generated a core dump, you can do so using:
/var/lib/asterisk/scripts/ast_coredumper --running --tarball-coredumps
Otherwise you can then run the command below to obtain a backtrace.txt file which can be investigated and uploaded to the ticket
gdb -se "asterisk" -ex "bt full" -ex "thread apply all bt" --batch -c [name of the core file] > /tmp/backtrace.txt
If you are unable to locate the core file, we recommend you check out the Asterisk Wiki on Obtaining Backtraces.
Uploading Logs
You can then upload your logs to pastebin.freepbx.org or by piping to the pastebin command in the distro:
cat /etc/asterisk/modules.conf | pastebin
Расположение Описание
/var/log/asterisk/fail2ban Журнал событий модуля fail2ban
/var/log/asterisk/freepbx.log Журнал событий модулей FreePBX
/var/log/asterisk/freepbx_security.log Журнал событий безопасности
/var/log/asterisk/full Журнал событий Asterisk каждого
уровня. Обычно используется для
поиска трассировок старых звонков
/var/log/dmesg Журнал событий уровня ядра
/var/log/httpd/access_log Журнал событий доступа к Apache
/var/log/httpd/error_log Журнал ошибок web сервера Apache
/var/log/messages Системный журнал событий Linux
/var/log/yum.log Журнал действий,выполненных через
yum
Чисто журналы смотреть тяжело, поэтому пользуемся активно сортировками:
Мониторим номер и его изменения:
tail -f /var/log/asterisk/full | grep 101
Вывод лога за число по группе вызовов
cat /var/log/asterisk/full-20181022 |grep 602
Мониторинг fail2ban и полного лога в он-лайн
tail -f /var/log/fail2ban.log
tail -f /var/log/asterisk/full
Поиск по вызовам(имя файла сокращено)
find /var/spool/asterisk/monitor/ -name «out-1234567.wav»
Ищем в логах по ID
grep 220-00005f3e /var/log/asterisk/full*
grep 220-00005f3e /var/log/asterisk/full-20181221
Проверяем по IP-адресу что стучался на web
grep 192.168.100 /etc -R | grep -v /etc/httpd/logs/access_log
Проверяем донабор DISA
tail -f /var/log/asterisk/full | grep disa-dtmf
Смотрим регистрации:
egrep «(Rea|UNREA|Register)» /var/log/asterisk/full*
Удобный просмотр лога
less /var/log/asterisk/full-дата
Удобный просмотр лога, где {name} — имя регистрации
grep {name} /var/log/asterisk/messages
Удобный просмотр лога, где {name} — адрес, который ищем
tail -f /var/log/asterisk/messages | grep {ip}
Конец!