您的位置:首页 > 运维架构

利用zabbix监控网宿cdn的流量

2015-11-27 11:40 387 查看
【背景】CDN一般是按流量收费的,为了能及时发现流量问题,尽快处理减少不必要的损失,需要对流量进行实时的监控,设定阈值添加报警。

【方法】网宿CDN带宽查询接口是一套提供给客户的用于辅助网宿客户服务平台的API接口。借由此接口,客户可实现实时频道带宽查询,并可进行二次开发。
编写自定义脚本放到zabbix-agent的/etc/zabbix/scripts目录下:

chmod + x  cdn_bwcx.sh #添加可执行权限
cat cdn_bwcx.sh
#!/bin/bash
#encoding=utf-8
endtime_ori=`awk 'BEGIN{print strftime("%Y-%m-%d %H:%M",systime())}'`
starttime_ori=`awk 'BEGIN{print strftime("%Y-%m-%d %H:%M",(systime()-540))}'`
function encodeurl()
{
encoded_str=`echo "$*" | awk 'BEGIN {
split ("1 2 3 4 5 6 7 8 9 A B C D E F", hextab, " ")
hextab [0] = 0
for (i=1; i<=255; ++i) {
ord [ sprintf ("%c", i) "" ] = i + 0
}
}
{
encoded = ""
for (i=1; i<=length($0); ++i) {
c = substr ($0, i, 1)
if ( c ~ /[a-zA-Z0-9.-]/ ) {
encoded = encoded c             # safe character
} else if ( c == " " ) {
encoded = encoded "+"   # special handling
} else {
# unsafe character, encode it as a two-digit hex-number
lo = ord [c] % 16
hi = int (ord [c] / 16);
encoded = encoded "%" hextab [hi] hextab [lo]
}
}
print encoded
}' 2>/dev/null`
}

encodeurl $starttime_ori
starttime=$encoded_str
encodeurl $endtime_ori
endtime=$encoded_str
curl "https://myview.chinanetcenter.com/api/bandwidth-channel.action?u=xxxxx&p=xxxxxxxxxxxxxxxx&startdate=$starttime&enddate=$endtime&isExactMatch=false&resultType=1" >/etc/zabbix/scripts/qsmy.txt   #u和p修改为CDN提供的你公司的API用户名密码

[root@zabbix_server scripts]# chown zabbix.zabbix qsmy.txt #修改储存数据的txt的属主属组为zabbix

编辑zabbix客户端的配置添加自定义参数
[root@zabbix_server scripts]# vim /etc/zabbix/zabbix_agentd.conf
UserParameter=cdn.bandwidth,grep -w 'bandwidth time' /etc/zabbix/scripts/qsmy.txt |awk -F '[><]' '{print $3}'|head -1    #添加到配置文件的最后

[root@zabbix_server scripts]# /etc/init.d/zabbix_agentd restart #重启zabbix客户端

添加定时任务,定时获取cdn的流量值
[root@zabbix_server scripts]# crontab -e
*/1 * * * * /bin/sh /etc/zabbix/scripts/cdn_bwcx.sh
至此,客户端数据的获取完成了。

然后在zabbix服务端添加Item,如下图:



添加grap,如下图:


设置完成,效果如下:



大家可根据自己的需求设定action,超过阈值立即报警!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  zabbix cdn