运维监控篇(3)_Zabbix自定义脚本发送报警邮件

Zabbix发送报警邮件一般采用自定义的脚本来发送比较简洁,一个几十行的脚本和zabbix稍加设置就好了。
1、Zabbix Server 配置文件中开启(取消)AlertScriptsPath选项(注释),该选项指定的路径为存放报警脚本的位置。

1
2
$ vim /usr/local/zabbix/etc/zabbix_server.conf 
AlertScriptsPath=/usr/local/zabbix/alertscripts

2、在alertscripts目录中放入发送邮件的脚本如zabbix_sendmail.py,该脚本接收3个来自zabbix-server的参数,收件人、主题、邮件内容,给予该脚本zabbix用户的可执行权限。该脚本是从网络上找到比较干净利落的一个。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
#!/usr/bin/python 
#coding:utf-8
import smtplib
from email.mime.text
import MIMEText
import sys

#邮箱服务器地址
mail_host = 'smtp.exmail.qq.com'
#邮箱用户名
mail_user = 'testname@qq.com'
#邮箱密码
mail_pass = 'mima'
mail_postfix = 'qq.com'

def send_mail(to_list,subject,content):
me = mail_user+"<"+mail_user+"@"+mail_postfix+">"
msg = MIMEText(content)
msg['Subject'] = subject
msg['From'] = me
msg['to'] = to_list
try:
s = smtplib.SMTP()
s.connect(mail_host)
s.login(mail_user,mail_pass)
s.sendmail(me,to_list,msg.as_string())
s.close()
return True
except Exception,e:
print str(e)
return False

if __name__ == "__main__":
send_mail(sys.argv[1], sys.argv[2], sys.argv[3])

3、测试脚本看看能不能发送邮件,接收三个参数分别是收件人、主题、邮件内容。

1
$ python zabbix_sendmail.py '1989051805@qq.com' 'Test Mail' 'This is Test Mail'

如果能够正常发送,则该用户会收到这封邮件
zabbix03a

4、为zabbix添加新的Media type(就是添加新的报警方式)
Administration(管理) -> Media types(示警媒介类型) -> Create media type(创建媒体类型(右上角的位置))
然后在弹出的对话框中填入一下内容保存退出
zabbix03b

5、为用户指定自定义的Media(指定报警方式)
Administration(管理)->User(用户) -> 选择用户或用户组 -> Media(示警媒介)
添加并启用新的报警媒介
zabbix03c

6、指定相应action(动作)的邮件发送方式,然后该Action包括的触发器触发后的动作就是将报警信息通过指定的邮件发送方式将报警信息发给到相应运维人员的邮箱
zabbix03d

----------------本文结束 感谢阅读----------------