ZABBIX相关文档……
1 篇帖子 分页: 1 / 1
帖子oulin_hl » 2013年 12月 11日 11:37 星期三
boss要求每天晚上九点发送一条短信,至各部门总监的手机上,总结一天中所有服务器的错误统计,接到任务后,我分析了一下,通过zabbix的自带功能不太好实现,于是打算通过编写shell脚本来实现,以下是我线上的脚本,经过了二次修改后,已修复脚本误报Bug。
脚本简要说明:
通过sql语句,查询出events表中一天的所有警报,通过triggers表将警报分类,然后按分类放入相应的数组,最后通过公司的短信接口,发出统计短信。
SHELL脚本如下:
代码: 全选
#!/bin/sh
### ## 版本:V0.2 2010-10-21 22:28  David.zhu
#------------------------------
## array1 普通信息
## array2 警告信息
## array3 一般问题
## array4 严重问题
## array5  灾难
#-----------------------------
now=`date +%s`
fix=`expr $now - 86400`
myconn="mysql -h 192.168.0.10 -uzabbix -pzabbix zabbix"
result=`${myconn} -e "SELECT objectid FROM events WHERE value=1 AND objectid >10000 AND clock>=${fix} AND clock<=${now}  ORDER BY clock DESC LIMIT 100" | grep -v "objectid"`
i=0
for trid in ${result};do
PRO=`${myconn} -e "SELECT priority FROM triggers t WHERE ((t.triggerid  BETWEEN 000000000000000 AND 099999999999999)) AND  (t.triggerid IN(${trid}))"| grep -v priority`
case $PRO in
                1)  array1[$i]=${PRO};;
                2)  array2[$i]=${PRO};;
                3)  array3[$i]=${PRO};;
                4)  array4[$i]=${PRO};;
                5)  array5[$i]=${PRO};;
                *)  error[$i]=${PRO};;
        esac
i=`expr $i + 1`
done

message="服务器监控总结---灾难问题:${#array5[@]}个|严重问题:${#array4[@]}个|一般问题:${#array3[@]}个|警告信息:${#array2[@]}个|普通信息:${#array1[@]}个"
mobile=('138*****' '138*****' '138*****' '138*****')
for ((j=0;j<${#mobile[@]};j++));do
number=${mobile[${j}]}
/usr/local/zabbix/bin/sendsms_pro.php ${number} notitle ${message} | 2>&1
done


注:本脚本在zabbix 1.8.3版本上测试通过,其它版本未做过测试,sendsms_pro.php为我司的短信接口,如没有接口,可以使用linux fetion来实现
转载: http://bbs.linuxtone.org/thread-9402-1-1.html
---------
代码: 全选
ZABBIX中文论坛
欢迎热爱zabbix的网友们,在此我们可以一起探讨、交流、沟通zabbix的所有操作与问题!
1 篇帖子 分页: 1 / 1

登录

在线用户

正在浏览此版面的用户:没有注册用户 和 1 位游客