Centos7搭建zabbix服务器监控呼叫中心

1.为何首选zabbix做为呼叫中心的监控系统

  • zabbix是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案
  • zabbix能监视各种网络参数,保证服务器系统的安全运营;并提供灵活的通知机制以让系统管理员快速定位/解决存在的各种问题。
  • zabbix由2部分构成,zabbix server与可选组件zabbix agent。
  • zabbix server可以通过SNMP,zabbix agent,ping,端口监视等方法提供对远程服务器/网络状态的监视,数据收集等功能,它可以运行在Linux,Solaris,HP-UX,AIX,Free BSD,Open BSD,OS X等平台上。
  • zabbix是一款linux下的流行监控工具,可以使用zabbix进行呼叫中心性能负载的监控,更有利于了解呼叫中心系统运营情况,本文以流行的astercc呼叫中心系统为例,介绍如何配置zabbix监控astercc系统的:呼入量、呼出量、呼出振铃数、呼出接通数、话务量、坐席总数、坐席签入数目、坐席通话数目、坐席呼入数目、坐席呼出数目、坐席暂停数目(小休、午休、请假、会议、培训、其他)、排队量等等。

2.下载及安装zabbix服务器

setenforce 0
sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config

systemctl stop firewalld.service
systemctl disable firewalld.service
yum install -y epel-release 0

yum -y install wget net-snmp-devel OpenIPMI-devel httpd openssl-devel java lrzsz fping-devel libcurl-devel perl-DBI pcre-devel libxml2 libxml2-devel mysql-devel gcc php php-bcmath php-gd php-xml php-mbstring php-ldap php-mysql.x86_64 php-pear php-xmlrpc net-tools wget vim-enhanced
wget -P /etc/yum.repos.d http://mirrors.aliyun.com/repo/Centos-7.repo
yum -y install mariadb mariadb-server php php-mysql httpd
systemctl enable mariadb.service
systemctl start mariadb.service
mysql_secure_installation

systemctl start httpd.service
rpm -ivh http://repo.zabbix.com/zabbix/3.0/rhel/7/x86_64/zabbix-release-3.0-1.el7.noarch.rpm

yum -y install zabbix-server-mysql
yum -y install zabbix-web-mysql
yum -y install zabbix-get
mysql -uroot -proot -e "create database zabbix default character set utf8 collate utf8_bin;"
mysql -uroot -proot -e "grant all on zabbix.* to 'zabbix'@'%' identified by 'zabbix';"
cd /usr/share/doc/zabbix-server-mysql-3.0.21/
zcat create.sql.gz | mysql -uzabbix -p zabbix

vim /etc/zabbix/zabbix_server.conf
修改以下内容
DBHost=localhost
DBName=zabbix
DBUser=zabbix
DBPassword=zabbix

vim /etc/httpd/conf.d/zabbix.conf
#如图示,将时区改为Asia/Shanghai

systemctl start zabbix-server.service
systemctl enable zabbix-server.service
systemctl restart httpd.service

 

#页面配置

http://localhost/zabbix           #localhost为zabbix服务器ip地址

默认账号Admin 密码zabbix

登录成功,zabbix服务器创建完成

选择语言

 

3.下载及安装zabbix客户端

3.1 zabbix服务器监控本机localhost

yum -y install zabbix zabbix-agent

在安装时如出现如上图所示错误,原因是软件这两个版本不一致,仔细观察发现这两个软件包使用了不同的仓库,把epel的关闭(enabled=0,位于/etc/yum.repos.d/epel.repo)再重装

vim /etc/zabbix/zabbix_agentd.conf
Server=127.0.0.1
ServerActive=127.0.0.1
Hostname=127.0.0.1
Timeout=30
UnsafeUserParameters=1 # '1'为开启自定义键值

zabbix_agentd -c /etc/zabbix/zabbix_agentd.conf
systemctl start zabbix-agent

 

3.2 astercc服务器安装配置zabbix客户端

yum install -y zabbix-agent
cd /etc/zabbix/
mv zabbix_agent.conf zabbix_agent.conf.bak
mv zabbix_agentd.conf zabbix_agentd.conf.bak
vim zabbix_agentd.conf
/etc/init.d/zabbix-agent start

vim /etc/sysconfig/iptables          #开放10050/tcp  端口

zabbix服务器上添加客户端主机

#192.168.1.194为astercc客户端IP

客户端添加自定义键值

vim /etc/zabbix/zabbix_agentd.conf

