Asterisk Log Files – FreePBX OpenSource Project – Documentation

Asterisk logfiles

The Asterisk Logfiles Module is an easy way to view portions of the Asterisk Log.  However, this Module is only useful when you want to view a very recent event in the Asterisk Log.  

For a more detailed view of your Asterisk Logfiles, access the command prompt of the machine that you installed Asterisk on.  You can do so by physically accessing the machine, or by using an SSH client to access the command prompt from another machine.

If you are using a Windows machine, you can use a free program called Putty to access the command prompt.  You can download Putty here.  Putty has an added advantage in that you can easily cut and paste to and from Putty, and you cannot do so while accessing the command line from the machine that hosts your PBX.

Core set debug

Set the level of debug messages to be displayed or set a module name to display debug messages from. “0” or “off” means no messages should be displayed. Equivalent to -d[d[…]] on start up.

Usage: core set debug [atleast] <level> [module]

Core set verbose

Set the level of verbose messages to be displayed on the console. “0” or “off” means no verbose messages should be displayed. The silent option means the command does not report what happened to the verbose level. Equivalent to -v[v[…]] on start up.

Usage: core set verbose [atleast] <level> [silent]

Core show settings

Show miscellaneous core system settings.  Along with showing other various settings, issuing this command will show the current debug level as well as the root and current console verbosity levels.  These log settings can be found under the “PBX Core Settings” section after executing the command.

Usage: core show settings

Dialplan logging applications

Logging can also be done in the dialplan utilizing the following applications:

Log file location

Asterisk log files are located in the directory /var/log/asterisk. There are a variety of different types of log files, generally one file per day going back a certain number of days.

Похожее:  Как работает EMS Почта России - личный опыт. | Пикабу

The “full” log is the most detailed, describing each call in great detail.

Log(<level>, <message>)

Send arbitrary text to a selected log level, which must be one of the following: ERROR, WARNING, NOTICE, DEBUG, or VERBOSE.

Logger reload

Reloads the logger subsystem state. Use after restarting syslogd(8) if using syslog logging.

Usage: logger reload [<alt-conf>]

Logger rotate

Rotates and Reopens the log files.

Usage: logger rotate

Logger show channels

List configured logger channels.

Usage: logger show channels

Logger.conf в нормальной работе

Во избежание переполнения диска, при нормальной работе рекомендуется следующий файл logger.conf:

[general]
[logfiles]
console => notice,warning,error,dtmf
messages => notice,warning,error
;verbose => notice,warning,error,verbose

Logger.conf при дебаге

Для дебага из консоли или из файла мы добавим оператор debug:

[general]
[logfiles]
console => debug,notice,warning,error,dtmf
messages => debug,notice,warning,error
;verbose => notice,warning,error,verbose

Для просмотра verbose из консоли нужно дать команду:*CLI> core set verbose 10

Анализ звонка

В Asterisk 11 каждая строка дебага ассоциированная с данным звонком включает в себя call ID.Поэтому для анализа нужно дать команду типа:

cat /var/log/asterisk/messages | grep C-00000005

