1 说明
为了监控hls直播是否有中断,每台设备上面有很多频道,因此定义了模板上面的自动发现来监控hls的直播,此文章面向对zabbix有一丁点了解的朋友,思路:
1、监控m3u8的md5是否变化;
2、监控m3u8的下载时间;
2 写发现和采集脚本
脚本怎么写,这里不赘述,这不是这篇文章的范畴,这里只体现以下输出结果;此脚本要存放在zabbix_agentd上面
脚本里面的三个参数后面在zabbix赋值调用的时候会使用:这输出的json格式的内容,频道{#CHANNEL}就是自动发现的时候要引用的名称,后面的值就是频道;
[root@hls-stream script]# ./haohan.ott.sh SRS channelget get
{
“data”:[
{“{#CHANNEL}”:”ch156_10240043″ },
{“{#CHANNEL}”:”ch163_10240159″ },
{“{#CHANNEL}”:”ch170_10240076″ },
{“{#CHANNEL}”:”ch177_10240037″ },
{“{#CHANNEL}”:”ch184_10240004″ },
{“{#CHANNEL}”:”ch191_10240065″ },
{“{#CHANNEL}”:”ch198_10240087″ },
{“{#CHANNEL}”:”ch205_10240091″ },
{“{#CHANNEL}”:”ch212_10240112″ },
{“{#CHANNEL}”:”ch219_10240103″ },
{“{#CHANNEL}”:”ch226_10240149″ },
{“{#CHANNEL}”:”ch233_10240156″ }
]
}
用于zabbix采集直播的m3u8的md5值,后续在zabbix上面做触发告警,如果两次采集的m3u8的md5值相同,那么代表直播发布中断;
[root@hls-stream script]# ./haohan.ott.sh SRS channelmd5
ch156_10240043665488c0de4371217655988757a35166
这里因为监控的是本机,为了方便,将时间单位改成了ms,这样更能够直观的体现出m3u8的下载时间,后续用这个值定义下载时间告警,如果超过5s的话,那必然会带来直播卡顿;
[root@hls-stream script]# ./haohan.ott.sh SRS channeldowntime ch156_10240043
1
3 配置zabbix agentd调用脚本
在zabbix的配置文件里面定义UserParameter调用脚本,在zabbix_agentd的conf/zabbix_agentd目录下建ott的UserParameter配置文件userparameter_ott.conf,然后加入如下内容:
UserParameter=haohan.ott[*],/usr/local/zabbix/script/haohan.ott.sh $1 $2 $3
也就是定义好脚本的引用路径,haohan.ott[*]里面的“*”号代表到时候zabbixserver调用的时候的参数,以“,”号分割作为参数会赋值给后面的$1,$2,$3;
重启zabbix的agentd;
4 验证配置是否生效
这里在zabbix的server上面进行验证即可;
[root@monitor ~]# zabbix_get -s ip地址 -k haohan.ott[SRS,channelget,get]
{
“data”:[
{“{#CHANNEL}”:”ch139_10240005″ },
{“{#CHANNEL}”:”ch138_10240003″ },
{“{#CHANNEL}”:”ch136_10240001″ },
{“{#CHANNEL}”:”ch137_10240002″ },
{“{#CHANNEL}”:”ch150_10240125″ },
{“{#CHANNEL}”:”ch149_10240086″ },
{“{#CHANNEL}”:”ch148_10240085″ },
{“{#CHANNEL}”:”ch147_10240021″ },
{“{#CHANNEL}”:”ch146_10240017″ },
{“{#CHANNEL}”:”ch145_10240016″ },
{“{#CHANNEL}”:”ch143_10240014″ },
{“{#CHANNEL}”:”ch142_10240009″ },
{“{#CHANNEL}”:”ch140_10240006″ },
{“{#CHANNEL}”:”ch141_10240007″ },
{“{#CHANNEL}”:”ch144_10240015″ }
]
}
这样主要是为了发现出来频道,用于下一步监控用,这时候的自动发现变量就是{#CHANNEL}
[root@monitor ~]# zabbix_get -s ip地址 -k haohan.ott[SRS,channelmd5,ch139_10240005]
f50fb1247e16971b030ded62d05447ad
[root@monitor ~]# zabbix_get -s ip地址 -k haohan.ott[SRS,channeldowntime,ch139_10240005]
5
5 配置zabbix发现模板
我这里是定义的模板,当然也可以定义到主机上面;
选择对应的模板=》探索规则=》创建发现规则,然后按照如下方式设置,类型选择:zabbix代理模式,键值写自定义的频道发现规则的键值;
截图见文尾下载里面的word文档
选择对应的模板=》探索规则=》选择对应的发现规则里面的“项目原型”=》创建监控项原型
截图见文尾下载里面的word文档
md5值属于字符,因此选择的数据类型要选文字;类型还是选zabbix代理模式;
截图见文尾下载里面的word文档
数据类型选数字;类型还是选zabbix代理模式;
截图见文尾下载里面的word文档
配置完这一步就已经能够进行数据采集了,但是要实现告警的话还得创建触发器;
选择对应的模板=》探索规则=》选择对应的发现规则里面的“触发器类型”=》创建触发器原型
截图见文尾下载里面的word文档
对比m3u8的md5值变化,如果前一次采集跟后一次采集的m3u8值相同,那就意味着直播发布中断了;
截图见文尾下载里面的word文档
如果采集到的m3u8的下载时间超过5000ms(5s),那么比如就引起直播观看卡顿了;
做完这些,直播监控告警就有了,如果要追溯下载时间的历史情况,可以从最新数据里面查看,或者做自动发现规则里面作图;
截图见文尾下载里面的word文档
选择对应的模板=》探索规则=》选择对应的发现规则里面的“图形原型”=》创建图形原型
截图见文尾下载里面的word文档
6 应用发现规则
将此模板应用到对应的服务器上就ok了,然后就观察采集的数据结果和接收告警了;
采集的数据和直播的时间历史图见文尾下载里面的word文档
本文下载地址:http://download.zhoufengjie.cn/document/software/monitor/zabbixautofind-20150113.docx