如何使用Debug方式来排查Asterisk和FreePBX问题
来自最权威最新完整开源SIP,语音通信,融合通信中文技术文档资料,提供详细的Asterisk Freepbx, FreeSBC, 免费会话边界控制器,网关,语音板卡,IPPBX,SBC配置资料-asterisk,freepbx,freesbc 用户手册 界面配置,呼叫路由,IVR, 网关对接,拨号规则,SIP 分机呼叫,pjsip, IVR, 录音, CDR, 队列呼叫,振铃组,CLI 命令中文资料手册
如何排查问题是技术人员经常遇到的问题,如果技术人员能够提供非常完整的debug消息,这样就会大大提高排查问题的速度,提高工作效率。在Asterisk和FreePBX环境下,官方提供了多种排查的方式,通过价值排查方式可以轻松解决这些问题。 主要的排查方式包括:
- FreePBX CLI Debug
- FreePBX Debug
- Browser Debug (Console Log)
- CHROME:
- SAFARI:
- IE9:
- FIREFOX:
- OPERA:
- Asterisk Logs
- Asterisk Logs - Part II
- Backtraces (Segfaults/Core Dumps/Asterisk Crashing)
- 官方权威工具
1)通过执行命令来激活Debug方式,保存相关的日志到相应的默认路径。 在linux CLI环境下,执行amportal a dbug,显示以下输出结果, 开发人员可以根据相应的路径文件检查问题。
[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) -
2)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.
3) Asterisk Logs 日志文件
root@freepbxdev1 ivr]# tail -f /var/log/asterisk/full // 默认asterisk日志存储路径 [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
如果需要查找特定的条件的话,也可以通过以下命令grep排查报错日志信息:
[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
4) 使用Backtraces (Segfaults/Core Dumps/Asterisk Crashing)检查崩溃信息 4.1 可以使用命令查找方式:
ls -l /tmp | grep core. // 找到相关的core dump 信息。
4.2 可以使用Sangoma 的开发排查根据来排查,用户需要安装这些开发工具,安装的是ISO版本:
# 仅支持 FreePBX Distro 7! yum install -y sangoma-devel debuginfo-install --enablerepo=centos7-debuginfo asterisk14 // 这里的支持的是asterisk 14,用户可以使用不同的版本,例如15来排查Asterisk15.
4.3 如果用户运行 13.14.0 或者 14.3.0以上版本,也可以使用系统默认支持的工具:
/var/lib/asterisk/scripts/ast_coredumper /tmp/[name of the core file]
4.4 使用最简单命令获得崩溃信息:
gdb -se "asterisk" -ex "bt full" -ex "thread apply all bt" --batch -c [name of the core file] > /tmp/backtrace.txt
5) 使用Asterisk官方权威资料和工具来排查问题: https://wiki.asterisk.org/wiki/display/AST/Getting+a+Backtrace