研究与使用zabbix快1年了,其他功能都很多,最令我头痛的是如果机房的网络出现波动或者代理服务器出现问题,那么就会出现大量的服务器nodata报警,由于我采用邮件发送报警,邮件开通短信接收功能,基本出现大量nodata的报警就会造成手机死机(米3手机),为了解决这个问题测试过各自办法、

1、设置trigger的依赖,如果使用多个zabbix对应多个proxy的话,配置很麻烦,不容易修改,所以放弃;

2、使用自定义脚本报警,然后脚本里进行分析与处理,目前采用此方法。

下面是使用第2种方法后,出现nodata问题的报警截图:

下面是使用第2种方法后,nodata问题恢复后报警截图:

如何实现:

一、服务端(zabbix web地址)

1、是自定义脚本发送报警

选择“管理”==》“示警媒体类型”==》“创建示警媒体类型”

其中“脚本名称”里是使用的发送脚本名称,这个脚本的路径可以在客户端的zabbix_server.conf里定义,具体如何定义参考下面客户端设置。

2、在动作(action)里做设置

选择“配置”==》“动作”==》“创建动作”,”事件源“选择”触发器“。

然后再选择”操作“==》“仅送到”==“E-mail”,这个E-mail是刚才“示警媒体”里定义的名字。

二、客户端操作

1、修改zabbix_server.conf

AlertScriptsPath=/usr/local/zabbix/bin

修改脚本的路径

2、把脚本放到/usr/local/zabbix/bin目录,并起名为zabbix_send_mail.sh,给与755权限,授予zabbix组与用户权限。

[root@ip-10-10-13-8 bin]# cat /usr/local/zabbix/bin/zabbix_send_mail.sh
#!/bin/bash
. /etc/profile
problem_cmd="^PROBLEM.*system time out"
recovery_cmd="^RECOVERY.*system time out"
#echo "$3"|/bin/mail -s "$2" $1
if [ `echo "$2"|egrep -E "$problem_cmd"|wc -l` -gt 0 ];then
echo "echo \"$3\"|/bin/mail -s \"$2\" $1" >>/tmp/zabbix_problem_mail.sh
elif [ `echo "$2"|egrep -E "$recovery_cmd"|wc -l` -gt 0 ];then
echo "echo \"$3\"|/bin/mail -s \"$2\" $1" >>/tmp/zabbix_recovery_mail.sh
else
echo "$3"|/bin/mail -s "$2" $1
fi

目前我这里设置如果发送的信息里有包含system time out内容的就重新定向给tmp目录的一个文件里(我这里的time out其实就是nodata,我这里规定nodate信息为system time out)

3、设置nodata报警发送

[root@ip-10-10-13-8 bin]# cat /usr/local/zabbix/bin/cront_send_mail.sh
#!/bin/bash
. /etc/profile
problem_file='/tmp/zabbix_problem_mail.sh'
recovery_file='/tmp/zabbix_recovery_mail.sh'
if [ ! -e $problem_file ];thentouch $problem_filechown zabbix:zabbix $problem_file
fi
if [ ! -e $recovery_file ];thentouch $recovery_filechown zabbix:zabbix $recovery_file
fi
alert_value=15
problem_value=`grep -c echo $problem_file`
recovery_value=`grep -c echo $recovery_file`
time=`date +%Y-%m-%d_%T`
contact='244979152@qq.com'
if [ $problem_value -lt $alert_value ];then/bin/bash $problem_filerm -rf $problem_filerm -rf $problem_file-$alert_value
elif [ $problem_value -gt $alert_value ] && [ ! -e $problem_file-$alert_value ];thenecho "时间:$time 超时次数:$problem_value!"|/bin/mail -s "问题:灾难报警!机房出现大量超时报警!!!" $contactrm -rf $problem_filetouch $problem_file-$alert_value
elif [ $problem_value -gt $alert_value ] && [ -e $problem_file-$alert_value ];thenrm -rf $problem_filerm -rf $problem_file-$alert_value
fi
if [ `grep -c echo $recovery_file` -lt $alert_value ];then/bin/bash $recovery_filerm -rf $recovery_filerm -rf $recovery_file-$alert_valuerm -rf $problem_file-$alert_value
elif [ `grep -c echo $recovery_file` -gt $alert_value ] && [ ! -e $recovery_file-$alert_value ];thenecho "时间:$time 超时次数:$recovery_value!"|/bin/mail -s "恢复:灾难报警!机房出现大量超时报警!!!" $contactrm -rf $recovery_filerm -rf $problem_file-$alert_valuetouch $recovery_file-$alert_value
elif [ `grep -c echo $recovery_file` -gt $alert_value ] && [ -e $recovery_file-$alert_value ];thenrm -rf $recovery_filerm -rf $recovery_file-$alert_valuerm -rf $problem_file-$alert_value
fi

我这里定义如果超过15次的system time out邮件,就只发送给我设置的244979152@qq.com,而且仅发送一封。

4、crontab设置

*/2 * * * * /bin/bash /usr/local/zabbix/bin/cront_send_mail.sh

这样就实现了以下需求:

1、如果有大量的nodata报警,仅发送一封邮件;

2、如果nodata报警回复,则也只发送一封邮件;