[Sep  8 10:45:07] DEBUG[1119][C-00000005] chan_sip.c: Acked pending invite 102
[Sep  8 10:45:07] DEBUG[1119][C-00000005] chan_sip.c: Stopping retransmission on '0c9aa5b3734047910a5f08f46e58423e@192.168.10.114:5060' of Request 102: Match Found
[Sep  8 10:45:07] DEBUG[1119][C-00000005] res_rtp_asterisk.c: Setting RTCP address on RTP instance '0x1c999e8'
[Sep  8 10:45:07] DEBUG[1119][C-00000005] netsock2.c: Splitting '192.168.2.12:61037' into...
[Sep  8 10:45:07] DEBUG[1119][C-00000005] netsock2.c: ...host '192.168.2.12' and port '61037'.
[Sep  8 10:45:07] DEBUG[1119][C-00000005] chan_sip.c: Trying to put 'ACK sip:6C6' onto UDP socket destined for 192.168.2.12:61037
[Sep  8 10:45:07] DEBUG[1119][C-00000005] chan_sip.c: Setting SIP_ALREADYGONE on dialog 0c9aa5b3734047910a5f08f46e58423e@192.168.10.114:5060
[Sep  8 10:45:07] DEBUG[1361][C-00000005] channel.c: Hanging up channel 'SIP/6C626D04E1EB-00000009'
[Sep  8 10:45:07] DEBUG[1361][C-00000005] chan_sip.c: Hangup call SIP/6C626D04E1EB-00000009, SIP callid 0c9aa5b3734047910a5f08f46e58423e@192.168.10.114:5060
[Sep  8 10:45:07] DEBUG[1361][C-00000005] res_rtp_asterisk.c: Setting RTCP address on RTP instance '0x1c999e8'
[Sep  8 10:45:07] DEBUG[1361][C-00000005] app_dial.c: Exiting with DIALSTATUS=BUSY.
[Sep  8 10:45:07] DEBUG[1361][C-00000005] channel.c: Driver for channel 'SIP/cucm01-00000008' does not support indication 5, emulating it
[Sep  8 10:45:07] DEBUG[1361][C-00000005] channel.c: Set channel SIP/cucm01-00000008 to write format ulaw
[Sep  8 10:45:07] DEBUG[1361][C-00000005] channel.c: Set channel SIP/cucm01-00000008 to write format slin
[Sep  8 10:45:07] DEBUG[1361][C-00000005] channel.c: Scheduling timer at (50 requested / 50 actual) timer ticks per second
[Sep  8 10:45:15] DEBUG[1119][C-00000005] chan_sip.c: **** Received BYE (8) - Command in SIP BYE
[Sep  8 10:45:15] DEBUG[1119][C-00000005] netsock2.c: Splitting '192.168.0.11:5060' into...
[Sep  8 10:45:15] DEBUG[1119][C-00000005] netsock2.c: ...host '192.168.0.11' and port '5060'.
[Sep  8 10:45:15] DEBUG[1119][C-00000005] chan_sip.c: Setting SIP_ALREADYGONE on dialog dee8ce80-5ee1929a-160ac-b00a8c0@192.168.0.11
[Sep  8 10:45:15] DEBUG[1119][C-00000005] res_rtp_asterisk.c: Setting RTCP address on RTP instance '0x7ff29c013748'
[Sep  8 10:45:15] DEBUG[1119][C-00000005] chan_sip.c: Session timer stopped: 138 - dee8ce80-5ee1929a-160ac-b00a8c0@192.168.0.11
[Sep  8 10:45:15] DEBUG[1119][C-00000005] chan_sip.c: Received bye, issuing owner hangup
[Sep  8 10:45:15] DEBUG[1119][C-00000005] chan_sip.c: Trying to put 'SIP/2.0 200' onto UDP socket destined for 192.168.0.11:5060
[Sep  8 10:45:15] DEBUG[1361][C-00000005] channel.c: Set channel SIP/cucm01-00000008 to write format ulaw

Как использовать elasticsearch и kibana для сбора логов в asterisk?

В данной статье мы продолжим рассмотрение стека ELK. Детальней разберем настройку ElasticSearch, а также рассмотрим Kibana как инструмент для визуализации логов.

Похожее:  АИС Образование - электронный дневник

Изучить первоначальную настройку и узнать немного теории про стек ELK вы можете, заглянув в статью «Использование ElasticSearch для Asterisk».

Информер! Тестирование проводим на том же сервере, что и наш Asterisk freePBX. В рабочем решению делать так не рекомендуется, т.к. стек ELK потребляет слишком много ресурсов.

Для начала создадим конфигурационнай файл для logstash, открываем файл o /etc/logstash/conf.d/logstash.conf  и вносим туда следующее:

