vi zabbix_report.sh
#!/bin/sh
#sword make 160518
#------------------------------
## array1 普通信息
## array2 警告信息
## array3 一般问题
## array4 严重问题
## array5 灾难
#-----------------------------
#set -x
now=`date +%s`
fix=`expr $now - 86400`
now1=`date -d @${now} +"%F %r"`
fix1=`date -d @${fix} +"%F %r"`
echo $now $now1
echo $fix $fix1
myconn="mysql -uzabbix -pmysql,123 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"`
result=`${myconn} -e "SELECT objectid FROM events WHERE source=0 and value=1 AND objectid >10000 AND clock>=${fix} AND clock<=${now} ORDER BY clock DESC" | grep -v "objectid"`
resultack=`${myconn} -e "SELECT count(clock) FROM events WHERE value=1 AND objectid >10000 AND clock>=${fix} AND clock<=${now} AND acknowledged=1"| grep -v "count"`
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="从昨日16:30到今日16:30截止:\n监控总结---灾难问题:${#array5[@]}个|严重问题:${#array4[@]}个|一般问题:${#array3[@]}个|警告信息:${#array2[@]}个|普通信息:${#array1[@]}个|已经确认事件:${resultack}"
message="监控总结从${fix1}到${now1}截止如下:\n有人已经确认事件:${resultack}个\n灾难问题:${#array5[@]}个\n严重问题:${#array4[@]}个\n一般问题:${#array3[@]}个\n警告信息:${#array2[@]}个\n普通信息:${#array1[@]}个\n"
#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
echo $message
#-------------
time1=`date +%F`
export zabbixemailto=xxx@xxx.xxx,xxx@xxx.xxx
export zabbixsubject=JLR监控总结${time1}
export zabbixbody=${message}
export smtpserver=zabbix@company.com
export smtplogin=zabbix@company.com
export smtppass=
/usr/bin/printf "%b" "$zabbixbody" | mailx -s "$zabbixsubject" -r $smtpserver $zabbixemailto
crontab -e 加入计划任务
0 8 * * * /usr/bin/sh /opt/zabbix_report.sh &>/dev/null
本文介绍了一个用于Zabbix监控系统的Shell脚本,该脚本自动化收集并报告过去24小时内不同级别警报的数量,包括已确认事件,并通过邮件发送报告。脚本通过查询Zabbix数据库获取事件信息,按优先级分类,最后使用邮件服务发送汇总信息。
2215

被折叠的 条评论
为什么被折叠?



