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

  在前一篇 分布式监控系统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-8
set from=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/bash

export LANG=zh_CN.UTF-8

file=/tmp/zabbix_mail.txt
echo "$3" > $file
dos2unix -k $file
/bin/mailx -s "$2" $1 < $file

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏木头编程 - moTzxx

PHP 连接 oracle数据库(可远程)的测试操作

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u011415782/article/de...

5421
来自专栏安富莱嵌入式技术分享

【安富莱】【RL-TCPnet网络教程】第7章 RL-TCPnet网络协议栈移植(裸机)

本章教程为大家讲解RL-TCPnet网络协议栈的裸机移植方式,学习了上个章节讲解的底层驱动接口函数之后,移植就比较容易了,主要是添加库文件、配置文件和驱动文件即...

1143
来自专栏北京马哥教育

DNS从入门到管理(一)

DNS概述 DNS(Domain Name System,域名系统),域名和IP地址相互映射的一个分布式数据库,通过主机名,最终得到该主机名对应的IP地址的过程...

6586
来自专栏跟着阿笨一起玩NET

Log4Net日志记录两种方式

     log4net库是Apache log4j框架在Microsoft .NET平台的实现,是一个帮助程序员将日志信息输出到各种目标(控制台、文件、数据库...

3632
来自专栏PHP在线

Apache的httpd.conf文件配置详解

Apache的基本设置主要交由httpd.conf来设定管理,我们要修改Apache的相关设定,主要还是通过修改httpd.cong来实现。下面让我们来看看ht...

5408
来自专栏bboysoul

部署包安装zabbix

昨天给树莓派安装上了一个温度传感器,今天想使用zabbix去统计监控树莓派上温度传感器的数据,所以我就开始在我的一台不怎么用的阿里云服务器上安装zabbix了 ...

1582
来自专栏数据和云

MongoDB 初体验:存储引擎 MMAPv1 与高内存消耗及升级迁移

当我对公司的一个内部系统性能无可忍受时,意外发现在这个内存仅为 32G 的服务器上,运行着一个 MongoDB 数据库,其主进程 mongod 占用了 30.7...

2417
来自专栏大数据和云计算技术

HBase框架基础(一)

HBase的基础框架,将分成几个章节对HBase进行描述,不当之处还望大家批评指正。下面是了解HBase基础架构的第一部分。

1934
来自专栏自由而无用的灵魂的碎碎念

使用yum升级Fedora系统中的firefox为最新发布版本

安装fedora后,发现默认的升级只能升级当前firefox版本为最新更新版本,不会跨版本升级,经过搜索,如下方法最简洁有效,特此分享:

962
来自专栏杨建荣的学习笔记

MySQL访问受限的问题分析

今天帮同事看了一个MySQL的连接问题,蛮有意思,有两个用户,一个用户连接正常,另外一个连接抛错。 开发同学提供的错误日志如下: {resin-33} jav...

3839

扫码关注云+社区

领取腾讯云代金券