zabbix自定义监控项
1. 创建一个简单的监控
刚开始我们公司需要监控一些业务处理时间,文件的格式是KEY和VALUE,文件如下格式:
cat /tmp/data.txt
a = 1
b = 2
内容很少所以我直接搞起:
vim /etc/zabbix/zabbix_agentd.conf.d/report
UserParameter=report.a, cat /tmp/data.txt|awk “/a/{print $3}”
UserParameter=report.b, cat /tmp/data.txt|awk “/b/{print $3}”
上面的意思就是“逗号”右边的输出为VALUE,都好左边的“report.a”为KEY。
然后WEB直接上图(1):
1. 创建一个可拓展的监控项。
上面的一个监控大家看见了,很简单。但是随着业务的增长我们文件数据条目又出现了间断性的增长。
cat data.txt
a = 1
b = 0
c = 3
d = 7
e = 9
由于我们的这台业务的服务器安全级别高,不希望经常登录。所以我们对监控项做出了相应改变来适应需求。
cat /etc/zabbix/zabbix_agentd.conf.d/report
UserParameter=report.[*], cat /tmp/data.txt|grep $1|cut �Cd “ ” �Cf 3
这里的`report.[*]`括号里面的星代表任意字符,而“$1”也就是下面传进来的"a".
也就是“report.[*]”像个***,模拟report.[a],report[b]等等,以后就不用太直接去机器上修改配置了,每次知道新增什么KEY,就直接在web上添加就行。
3.zabbix自动发现监控
随着公司的发展这个业务文件开始持续增加数据,原来在dashboard上添加都变成对时间的浪费了,我们又做出新的修改。
vim /etc/zabbix/zabbix_agentd.conf.d/report
UserParameter=report.[*], cat /tmp/data.txt|grep $1|cut �Cd “ ” �Cf 3
UserParameter=report.discovery, /usr/local/ discovery.sh
cat /usr/local/ discovery.sh #!/bin/bash #filename: discovery.sh #author: baishaohua MY_KEY=(`cat /tmp/data.txt |grep "$1"|awk '{print $1}' >/dev/null 2>&1`) len=${#MY_KEY[@]} printf "{\n" printf '\t'"\"data\":[" for ((i=0;i<$length;i++)) do printf '\n\t\t{' printf "\"{#IFNAME}\":\"${MY_KEY[$i]}\"}" if [ $i -lt $[$len-1] ];then printf ',' fi done printf "]}\n"
放图展示dashboard操作:
这样一个像自动发现磁盘的监控就出现了。
4. 原理介绍。
这里与以往大致相同,discovery监控是需要接收你机器的json,所以这里你的脚本要把你想要监控的东西全部用json形式返回(也就KEY/VALUE).
这里执行discovery.sh用来返回json如下
{
"data":[
{"{#IFNAME}":"a"},
{"{#IFNAME}":"b"}]}
再利用宏变量{#IFNAME}来调用上json里面对应的VALUE传参给“Item prototype”,这样一个监控项的KEY/VALUE都全啦。放自动发现过程图(图有点乱,按标号1->2->3....顺序看就行)