Zabbix发送报警邮件一般采用自定义的脚本来发送比较简洁,一个几十行的脚本和zabbix稍加设置就好了。
1、Zabbix Server 配置文件中开启(取消)AlertScriptsPath选项(注释),该选项指定的路径为存放报警脚本的位置。
1
2
|
[root@Zabbix-Server alertscripts]
# 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
35
|
#!/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
|
[root@Zabbix-Server alertscripts]
# python zabbix_sendmail.py '1989051805@qq.com' 'Test Mail' 'This is Test Mail'
|
4、为zabbix添加新的Media type(就是添加新的报警方式)
1
|
Administration(管理) -> Media types(示警媒介类型) -> Create media
type
(创建媒体类型(右上角的位置))
|
5、为用户指定自定义的Media(指定报警方式)
1
|
Administration(管理) -> User(用户) -> 选择用户或用户组 -> Media(示警媒介)
|
6、指定相应action(动作)的邮件发送方式,然后该Action包括的触发器触发后的动作就是将报警信息通过指定的邮件发送方式将报警信息发给到相应运维人员的邮箱。