美文网首页服务器监控程序员
分布式监控系统Zabbix3.2给异常添加邮件报警

分布式监控系统Zabbix3.2给异常添加邮件报警

作者: 欢醉 | 来源:发表于2017-12-06 08:43 被阅读43次

    在前一篇分布式监控系统Zabbix3.2跳坑指南中已安装好服务端和客户端,此处客户端是被监控的服务器,可能有上百台服务器。监控的目的一个是可以查看历史状态,可以对比零晨和工作区间数据的对比,以便后期进行优化指导。还有一个是报警,总不能等到服务器出现异常了才去从头查是什么问题吧。所以这篇主要介绍报警中最基础的一个 配置邮件预警。

    通常zabbix提供了 e-mail、sms、jabber、微信等预警方式,sms等前期需要资金投入那就先否决吧,谁叫老板不给钱。

    安装邮件发送工具mailx

    这里我选择的是mailx,所以的关闭其他的邮件发送工具

    service sendmail stop#关闭

    chkconfig sendmail off#禁止开机启动

    service postfix stop

    chkconfig postfix off

    执行安装mailx的命令:

    yum install mailx

    配置Zabbix服务端外部邮箱

    打开文件vi /etc/mail.rc 如果mail.rc文件没有,就手动创建 内容如下:

    set sendcharsets=iso-8859-1,utf-8setfrom=123456789@163.com

    set smtp=smtp.163.com:25

    set smtp-auth-user=123456789@163.com#认证用户,一般与from保持一致

    set smtp-auth-password=xxx#认证密码,如何开通授权可自行google

    测试邮件是否可以发出

    echo"zabbix test mail"|mail -s"zabbix"yyy@163.com#这时候,邮箱yyy@163.com会收到来自123456789@163.com的测试邮件

    编写发送邮件脚本

    进入下面路径:/usr/local/zabbix/alertscripts 创建sendmail.sh文件,内容如下

    echo "$3" | mail -s "$2" "$1"

    上面的这个三个参数是接收从web页面中传递过来的,$1:收件人邮箱地址;$2:邮件标题;$3:邮件内容

    为什么我们会在这个路径下面创建这个脚本呢,这是在我们的zabbix_server.conf文件中配置的

    AlertScriptsPath=/usr/local/zabbix/alertscripts

    所以你不想将这个脚本放在这个目录下面,需要修改服务端的配置文件中的AlertScriptsPath的值。

    配置web页面

    创建媒体类型

    点击创建媒体类型

    添加以下3个参数,分别对应sendmail.sh脚本需要的3个参数:收件人地址、主题、详细内容

    {ALERT.SENDTO}

    {ALERT.SUBJECT}

    {ALERT.MESSAGE}

    如果在3.0中不添加这三个参数会报错,因为在3.0以后zabbix允许自定义参数了,所以不会默认传递参数,在2.0的时候会默认传递三个参数,所以在3.0如果不写这三个参数会报错。

    给用户添加报警媒介

    在这以Admin用户为例 管理—》用户—》点击Admin

    点击Admin

    添加接收人

    添加动作

    填写动作选项

    此处添加以一般严重 状态的信息都报警。

    除了自己填写一个名称以外,其余的都默认就好了。当然也可以修改成中文:参考如下

    默认接收人:

    故障{TRIGGER.STATUS},服务器:{HOSTNAME1}发生:{TRIGGER.NAME}故障!

    默认信息:

    告警主机:{HOSTNAME1}

    告警时间:{EVENT.DATE}{EVENT.TIME}

    告警等级:{TRIGGER.SEVERITY}

    告警信息: {TRIGGER.NAME}

    告警项目:{TRIGGER.KEY1}

    问题详情:{ITEM.NAME}:{ITEM.VALUE}

    当前状态:{TRIGGER.STATUS}:{ITEM.VALUE1}

    事件ID:{EVENT.ID}

    恢复信息:打钩

    恢复主题:

    恢复{TRIGGER.STATUS},服务器:{HOSTNAME1}: {TRIGGER.NAME}已恢复!

    恢复信息:

    告警主机:{HOSTNAME1}

    恢复时间:{EVENT.RECOVERY.DATE} {EVENT.RECOVERY.TIME}

    #这里注意了,很多教程都是复制故障通知消息,这里时间需要设置为EVENT.RECOVERY.DATE 才会发送正确的故障恢复时间,否则会发送故障发生时的时间。

    告警时间:{EVENT.DATE}{EVENT.TIME}

    告警等级:{TRIGGER.SEVERITY}

    告警信息: {TRIGGER.NAME}

    告警项目:{TRIGGER.KEY1}

    问题详情:{ITEM.NAME}:{ITEM.VALUE}

    当前状态:{TRIGGER.STATUS}:{ITEM.VALUE1}

    事件ID:{EVENT.ID}

    已启用:打钩

    填写条件选项

    解释:

    默认的步骤是1-1,也即是从1开始到1结束。一旦故障发生,就是执行sendEmail.sh脚本发生报警邮件给Admin用户和zabbix administrator组。

    假如故障持续了1个小时,它也只发送一次。如果改成1-0,0是表示不限制.无限发送 间隔就是默认持续时间60秒。那么一个小时,就会发送60封邮件。

    到这我们的邮件报警配置就完成了,这是只要我们设置的触发器触发,就会自动给我发送报警邮件。

    测试邮件报警

    我将zabbix自带的模板中的对可用内存的监控中的触发器的临界值改为大于0,进入模板列表

    点击修改,改成可用内存小于2g就报警,这样就容易触发。

    保存以后 将收到一份报警邮件 内容如下:

    在此就配好了邮件发送。

    补坑注意:

    在邮件发送时,按上面的sendmail.sh中的写可能会出现zabbix邮件内容为附件和zabbix图中出现中文乱码问题。

    下面是参考园友的解决方法:

    安装zabbix之后,设置邮件脚本报警的时候,发送的报警内容变成了tcmime.1278.1278.1724.bin或ATT00001.bin。

    安装dos2unix:

    yum -y install mailx dos2unix //安装mailx工具和dos2unix转换工具

    以下是脚本内容

    打开 /usr/local/zabbix/alertscripts/sendmail.sh

    替换内容

    #!/bin/bashexport LANG=zh_CN.UTF-8file=/tmp/zabbix_mail.txt

    echo"$3">$file

    dos2unix-k $file/bin/mailx -s"$2"$1 < $file

    相关文章

      网友评论

        本文标题:分布式监控系统Zabbix3.2给异常添加邮件报警

        本文链接:https://www.haomeiwen.com/subject/dtiqixtx.html