cat > /home/Realtime_report.sh << EOF #!/bin/bash USER=root #mysql user PASSWORD=astercc #mysql password #呼入量 INBOUNDCOUNT=`mysql -u$USER -p$PASSWORD astercc10 -e "select count(*) from cc10_curpbxcdrs where endtime='0000-00-00 00:00:00' and calltype='DIALIN' and memo != 'PREDICTIVE CALLER';" 2>/dev/null|awk 'NR==2{print $1}'` #呼出量 OUTBOUNDCOUNT=`mysql -u$USER -p$PASSWORD astercc10 -e "select count(*) from cc10_curpbxcdrs where endtime='0000-00-00 00:00:00' and (userfield='DID DIALOUT' or calltype='DIALOUT') and answertime='0000-00-00 00:00:00';" 2>/dev/null|awk 'NR==2{print $1}'` #呼出振铃量 OUTBOUNDRINGING=`mysql -u$USER -p$PASSWORD astercc10 -e "select count(*) from cc10_curpbxcdrs where endtime='0000-00-00 00:00:00' and (userfield='DID DIALOUT' or calltype='DIALOUT') and answertime='0000-00-00 00:00:00';" 2>/dev/null|awk 'NR==2{print $1}'` #呼出接通量 OUTBOUNDANSWER=`mysql -u$USER -p$PASSWORD astercc10 -e "select count(*) from cc10_curpbxcdrs where endtime='0000-00-00 00:00:00' and (userfield='DID DIALOUT' or calltype='DIALOUT') and answertime!='0000-00-00 00:00:00';" 2>/dev/null|awk 'NR==2{print $1}'` #话务量 TRAFFICCOUNT=`mysql -u$USER -p$PASSWORD astercc10 -e "select count(*) from cc10_curpbxcdrs where endtime='0000-00-00 00:00:00' and memo != 'PREDICTIVE CALLER';" 2>/dev/null|awk 'NR==2{print $1}'` #坐席总数 AGENTCOUNT=`mysql -u$USER -p$PASSWORD astercc10 -e "select count(*) from cc10_agents;" 2>/dev/null|awk 'NR==2{print $1}'` #坐席签入数目 AGENTCHECKLOGIN=`mysql -u$USER -p$PASSWORD astercc10 -e "select count(*) from cc10_curagents;" 2>/dev/null|awk 'NR==2{print $1}'` #坐席通话数目 AGENTCALL=`mysql -u$USER -p$PASSWORD astercc10 -e "select count(*) from cc10_curagents where status='ringing' and status='busy';" 2>/dev/null|awk 'NR==2{print $1}'` #坐席呼出数目 AGENTOUTBOUND=`mysql -u$USER -p$PASSWORD astercc10 -e "select count(*) from cc10_curpbxcdrs where endtime='0000-00-00 00:00:00' and (userfield='DID DIALOUT' or calltype='DIALOUT') and agentno!='';" 2>/dev/null|awk 'NR==2{print $1}'` #坐席呼入数目 AGENTINBOUND=`mysql -u$USER -p$PASSWORD astercc10 -e "select count(*) from cc10_curpbxcdrs where endtime='0000-00-00 00:00:00' and calltype='DIALIN' and memo !='PREDICTIVE CALLER' and agentno!='';" 2>/dev/null|awk 'NR==2{print $1}'` #坐席话后数目 AGENTACW=`mysql -u$USER -p$PASSWORD astercc10 -e "select count(*) from cc10_curagents where status='pause' and acw_status!='';" 2>/dev/null|awk 'NR==2{print $1}'` #坐席暂停数目 AGENTPAUSE=`mysql -u$USER -p$PASSWORD astercc10 -e "select count(*) from cc10_curagents where status='pause' and acw_status='';" 2>/dev/null|awk 'NR==2{print $1}'` #小休 AGENTREST=`mysql -u$USER -p$PASSWORD astercc10 -e "select count(*) from cc10_curagents where status='pause' and acw_status='' and pause_reason='rest';" 2>/dev/null|awk 'NR==2{print $1}'` #午休 AGENTLUNCH=`mysql -u$USER -p$PASSWORD astercc10 -e "select count(*) from cc10_curagents where status='pause' and acw_status='' and pause_reason='lunch';" 2>/dev/null|awk 'NR==2{print $1}'` #请假 LEAVE=`mysql -u$USER -p$PASSWORD astercc10 -e "select count(*) from cc10_curagents where status='pause' and acw_status='' and pause_reason='leave';" 2>/dev/null|awk 'NR==2{print $1}'` #会议 MEETING=`mysql -u$USER -p$PASSWORD astercc10 -e "select count(*) from cc10_curagents where status='pause' and acw_status='' and pause_reason='meeting';" 2>/dev/null|awk 'NR==2{print $1}'` #培训 TRAINING=`mysql -u$USER -p$PASSWORD astercc10 -e "select count(*) from cc10_curagents where status='pause' and acw_status='' and pause_reason='training';" 2>/dev/null|awk 'NR==2{print $1}'` #其他 OTHER=`mysql -u$USER -p$PASSWORD astercc10 -e "select count(*) from cc10_curagents where status='pause' and acw_status='' and pause_reason='other';" 2>/dev/null|awk 'NR==2{print $1}'` #排队量 WAIT=`mysql -u$USER -p$PASSWORD astercc10 -e "select count(*) from cc10_curqueuecallers where status='wait';" 2>/dev/null|awk 'NR==2{print $1}'` #channels CHANNELS=`asterisk -rx 'core show channels count' 2>/dev/null|awk 'NR==3{print $1}'` #calls CALLS=`asterisk -rx 'core show calls' 2>/dev/null|awk 'NR==2{print $1}'` if [ $1 = 'INBOUNDCOUNT' ] then echo $INBOUNDCOUNT elif [ $1 = 'OUTBOUNDCOUNT' ] then echo $OUTBOUNDCOUNT elif [ $1 = 'OUTBOUNDRINGING' ] then echo $OUTBOUNDRINGING elif [ $1 = 'OUTBOUNDANSWER' ] then echo $OUTBOUNDANSWER elif [ $1 = 'TRAFFICCOUNT' ] then echo $TRAFFICCOUNT elif [ $1 = 'AGENTCOUNT' ] then echo $AGENTCOUNT elif [ $1 = 'AGENTCHECKLOGIN' ] then echo $AGENTCHECKLOGIN elif [ $1 = 'AGENTCALL' ] then echo $AGENTCALL elif [ $1 = 'AGENTOUTBOUND' ] then echo $AGENTOUTBOUND elif [ $1 = 'AGENTINBOUND' ] then echo $AGENTINBOUND elif [ $1 = 'AGENTACW' ] then echo $AGENTACW elif [ $1 = 'AGENTPAUSE' ] then echo $AGENTPAUSE elif [ $1 = 'AGENTREST' ] then echo $AGENTREST elif [ $1 = 'AGENTLUNCH' ] then echo $AGENTLUNCH elif [ $1 = 'LEAVE' ] then echo $LEAVE elif [ $1 = 'MEETING' ] then echo $MEETING elif [ $1 = 'TRAINING' ] then echo $TRAINING elif [ $1 = 'OTHER' ] then echo $OTHER elif [ $1 = 'WAIT' ] then echo $WAIT elif [ $1 = 'CHANNELS' ] then echo $CHANNELS elif [ $1 = 'CALLS' ] then echo $CALLS else echo "输入变量有误" fi EOF

 

