zabbix邮箱报警设置
Zabbix 邮件报警
前期准备工作:
电脑登录网易邮箱配置,把自己的授权码看一下,并写入配置文件
server端安装配置邮件服务器
[root@master ~]# yum -y install mailx
[root@master ~]# mailx -V
12.5 7/5/10
配置公网邮箱信息:发邮件:
[root@master ~]# vim /etc/mail.rc #追加以下内容
set from=cyylog@163.com #(邮箱地址)
set smtp=smtp.163.com #smtp服务器) 发邮件服务器 ---163默认
set smtp-auth-user=cyylog@163.com #(用户名)
set smtp-auth-password=Password #(邮箱密码)授权之后的密码
set smtp-auth=login #默认
###### 测试
[root@master ~]# echo "test mail from zabbix.server.com" |mail -s "test mail" cyylog@163.com
然后163邮箱就会收到信息
报警媒体的配置:
首先需要配置 Zabbix 的邮件功能。 点击 管理->报警媒介类型->创建媒体类型
然后在页面中填入你的报警媒介类型信息,例如下图所示:
注:脚本名称任意,存放于/usr/lib/zabbix/alertscripts
(生产上的测试服放这:s /usr/local/zabbix/share/zabbix/alertscripts)
名称:sendmail //名称任意 类型:脚本 脚本名称:sendmail.sh 脚本参数: //一定要写,否则可能发送不成功 {ALERT.SENDTO} //照填,收件人变量 {ALERT.SUBJECT} //照填,邮件主题变量,变量值来源于‘动作’中的‘默认接收人’ {ALERT.MESSAGE} //照填,邮件正文变量,变量值来源于‘动作’中的‘默认信息’
配置完成后,不要忘记点击存档,保存你的配置。
修改zabbix服务端配置文件&编写脚本:
# 查看指定脚本的存储路径:
[root@master ~]# vim /etc/zabbix/zabbix_server.conf
AlertScriptsPath=/usr/lib/zabbix/alertscripts
编写邮件脚本:
[root@master alertscripts]# cd /usr/lib/zabbix/alertscripts
[root@master alertscripts]# vim sendmail.sh
#!/bin/sh
#export.UTF-8 -----字符集可以删除掉
#send mail
messages=echo $3 | tr 'rn' 'n'
subject=echo $2 | tr 'rn' 'n'
echo "${messages}" | mail -s "${subject}" $1 >>/tmp/mailx.log 2>&1
修改权限:
[root@master alertscripts]# chmod u+x sendmail.sh && chown zabbix.zabbix sendmail.sh
创建的脚本名称要和定义的脚本名称一样
修改admin用户的报警媒介: 用户默认是没有设置报警媒介的,设置后就可以接收报警消息了。
触发器的配置:
接下来,点击配置->主机
我们给 agent-19 这台主机增加一个触发器。点击 agent-19 这一行中的“触发器”,然后再点击创建触发器。 该页各配置项含义如下: 名称:填入触发器的名字 表达式:用于配置触发器的触发条件,点击添加按钮有条件选项。 —-键值 多重事件产生:如果选中,则问题如果持续多重的发生则每次都触发,否则只触发一次 点击表达式右侧的添加按钮:
再点击项目右侧的选择,选择我们之前配置过的“web.server.online.monitor”,并设置触发的阀值,如下图所示
Zabbix 会自动生成表达式。接下来根据情况选择事件的严重性。配置完毕后,点击存档保存。
动作的配置: 点击:配置->动作->事件源下拉菜单中选择触发器->创建动作 可以在内容中使用 Zabbix 内置宏,邮件发出时会自动将宏替换成对应的值。
名称: 任意写
默认接收人:
故障级别:{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}
恢复邮件: 恢复主题:
服务器:【{HOSTNAME1}】故障已恢复。故障原因:{TRIGGER.NAME}
恢复信息:恢复邮件的正文。当故障恢复正常后也发邮件通知一下。
点击:操作->编辑:
发送间隔:60秒 步骤:发送10次发送到:admin用户 仅使用:sendmail方式发送 —-脚本。 方式可以自行设置,根据实际工作要求
需要特别解释一下的是“步骤”部分的配置。所谓步骤是指报警可以有多个步骤,做不同的报警。例如,自从 1 到 3,就是指报警的步骤有三个。步骤持续时间就是一定时间后如果监控人员仍未响应报警就进入下一个报警步骤。 例如,发邮件给你报警,如果60 秒后你没响应,那就发 jabber 信息提醒你。如果 60 秒后还没响应,那就发短信给你。要是还没响应,就没有然后了。你可以形象的把它理解为 Zabbix 的一哭二闹三上吊。 到此,一个邮件报警功能就配置完毕了。如果你想立即看到结果,可以修改触发器的条件,将条件的阀值设置为 N>0.0003。你马上就会收到 Zabbix 发来的报警邮件了。
补充:邮件美化
(修改默认信息)
<table border="1" bordercolor="black" cellspacing="0px" cellpadding="4px">
<tr >
<td>告警主机</td>
<td bgcolor="#FF3333">{HOSTNAME1}</td>
</tr>
<tr>
<td>告警时间</td>
<td>{EVENT.DATE} {EVENT.TIME}</td>
</tr>
<tr>
<td>告警等级</td>
<td>{TRIGGER.SEVERITY}</td>
</tr>
<tr>
<td>告警信息</td>
<td>{TRIGGER.NAME}</td>
</tr>
<tr>
<td>告警项目</td>
<td>{TRIGGER.KEY1}</td>
</tr>
<tr >
<td>问题详情</td>
<td bgcolor="#FF3333">{ITEM.NAME}: {ITEM.VALUE}</td>
</tr>
<tr>
<td>当前状态</td>
<td>{TRIGGER.STATUS}: {ITEM.VALUE1}</td>
</tr>
<tr>
<td>事件ID</td>
<td>{EVENT.ID}</td>
</tr>
</table>
- ASP.NET AJAX(7)_Microsoft AJAX Library扩展客户端组件继承时需要注意的问题扩展类型如何修改已有类型
- ASP.NET AJAX(6)__Microsoft AJAX Library中的面向对象类型系统命名空间类类——构造函数类——定义方法类——定义属性类——注册类类——抽象类类——继承类——调用父类方
- 设计模式专题(四)——代理模式
- Array数组函数(一)
- ASP.NET AJAX(5)__JavaScript原生类型以及Microsoft AJAX Library什么是Microsoft AJAX LibraryObject原生类型Object.pro
- 使用 Octave 来学习 Machine Learning(一)
- ASP.NET AJAX(4)__客户端访问WebService服务器端释放WebService方法客户端访问WebService客户端访问PageMethod错误处理复杂数据类型使用基础客户端代理的
- 讲真,你该做备份的有效性校验了
- memcache安装方法
- 设计模式专题(五)——工厂方法模式
- ASP.NET AJAX(11)__ScriptManagerUpdatePanel的支持成员功能控制成员脚本控件支持成员ScriptMode和ScriptPathLoadScriptsBeforeU
- SQL Server 2016新特性:动态数据屏蔽(DDM)
- ASP.NET AJAX(12)__浏览器兼容功能判断浏览器的类型和版本Sys.Browser针对DOM元素的兼容操作针对DOM事件的兼容操作
- 设计模式专题(六)——原型模式
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Android实现简单C/S聊天室应用
- Android仿IOS回弹效果 支持任何控件
- 送你一道字节前端原题(Add sumOf)|文末送红宝书
- xadmin使用formfield_for_dbfield函数过滤下拉表单实例
- Python3之外部文件调用Django程序操作model等文件实现方式
- python 在右键菜单中加入复制目标文件的有效存放路径(单斜杠或者双反斜杠)
- 前端多线程大文件下载实践,提速10倍(拿捏百度云盘)
- docker 中的mysql 经常重启优化
- python MultipartEncoder传输zip文件实例
- 当Flutter遇到节流与防抖的思路和流程优化
- 花样使用Handler与源码分析
- 几个你不知道的Git小命令,却收获快乐。
- Flutter路由的跳转、动画和传参详解(最简单)
- ObjectAnimator属性动画源码分析篇
- 谈谈 React 5种最流行的状态管理库