1、创建邮件告警的脚本,内容如下:
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
|
#!/usr/bin/env python
#coding:utf-8
import
smtplib
from email.mime.text
import
MIMEText
import
sys
LOG_FILENAME=
"/var/log/email_python.log"
mail_host =
'smtp.qq.com'
#定义smtp服务器
mail_user =
'45xxxx6@qq.com'
#发件人邮箱
mail_pass =
'xxxxx'
#发件人邮箱密码
mail_port = 465
#smtp服务器的端口号,不同的邮箱服务器端口号不同
def send_mail(to_list,subject,content):
me=
"Zabbix Monitor"
+
"<"
+mail_user+
">"
#定义发件人显示名称为Zabbix Monitor
msg=MIMEText(content,_subtype=
'plain'
,_charset=
'gb2312'
)
msg[
'Subject'
]=subject
#定义邮件主题
msg[
'From'
]=me
#发送方
msg[
'to'
]=to_list
#接收方
try:
s=smtplib.SMTP_SSL()
#创建一个smtp对象
s.connect(mail_host,mail_port)
#通过connect方法连接smtp主机
s.login(mail_user,mail_pass)
#邮箱账户登录认证
s.sendmail(me,to_list,msg.as_string())
#发送邮件
s.close()
#断开smtp连接
return
True
except Exception,e:
print str(e)
return
False
if
__name__ ==
"__main__"
:
send_mail(sys.argv[1],sys.argv[2],sys.argv[3])
|
2、脚本文件路径
先确认下zabbix_server.conf文件中定义的告警脚本路径
1
2
|
#AlertScriptsPath=/usr/lib/zabbix/alertscripts
AlertScriptsPath=
/etc/zabbix/alertscripts
|
然后将准备好的python脚本存放到该路径下,并更改脚本文件的权限和属主属组
#chown zabbix:zabbix mail.py
#chmod +x mail.py
注意:如果在zabbix_server.conf文件中没有设置Allow root=1,则表示zabbix是以zabbix用户启动而不是root,所以脚本的属主属组都应该设置为zabbix用户。设置为root用户启动的配置如下。
1
2
3
4
5
6
7
8
9
|
### Option: AllowRoot
# Allow the server to run as 'root'. If disabled and the server is started by 'root', the server
# will try to switch to user 'zabbix' instead. Has no effect if started under a regular user.
# 0 - do not allow
# 1 - allow
#
# Mandatory: no
# Default:
AllowRoot=1
|
3、测试脚本文件发送邮件是否成功,这一步很重要
# cd /usr/lib/zabbix/alertscripts
#./mail.py 451345726@qq.com “subject” “content”
如果能收到邮件,表示脚本没有问题。
4、创建Media types
5、添加邮件邮件接收用户
6、创建Action
Action选项卡中只要填一个Name,其余默认
Conditions选项卡中添加告警条件,将主机组加入进来。
注意添加主机组这里如果你选择了多个主机组,则表示属于这多个组的主机才满足告警条件。
如果条件选择AND/OR 就可以避免这一问题
创建Operations
到这里配置完成了。
如果不使用默认的邮件告警内容,也可以自己定义:
邮件告警内容
本文转自 曾哥最爱 51CTO博客,原文链接:http://blog.51cto.com/zengestudy/1788119,如需转载请自行联系原作者