ZABBIX自定义监控

zabbix自定义监控项

 

1.       创建一个简单的监控

 刚开始我们公司需要监控一些业务处理时间,文件的格式是KEYVALUE,文件如下格式:

 

      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):

wKiom1ORyOngmlXnAABkVvhoCiQ284.gif

 

 

 

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上添加就行。

     wKiom1ORzKSiE-1FAAAT_utyENU196.gif

 

 

 

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操作:

wKiom1ORz7eitnRzAABZwR2nBZ4313.gif

wKioL1ORz4vAVumHAABrSvSV5yw413.gif

 这样一个像自动发现磁盘的监控就出现了。

 

 

 

4.       原理介绍。

    这里与以往大致相同,discovery监控是需要接收你机器的json,所以这里你的脚本要把你想要监控的东西全部用json形式返回(也就KEY/VALUE.

  这里执行discovery.sh用来返回json如下

   {

   "data":[

           {"{#IFNAME}":"a"},

               {"{#IFNAME}":"b"}]}

再利用宏变量{#IFNAME}来调用上json里面对应的VALUE传参给“Item prototype,这样一个监控项的KEY/VALUE都全啦。放自动发现过程图(图有点乱,按标号1->2->3....顺序看就行)

 

wKioL1OR0vbw2bPyAACkecZA7WU919.gif

 

 

 

你可能感兴趣的:(监控,自动发现,拓展,Zabbix自定义监控)