cat > /home/Realtime_report_system.sh << EOF #!/bin/bash CPUFREE=`vmstat |awk 'NR==3{print $15}'` CPULOAD1=`uptime|awk '{print $10}'|awk -F ',' '{print $1}'` CPULOAD5=`uptime|awk '{print $11}'|awk -F ',' '{print $1}'` CPULOAD15=`uptime|awk '{print $12}'|awk -F ',' '{print $1}'` DISKUSAGERATE=`df |grep -e '\/dev\/sda5'|awk '{print $5}'|awk -F '%' '{print $1}'` MEMALL=`free |grep "Mem"|awk '{print $2}'` MENUSE=`free |grep "Mem"|awk '{print $3}'` MEMUSAGERATE=`awk 'BEGIN{printf "%.1f\n",('$MENUSE'/'$MEMALL')*100}'` if [ $1 = 'CPUFREE' ] then echo $CPUFREE elif [ $1 = 'CPULOAD1' ] then echo $CPULOAD1 elif [ $1 = 'CPULOAD5' ] then echo $CPULOAD5 elif [ $1 = 'CPULOAD15' ] then echo $CPULOAD15 elif [ $1 = 'DISKUSAGERATE' ] then echo $DISKUSAGERATE elif [ $1 = 'MEMUSAGERATE' ] then echo $MEMUSAGERATE else echo "输入变量有误" fi EOF

 

zabbix服务器端测试键值
zabbix_get -s 192.168.1.194 -k "astercc.info[AGENTCOUNT]"

返回值 "5" 即坐席数为5  键值创建成功

添加监控项

所有需要监控的键值都在Realtime_report.sh中 替换astercc.info[*]即可

更新后
/etc/init.d/zabbix-agent restart

绿色亮起说明astercc已经被监控

查看最新数据图形显示

 

#解决页面字体乱码问题

下载simkai.ttf

mv simkai.ttf /usr/share/zabbix/fonts/

vim /usr/share/zabbix/include/defines.inc.php

systemctl restart httpd.service  #重启httpd即可解决乱码问题

Leave a Reply

索克维尔旗下产品 · CXMind AI联络中心 · WCC全渠道联络中心