zabbix设置邮件报警的常用方法总结

zabbix设置邮件报警的常用方法总结


zabbix设置告警的完整流程:

  1. 添加用户组(添加权限)权限只能按用户组分配
  2. 添加用户(选择用户类型,用户、管理员、超级管理员,添加报警媒介)
  3. 在“管理->报警媒介类型”中设置好报警媒介
  4. 启动action,在“配置->动作”中启用,并配置操作

zabbix设置邮件报警大体可以分为两大类:

  • 使用外部邮箱账号发送报警邮件设置
    • Email
    • 自定义脚本
  • 使用Zabbix服务端本地邮箱账号发送邮件

    zabbix 3.0之后,默认的Email报警添加了用户名密码验证功能,所以可以直接通过Email设置企业邮箱来发送邮件。

1.使用zabbix 自带Email发送报警邮件

1.在“管理-报警媒介类型”中设置邮箱信息,这里以个人qq邮箱为例:
zabbix设置邮件报警的常用方法总结_第1张图片

使用qq邮箱要确保开启SMTP服务,认证的密码要使用QQ邮箱生成的16位安全码

2.在“管理-用户-报警媒介”中设置邮件接收地址
zabbix设置邮件报警的常用方法总结_第2张图片
3.设置触发报警的动作:
zabbix设置邮件报警的常用方法总结_第3张图片

配置动作:
状态:{TRIGGER.STATUS}
主机:{TRIGGER.NAME}
监控项:{ITEM.KEY1}): {ITEM.VALUE1}

邮件报警详细配置动作:

故障{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.DATE} {EVENT.TIME}
告警等级:{TRIGGER.SEVERITY}
告警信息: {TRIGGER.NAME}
告警项目:{TRIGGER.KEY1}
问题详情:{ITEM.NAME}:{ITEM.VALUE}
当前状态:{TRIGGER.STATUS}:{ITEM.VALUE1}
事件ID:{EVENT.ID}

设置触发条件及操作
zabbix设置邮件报警的常用方法总结_第4张图片
4.关闭agent,测试邮件报警
zabbix设置邮件报警的常用方法总结_第5张图片
也可以在“报表-动作日志”中查看发送状态:
zabbix设置邮件报警的常用方法总结_第6张图片

2 自定义脚本发送报警邮件

自定义脚本告警步骤:

  1. 放在 /usr/lib/zabbix/alertscripts
  2. 要支持三个参数 1 收件人 2.主题 3,内容
  3. 执行权限
  4. Web界面添加 创建媒介类型,添加收件人
  5. 修改Actions

自定义脚本存放路径:(配置文件中指定的路径)

/usr/lib/zabbix/alertscripts
# grep "alertscripts" /etc/zabbix/zabbix_server.conf
# AlertScriptsPath=${datadir}/zabbix/alertscripts
AlertScriptsPath=/usr/lib/zabbix/alertscripts

在web界面中创建新的媒介类型:
zabbix设置邮件报警的常用方法总结_第7张图片

脚本参数:
{ALERT.SENDTO}
{ALERT.SUBJECT}
{ALERT.MESSAGE}

其他配置与使用Email配置类似。
脚本代码如下:

# cat /usr/lib/zabbix/alertscripts/pymail.py 
#!/usr/bin/python
#coding: utf-8  
import smtplib  
import sys
from email.mime.text import MIMEText  
from email.header import Header  
from email.Utils import COMMASPACE

receiver = sys.argv[1]
subject = sys.argv[2]
mailbody =  sys.argv[3]
smtpserver = 'smtp.qq.com'  
username = '[email protected]'
password = 'xxxxxxxxx'  
sender = username

msg = MIMEText(mailbody,'html','utf-8')
msg['Subject'] = Header(subject, 'utf-8')  
msg['From'] = username
msg['To'] = receiver

smtp = smtplib.SMTP()  
smtp.connect(smtpserver)  
smtp.login(username, password)  
smtp.starttls()
smtp.sendmail(msg['From'], msg['To'], msg.as_string())  
smtp.quit()

发往服务器本地的脚本如下:

# cat sms.sh 
#!/bin/bash
ALTER_TO=$1
ALTER_TITLE=$2
ALTER_BODY=$3

echo $ALTER_TO >> /tmp/sms.log
echo $ALTER_TITLE >> /tmp/sms.log
echo $ALTER_BODY >> /tmp/sms.log

3.使用Zabbix服务端本地邮箱账号发送邮件
Zabbix服务端只是单纯的发送报警邮件到指定邮箱,发送报警邮件的这个邮箱账号是Zabbix服务端的本地邮箱账号,只能发送,不能接收外部邮件。

使用zabbox服服务端本地邮箱账号发送邮件,需要安装两个软件达到报警邮件转发至指定邮箱。Sendmail或postfix(两个软件各选择一个,但不能同时运行)和mailx邮件客户端。

什么是MTA?什么是MUA?
通俗的说MUA就是用户使用的客户端,而MTA则是真正发送邮件的发送进程,MUA编写的邮件最终也交由MTA发送至目标端。
mailx即为负责查看、编写邮件和向MTA发送邮件的MUA。
Sendmail和postfix即为负责邮件在网络上传输的MTA,将邮件从一个MTA传送至另一个MTA。

yum install -y mailx
systemctl start postfix   #centos7 自带postfix

现在可以测试一下邮件是否能发送成功:

echo "test" | mail -s 'test linux'  1109206195@qq.com 

配置zabbix服务端邮件报警:
zabbix设置邮件报警的常用方法总结_第8张图片

使用默认的localhost.localdomain发送邮件容易被当做垃圾邮件拦截,建议通过主机名设置。

你可能感兴趣的:(zabbix)