在Ubuntu 12.04 LTS上设置VoIPmonitor
VoIPmonitor是那些用于SIP VoIP调用监视和故障排除的开源工具之一,当我们遇到深奥的VoIP问题时,我们可以使用它。
我们最喜欢的是,可以将调用保存到PCAP文件中,然后使用WireShark进行进一步调试。
软件
本文使用的软件:
- Ubuntu 12.04 LTS
- Nginx 1.1.19
- MySQL 5.5.35
- PHP 5.3.10
- Tshark 1.6
- VoIPmonitor(带有GUI 7.17)
我们正在使用四核Inter Xeon CPU:
$grep name /proc/cpuinfo model name : Intel(R) Xeon(TM) CPU 2.66GHz model name : Intel(R) Xeon(TM) CPU 2.66GHz model name : Intel(R) Xeon(TM) CPU 2.66GHz model name : Intel(R) Xeon(TM) CPU 2.66GHz
安装强制性软件包
我们将Asterisk PBX系统与Nginx-light一起使用进行测试。
这些软件包中的任何一个的安装和配置都不在本文的讨论范围之内。
假设我们已经安装并运行了Asterisk,则可以执行以下操作来安装Nginx(如果需要,可以免费使用Apache2):
# apt-get update && apt-get install nginx-light nginx-common
安装PHP,MySQL,基于终端的wireshark和其他软件包:
# apt-get install build-essential git gsfonts libvorbis-dev libpcap-dev php5 php5-cli \ php5-mysql php5-gd php5-mcrypt mysql-server unixodbc-dev tshark libmysqlclient-dev \ zlib1g-dev librsvg2-bin
安装VoIPmonitor WEB GUI(对于PHP 5.3)
VoIPmonitor WEB GUI是商业前端,但是可以通过在http://www.voipmonitor.org/download-gui?version=license上创建一个新帐户来获得30天的免费许可证密钥。
VoIPmonitor WEB GUI软件包
下载VoIPmonitor WEB GUI存档文件:
# wget http://www.voipmonitor.org/download-gui?version=latest&phpver=53&festry \ -O gui.tgz
解压缩并移至Web服务器的根目录'/var/www /':
# tar xvfz gui.tgz # mv ./voipmonitor-gui-7.17-SVN ./voipmonitor # mv ./voipmonitor /var/www/ # chown -R asterisk /var/www/voipmonitor
HTML/PDF包
下载HTML/PDF wkhtml二进制文件:
# wget http://sourceforge.net/projects/voipmonitor/files/wkhtml/0.10.0_rc2/wkhtmltopdf-i686 -O /var/www/voipmonitor/bin/wkhtmltopdf-i686
使它在世界范围内可执行:
# chmod +x /var/www/voipmonitor/bin/wkhtmltopdf-i686
HTML /图像包
下载HTML/Image wkhtml二进制文件:
# wget http://sourceforge.net/projects/voipmonitor/files/wkhtml/0.10.0_rc2/wkhtmltoimage-i686 -O /var/www/voipmonitor/bin/wkhtmltoimage-i686
使它在世界范围内可执行:
# chmod +x /var/www/voipmonitor/bin/wkhtmltoimage-i686
IonCube程序包
下载并设置IonCube加载程序:
# wget http://www.voipmonitor.org/ioncube/i686/ioncube_loader_lin_5.3.so \ -O /usr/lib/php5/20090626+lfs/ioncube_loader_lin_5.3.so
# echo "zend_extension = /usr/lib/php5/20090626+lfs/ioncube_loader_lin_5.3.so" > /etc/php5/fpm/conf.d/ioncube.ini
此时,应该使用IonCude配置PHP:
$php5 -v PHP 5.3.10-1ubuntu3.11 with Suhosin-Patch (cli) (built: Apr 4 2014 01:27:23) Copyright (c) 1997-2012 The PHP Group Zend Engine v2.3.0, Copyright (c) 1998-2012 Zend Technologies with the ionCube PHP Loader v4.5.2, Copyright (c) 2002-2014, by ionCube Ltd.
将用于处理警报的PHP脚本添加到crontab,每5分钟运行一次:
# echo "/5 * * * * root php /var/www/voipmonitor/php/run.php cron" >> /etc/crontab
许可证密钥
获得许可证密钥后,请不要忘记将其复制到'/var/www/voipmonitor/key.php'下。
重新启动FastCGI流程管理器:
# service php5-fpm restart
重新启动Nginx:
# service nginx restart
要完成GUI安装,请打开Web浏览器并导航到'http://localhost/voipmonitor'。
我们应该看到类似的视图,如下所示。
点击蓝色按钮。
从源代码编译并安装GNU/GPL嗅探器
安装snappy和curl库:
# apt-get install libsnappy1 libsnappy-dev libcurl4-openssl-dev
从git检出嗅探器的源代码:
# cd /usr/src && git clone git://git.code.sf.net/p/voipmonitor/git voipmonitor-git
# cd ./voipmonitor-git
配置,编译和安装:
# ./configure # make # make install
创建一个新的VoIPmonitor数据库:
# mysqladmin -uroot -p create voipmonitor
创建一个新目录来存储数据文件(用于RTP,SIP,音频等):
# mkdir /var/spool/voipmonitor # chown asterisk /var/spool/voipmonitor
复制默认配置文件:
# cp ./config/voipmonitor.conf /etc/ # cp ./config/init.d/voipmonitor /etc/init.d/
建立链接以在运行级别2345中启动VoIPmonitor服务:
# update-rc.d voipmonitor defaults /etc/rc0.d/K20voipmonitor -> ../init.d/voipmonitor /etc/rc1.d/K20voipmonitor -> ../init.d/voipmonitor /etc/rc6.d/K20voipmonitor -> ../init.d/voipmonitor /etc/rc2.d/S20voipmonitor -> ../init.d/voipmonitor /etc/rc3.d/S20voipmonitor -> ../init.d/voipmonitor /etc/rc4.d/S20voipmonitor -> ../init.d/voipmonitor /etc/rc5.d/S20voipmonitor -> ../init.d/voipmonitor
现在修改“ /etc/voipmonitor.conf”,提供MySQL数据库凭据,侦听的接口等。
一些配置详细信息如下:
mysqlhost = 127.0.0.1 mysqlport = 3306 mysqlusername = mysqlpassword = mysqldb = voipmonitor interface = eth0 managerport = 5029 sipport = 5060 packetbuffer_enable = yes packetbuffer_total_maxheap = 1000 #in MB packetbuffer_compress = yes spooldir = /var/spool/voipmonitor maxpoolsize = 10240 maxpooldays = 21 promisc = yes
启动VoIPmonitor服务:
# /etc/init.d/voipmonitor start Starting voipmonitor: voipmonitor version 9.4beta21 Loading configuration from file /etc/voipmonitor.conf SQL DRIVER: mysql voipmonitor[17588]: connect - db version 5.5 voipmonitor[17588]: creating and upgrading MySQL schema... voipmonitor[17588]: create procedure create_partition voipmonitor[17588]: create procedure create_partitions_cdr voipmonitor[17588]: create function getIdOrInsertUA voipmonitor[17588]: create function getIdOrInsertSIPRES voipmonitor[17588]: create function getIdOrInsertCONTENTTYPE voipmonitor[17588]: create procedure PROCESS_SIP_REGISTER voipmonitor[17588]: done
确保它正在运行:
# netstat -nltp | grep voip tcp 0 0 127.0.0.1:5029 0.0.0.0:* LISTEN 17594/voipmonitor
故障排除
如果出现任何问题,请首先检查syslog:
$tail /var/log/syslog
配置:错误:无法找到snappy库
configure: error: Unable to find snappy library
要解决此问题,请执行以下操作:
# apt-get install libsnappy1 libsnappy-dev
配置:错误:找不到curl库
configure: error: Unable to find curl library
要解决此问题,请执行以下操作:
# apt-get install libcurl4-openssl-dev
本地-127.0.0.1:5029-连接被拒绝(111)-重试
local - 127.0.0.1 : 5029 - Connection refused (111) - trying again
确保VoIPmonitor正在运行,并且可以远程登录:
# telnet localhost 5029 Trying 127.0.0.1... Connected to localhost. Escape character is '^]'. ]
voipmonitor []:收到信号0x04(SIGILL):非法指令(ANSI)
voipmonitor[]: Got signal 0x04 (SIGILL): Illegal instruction (ANSI)
在安装预构建的嗅探器程序包时,可能会发生这种情况。
我们需要从源代码为CPU对其进行编译。