zabbix trapper与MySQL查询的结果

时间:2014-08-19 20:27:30

标签: mysql bash zabbix

我搜索从mysql查询的结果创建一个zabbix捕获器。我已经将我的网络部署为unix实用程序arpwatch。 Arpwatch记录所有地址IP,网络的mac。我将记录发送到数据库中,以便将他与dhcp保释金进行比较。

我的脚本代码是:

`#/usr/bin/bash`

 `DB_HOST='192.168.0.13
DB_USER='user'
DB_PASS='test'
DB='arpwatch' `

 `mysql -u "$DB_USER" \ `
   `--host="$DB_HOST" \ `
   `--password="$DB_PASS" \ `
   `--database="$DB" \ `
   `--enable-local-infile \ `
     `--execute="$req1 $req2" `

 `req1=$'LOAD DATA LOCAL INFILE "/var/lib/arpwatch/arp.dat" `
              `INTO TABLE arpwatch `
              `FIELDS ENCLOSED BY " " `
              `LINES TERMINATED BY "\n";' `

 `req2=$"select * from arpwatch where arpwatch.adresse_ip not in(select dhcp.adresse_ip from dhcp);" `

if [ "$req2" = "$req1" ]
then 
STATUS="OK"
else
STATUS="WRONG ADRESS"
fi
zabbix_sender  -k network.status -z 192.168.0.13 -s"device"

我的问题是如何在状态以及何时可能知道错误的地址时触发?

感谢您的帮助

1 个答案:

答案 0 :(得分:0)

概念:

...    
if [ "$req2" = "$req1" ]
then 
STATUS="OK"
else
STATUS=<DIFF $req2 $req1>
fi
zabbix_sender -k network.status -z 192.168.0.13 -s"device" -o $STATUS

=&GT;如果一切正常,脚本将发送OK,否则差异(IP有问题,......)

触发:

{device:network.status.last(0)}#OK

=&GT;触发器将引发事件,如果最后一个值不是'OK' - 将在通知中使用最后一个值(有问题的IP)。

不要忘记:network.status必须是信息类型:text