3、设置简单,不需要修改trigger与action、模板。

目前我这里测试的如果一个proxy挂了,出现大量proxy的主机nodata报警,也仅发送一封给我设置的报警邮箱,其他action里设置报警联系人不会受到。

转载于:https://blog.51cto.com/dl528888/1400554

zabbix企业应用之解决大量的nodata报警通知相关推荐

  1. zabbix企业应用之自动语音报警平台

    我从2013年5月开始研究zabbix,研究的版本是2.0.6,到现在也马上2年了,目前生产版本还是2.0.6. 现在我公司1000+的服务器无论是物理机还是vmware.openstack的云主机. ...

  2. Zabbix企业微信告警最新版

    2019独角兽企业重金招聘Python工程师标准>>> Zabbix企业微信告警最新版 2017年11月21日 15:38:33 阅读数:1481 Zabbix企业微信告警最新版 最 ...

  3. Linux Zabbix——企业监控基于钉钉、企业微信实现自动化报警

    zabbix基于企业微信.钉钉群聊机器人实现自动化报警 在企业中,我们使用zabbix去进行监控,需要时刻关注应用服务的运行情况,这就少不了实时报警,而使用即时通讯软件报警相对就很方便. 监控环境准备 ...

  4. Zabbix企业应用之服务器硬件信息监控

    之前介绍的Zabbix监控都是属于监控服务方面,现在介绍一下Zabbix监控服务器硬件信息的. 由于我公司服务器都是使用Dell(我公司是手游方面,服务器全部是Dell),服务器型号有r410.r42 ...

  5. Zabbix配置微信报警通知

    Zabbix告警可以通过邮件,微信,电话,短信等方式发送告警消息. 电话和短信需要向运营商购买相应的网关,需要付费: 邮件和微信是免费的,可以根据业务需要选择相应的告警模式 Zabbix版本:3.2 ...

  6. 腾讯企业 html邮件模板,用腾讯企业邮做为邮件服务器来发送通知邮件的操作步骤...

    之前写过一篇"设置QQ邮箱为发送邮件服务器的详细带图步骤",但是用QQ邮箱做发件服务还是不那么方便.天兴工作室自己用的是腾讯企业邮,设置起来很方面.唯一的限制就是得有自己的域名,再 ...

  7. [Zabbix] 怎样实现邮件报警通知以及免费短信报警通知

     前提条件: (1) zabbixserver端已经安装成功而且执行. (2) zabbixclient已经成功建立而且执行. 1 下载而且安装msmtp软件 Wget http://sourcefo ...

  8. 自动化监控--zabbix中的邮件报警通知详解

    前言 在自动化监控–zabbix安装和配置详解我们已经完成了zabbix监控的安装部署,今天我们就在它的基础上来实现一下自动监控的邮件报警通知. 添加一台主机 首先,添加一台host 只需填写Host ...

  9. Zabbix 如何实现邮件报警通知以及免费短信报警通知

     前提条件: (1) zabbix服务器端已经成功安装并且运行. (2) zabbix客户端已经成功建立并且运行. 1 下载并且安装msmtp软件 Wget http://sourceforge.ne ...

  10. zabbix实现电话、短信、邮件报警

    该报警方式提前说明: (1)该方式可以实现zabbix免费电话报警以及微信.短信.邮件报警,但有数量限制.详见如下: 如数量不能满足需要以及人员需要,可以考虑购买收费版. (2)毕竟是免费版,电话通知 ...

最新文章

  1. 解决nginx负载均衡的session共享问题
  2. 知识图谱从哪儿来?实体关系抽取的现状和未来
  3. [物理学与PDEs]第2章习题参考解答
  4. 艿艿连肝了几个周末,写了一篇贼长的 Spring 响应式 Web 框架 WebFlux!市面第二完整~
  5. 新浪微博Anroid开发(二)
  6. WebGL——osg框架学习一
  7. web.py 十分钟创建简易博客
  8. postgresql定义访问ip与用户_PostgreSQL 设置允许访问IP的操作
  9. android学习笔记---52_发送状态栏通知
  10. IT运维人员该学习哪些技术
  11. preg_match 参数获取两个_「死磕 Spring」—– IOC 之 获取 Document 对象
  12. 23.MySQL 函数
  13. plusgantt的项目管理系统实战开发最全课程
  14. Windows服务器远程桌面访问(两种方法)
  15. Matlab条件语句
  16. 云解析DNS使用教程
  17. 谷歌火狐浏览器被360浏览器劫持的解决办法
  18. 在rails中pluck和select和collect区别
  19. html网页屏保,屏幕保护是什么
  20. Laravel框架-迁移文件

热门文章

  1. 投资、理财、炒股记事
  2. pytorch 方法笔记
  3. 阻止滑动事件_重温DOM事件流,捕获、冒泡、useCapture、passive
  4. Linux环形工作队列KFIFO的使用说明
  5. P5154 数列游戏(区间dp)
  6. Chrome上网问题解决记录
  7. 【学习笔记】深入理解Linux内核第三版 ——第二章 内存寻址
  8. 好用的eclipse快捷键
  9. shell正则表与文本工具sed
  10. Mysql5.7中文乱码