input {
  beats {
	port => 5044
  }
}
# Парсим сообщения по заданным паттернам Grok
filter {
  if [type] == "asterisk-log"  {
	grok {
      patterns_dir => [ "/usr/share/logstash/patterns" ]
  	match => { "message" => "[(%{TIMESTAMP_ISO8601:datetime}|%{SYSLOGTIMESTAMP:datetime})]s*%{ASTLEVEL:asterisk_severity}s*[%{ASTPID:asterisk_pid}]([%{ASTCHANNEL_ID:asterisk_channel}])?s*%{ASTSRC:asterisk_source}:s*%{GREEDYDATA:asterisk_data}" }
	}
  }
  if [type] == "asterisk-cdr" {
	csv {
  	separator => ","
  	# На тот случай если захотите парсить CDR-CSV
  	columns => ["accountcode","src","dst","dcontext","clid","channel","dstchannel","lastapp","lastdata","start","answer","end","duration","billsec","disposition",
"amaflags","userfield","uniqueid"]
  	convert => {
  	#  "accountcode" => "string"
  	#  "src" => "string"
  	#  "dst" => "string"
  	#  "dcontext" => "string"
  	#  "clid" => "string"
  	#  "channel" => "string"
  	#  "dstchannel" => "string"
	  #  "lastapp" => "string"
  	#  "lastdata" => "string"
         "start" => "date_time"
         "answer" => "date_time"
         "end" => "date_time"
         "duration" => "integer"
         "billsec" => "integer"
  	#  "disposition" => "string"
  	#  "amaflags" => "string"
  	#  "userfield" => "string"
  	#  "uniqueid" => "string"
  	}
  } }
}
# Отбравка данных в ElasticSearch
output {
  elasticsearch {
	hosts => "localhost:9200"
	user => elastic
	password => changeme
    manage_template => false
	index => "%{[@metadata][beat]}-%{ YYYY.MM.dd}"
    document_type => "%{[@metadata][type]}"
  }
  # for debug purpose of pipeline with command: ./logstash -f /etc/logstash/conf.d/logstash.conf
  # stdout { codec => rubydebug  }
}

Т.к. мы используем Grok для парсинга данных из логов, то необходимо его установить, а также дополнительные зависимости. Выполняем

·         wget --no-check-certificate https://github.com/jordansissel/grok/tarball/master -O grok.tar.gz
·         tar zxf grok.tar.gz
·         yum install -y gcc gperf make libevent-devel pcre-devel tokyocabinet-devel
·         make grok
·         make install
·         ldconfig

Создаем каталог patterns в директории /usr/share/logstash/ а в нём файл asterisk-grok-patterns, в который вносим следующее:

ASTLEVEL (?:VERBOSE|ERROR|NOTICE|INFO|DEBUG|DTMF|WARNING)
ASTPID [0-9] 
ASTCHANNEL_ID C-[A-Za-z0-9] 
ASTSRC [-a-z._0-9/] 

Далее Вносим настройки в файл /etc/filebeat/filebeat.yml

#----------------------------- Logstash prospectors ---------------------------
filebeat.inputs:
- input_type: log
  enabled: true
  paths:
	- /var/log/asterisk/full*
  document_type: asterisk-log
  encoding: "utf-8"
  scan_frequency: 5s
 
  env: production
 
#----------------------------- Logstash output --------------------------------
output.logstash:
  # The Logstash hosts
  hosts: ["127.0.0.1:5044"]
 
xpack.monitoring:
  enabled: true
  elasticsearch:
	hosts: ["http://127.0.0.1:9200"]
 
#================================ Logging =====================================
logging.level: debug
logging.selectors: ["*"]

В данном файле, мы говорим, что парсить будем логи Full.

Похожее:  Tele2 проверяет паспортные данные своих абонентов

Информер! Не забудьте указать параметр  enabled: true, иначе парсинг производиться не будет.

Теперь, после того как все настройки внесены, мы можем перейти на веб-интерфейс Kibana для создания паттернов. Напоминаю, что Kibana использует порт 5601

Далее перейдем в настройки patterns как показано на рисунке и создадим новый паттерн.

Далее выбираем доступный нам pattern, который начинается со слов filebeat и вносим его имя целиком в index name

После нажатия кнопки next выбираем Time Filter, нам доступен только timestamp

После настройки паттернов переходим в раздел Discover и там выбираем наш паттерн по  которому будем смотреть логи.

После этого, в строке поиска и можем написать ключевое слово, по которому будем делать визуализацию, для примера возьмём слово warning.

Как видим на скриншоте, у нас встречался всего 1 warning, который как раз и отражен на графике.

На этом настройка ElasticSearch Kibana, для Asterisk завершена.

Отладка плана набора (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″”.

Вот пожалуй все действия, которые помогут Вам решить проблему со звонками.

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (1 оценок, среднее: 5,00 из 5)
Загрузка...

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Adblock
detector