监控的目的一个是可以查看历史状态,可以对比零晨和工作区间数据的对比,以便后期进行优化指导。还有一个是报警,总不能等到服务器出现异常了才去从头查是什么问题吧。所以这篇主要介绍报警中最基础的一个 配置邮件预警。

安装邮件发送工具mail

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

#systemctl stop sendmail  #关闭
#systemctl disable sendmail #禁止开机启动
#systemctl stop postfix #关闭
#systemctl disable postfix#禁止开机启动

安装mailx

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

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

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

配置Zabbix服务端外部邮箱

#vim /etc/mail.rc #在此配置文件中添加
set from=aaa@.com smtp=smtp..com #自己的邮箱
set smtp-auth-user=aaa@.com
set smtp-auth-password=yaya@
set smtp-auth=login

测试邮件是否可以发出

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

编写发送邮件脚本

# vim /etc/zabbix/zabbix_server.conf
AlertScriptsPath=/usr/lib/zabbix/alertscripts #此路径是编写发送邮件的路径
#cd /usr/lib/zabbix/alertscripts
#vim 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
上面的这个三个参数是接收从web页面中传递过来的,$:收件人邮箱地址;$:邮件标题;$:邮件内容

配置web页面

 创建媒体类型 →创建媒体类型

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

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

给用户添加报警媒介

以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封邮件。
到这我们的邮件报警配置就完成了,这时只要我们设置的触发器触发,就会自动给我发送报警邮件。

测试邮件报警

此处模拟的是监控服务器的nginx宕机,给邮件接收者发邮件

此时手动将被监控服务器上nginx停用,这将收到触发后的邮件(故障发生和故障恢复)

最新文章

  1. 【道德经】漫谈实体、对象、DTO及AutoMapper的使用
  2. 手持机(Android)开发应用总结
  3. Struts2学习笔记《一》
  4. 推荐:根据ISBN号查询图书信息的API - 豆瓣API
  5. 九度OJ 1066 字符串排序
  6. 导入 from pdfminer.pdfinterp import process_pdf 错误
  7. PHP foreach()跳出本次或当前循环与终止循环方法
  8. Alter的用法(添加字段,删除字段,修改字段名)
  9. sql 里的 IF ELSE 语句用法
  10. NetFramework各个版本的特性笔记
  11. [LeetCode] 344 Reverse String &amp;&amp; 541 Reverse String II
  12. 算法-java代码实现归并排序
  13. CAN总线为什么要有两个120Ω的终端电阻?
  14. NPOI写Excel,Microsoft.Office.Interop.excel.dll 转换Excel为PDF
  15. 安装slide后Powerpoint 不自动退出的解决方案
  16. C#连接oracle连接字符串
  17. 公开课 之 tony 电子时钟 (课堂笔记)
  18. Wireshark&#160;wireshake数据包分割及捕包过滤器介绍
  19. Idea问题记录
  20. 总结day11 ----函数的学习(2)

热门文章

  1. vscode教程(基础篇)
  2. java保证多线程的执行顺序
  3. Javascript的异步与单线程
  4. AJAX中错误代码解释以及http中的错误代码解释
  5. python与mysql的数据交互
  6. C#ThreadPool类—多线程
  7. Vue中在组件销毁时清除定时器(setInterval)
  8. linux 用户,密码,用户组
  9. c++ vector容器基本用法
  10. python练习题(三)