zabbix配置邮件告急

(三)添加邮件告警配置,添加邮件告警配置

大家应该心理有底,做监控不是只为了看服务器状态,虽然那也是监控的目的之一,但绝对不是全部,大家做监控的目的肯定是想预警,甚至是出问题就告警,毫无疑问zabbix也是支持告警规则的,现在来介绍传统的添加邮件告警,后面还会介绍微信告警.

添加邮件告警配置:

    关于zabbix邮件告警的原理,其实是调用脚本,然后脚本通过邮件功能来向外发邮件,后面介绍的微信告警也是通过脚本调用微信接口来做的.

所以,告警的关键,就是脚本了,其实zabbix邮件告警这个功能很多文章有写,也有很多脚本可以参考,只是大部分版本比较旧,不一定适用而已,下面先来看看脚本.

传统来说,监控的服务器大部分是linux系统,所以以前几乎都是bash
shell,现在python脚本也有了,用起来还挺方便的,粗略说说传统方式,后面重点拿python脚本来讲解:

12345678910111213 #先下载相关软件yum install -y sendmail postfix mailx#测试能否发邮件echo "zabbix test mail" |mail -s "zabbix" [email protected]#编写脚本vim sendmail.sh#!/bin/bash#echo "$3" | mail -s "$2" $1messages=`echo $3 | tr '\r\n' '\n'`subject=`echo $2 | tr '\r\n' '\n'`echo "${messages}" | mail -s "${subject}" $1 >>/tmp/sendmail.log 2>&1#测试一下bash sendmail.sh [email protected] zabbix fuckyou

下面来看python的脚本.

发邮件的脚本:

使用前当然是要先安装python了,然后是相关的运行库smtplib,python的smtplib提供了一种很方便的途径发送电子邮件。它对smtp协议进行了简单的封装。

12345678910111213141516171819202122232425262728293031323334 vim sendmail2.py#!/usr/bin/python#coding:utf-8import smtplibfrom email.mime.text import MIMETextimport sys# configure your own parameters here#下面邮件地址的smtp地址mail_host = 'smtp.exmail.qq.com'#用来发邮件的邮箱,在发件人抬头显示(不然你的邮件会被当成是垃圾邮件)mail_user = '[email protected]'#上面邮箱的密码mail_pass = 'XXXXX'#上面smtp地址的主网站地址mail_postfix = 'exmail.qq.com'def send_mail(to_list,subject,content):    me = mail_user+"<"+mail_user+"@"+mail_postfix+">"    msg = MIMEText(content, 'plain''utf-8')    # 必须使用'utf-8'参数,否则默认为us-ascii, 在部分邮件客户端中文会显示为乱码    msg['Subject'= subject    msg['From'= me    msg['to'= to_list    try:        = 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 Falseif __name__ == "__main__":    send_mail(sys.argv[1], sys.argv[2], sys.argv[3])

这个脚本主要就改4项:

#下面邮件地址的smtp地址
mail_host = ‘smtp.exmail.qq.com’
#用来发邮件的邮箱,在发件人抬头显示(不然你的邮件会被当成是垃圾邮件)
mail_user =
‘[email protected]’
#上面邮箱的密码
mail_pass = ‘XXXXX’
#上面smtp地址的主网站地址
mail_postfix = ‘exmail.qq.com’

这个脚本需要输入三个参数来操作,空格隔开就好了

第一个是要发送的邮件地址,

第二个是邮件标题,

第三个是邮件内容

改完就能用了,试一下:

python sendmail2.py
[email protected]
test ‘ha ha ha’

收到邮件就完成了.

确认zabbix_server脚本的位置:

12 cat /usr/local/zabbix/etc/zabbix_server.conf |grep AlertScriptsPath=AlertScriptsPath=/usr/local/zabbix/share/zabbix/alertscripts

这个目录就是发邮件脚本存放的位置,如果你之前没设过,这次设置完记得重启zabbix_server

在zabbix_web设置:

脚本准备好了,就要去web设置报警的调用规则了,要看图解了(截图很麻烦啊……),怎么登录我就不说了.

如图所示:点击管理-报警媒介类型-创建媒体类型

然后输入:

名称:你喜欢什么就是什么

类型:脚本

脚本名称:就是你刚刚脚本的名称,我刚才改的名字就是sendmail2.py

脚本参数:{ALERT.SENDTO}, {ALERT.SUBJECT},
{ALERT.MESSAGE}(必填,就这三个,不用改,),分别为脚本需要的3个参数:收件人地址、主题、详细内容,就是测试脚本的那三个参数了.

ps:很多人安装zabbix3.X之后,写的脚本一直发信不成功,手动执行时可以。这是因为Zabbix3.X之后,可以自定义参数了,所以不写参数它是不会传参数的。在2.x版本不存在这个问题,默认会传3个参数。

创建了报警类型,当然还要设置收件人是吧,然后就是:

点击管理-用户-用户名

如果你想独立创建用户名是可以的,但是我就不想那么麻烦,直接用admin

进去用户界面后要点击<报警媒介>-<添加>

就是添加接收报警的地址,会弹出一个框.

这个框就是添加邮件地址的地方:

类型:选你刚才在<报警媒介类型>创建的,我这里是pymail

收件人:你的邮件地址

当启用时:就是收邮件的时效,觉得被骚扰太频繁就调节吧

下面两个不用管,点击<添加>就可以刻

然后会返回刚才的界面,点击<更新>就可以了.

最后,创建报警动作,让报警动起来:

点击配置-动作-创建动作(注意是触发器)

然后进入另一个界面,这里重点在第二页<操作>那里,第一页的<动作>只是改个名字,然后看下一图的事例

要注意,这个是修改过的信息事例,和默认的不一样,他比默认的更直观和容易阅读一些,

默认操作步骤持续时间:按需调节,不详细说明

默认接收人:其实是报警标题,这里设置成:

故障{TRIGGER.STATUS},服务器:{HOST.NAME1}发生: {TRIGGER.NAME}故障!.

默认信息:就是报警内容,这里设置成:

告警主机:{HOST.NAME1}
告警时间:{EVENT.DATE} {EVENT.TIME}
告警等级:{TRIGGER.SEVERITY}
告警信息: {TRIGGER.NAME}
告警项目:{TRIGGER.KEY1}
问题详情:{ITEM.NAME}:值为{ITEM.VALUE}
当前状态:{TRIGGER.STATUS}:{ITEM.VALUE1}
事件ID:{EVENT.ID}

然后下面一个框是通过点击下面的<操作>里面的<新的>的弹框<操作细节>,

主要就是选择需要发送的群组和用户,刚才我们设置邮件地址是在admin的,那么这里设置的显然就是zabbix
admin的用户组和用户admin,然后<仅送到>要设置成<报警媒介>的名字pymail.

然后,在顶上<操作>的隔壁<恢复操作>那里,大致和<操作>一致,这里不细说,大家直接看图.

和上面差不多,主要就是默认接收人和默认信息有小许差别

默认接收人:恢复的标题:

{TRIGGER.STATUS}: {TRIGGER.NAME}恢复{TRIGGER.STATUS},
服务器:{HOSTNAME1}: {TRIGGER.NAME}已恢复!

默认信息:恢复内容:

告警主机:{HOST.NAME1}
告警时间:{EVENT.DATE} {EVENT.TIME}
告警等级:{TRIGGER.SEVERITY}
告警信息: {TRIGGER.NAME}
告警项目:{TRIGGER.KEY1}
问题详情:{ITEM.NAME}:值为{ITEM.VALUE}
当前状态:{TRIGGER.STATUS}:{ITEM.VALUE1}
事件ID:{EVENT.ID}

到这里,报警的设置就完成了,然后下面来测试下,把客户机的zabbix_agent停掉看看,不过时间比较长,要5分钟才报警,也可以设置其他参数,这个就自己慢慢摸索了.

出处:

查看评论

大家应该心理有底,做监控不是只为了看服务器状态,虽然那也是监控的目的之一,但绝对不是全部…

1、安装邮件服务

一、

系统环境:CentOS6.3
x64

一、添加监控主机

1.1 通过  配置  ->  主机  -> 创建主机
1.2 必需要输入 主机名称、群组、ip地址
1.3  添加克隆添加总共www组两台、news组两台
yum -y install mailxecho "我是内容" | mail -s "邮件测试" 894548465@qq.com   #发邮件测试

1.本机若安装sendmail,则必须关闭并卸载。

zabbix:zabbix-2.06(简体中文)

二、简单检查项目添加

添加一个监控web服务器81端口的监控(为了测试nginx开一个81端口监听)
2.1  通过 配置  ->  主机  -> 找到对应的主机点击监控项 -> 创建监控项
2.2  必须输入  名称、选择类型、选择键值、信息类型、应用集
项目名称:Check Port 81

2、添加报警媒介

# service sendmail stop

postfix: 系统自带

三、监控数据查看

通过 监测中->最新数据  ->过滤主机

图片 1

# chkconfig sendmail off

 

四、图形添加

只要名称和添加监控项目就可以了。
图形名称:Check Port 81

输入接收告警邮件的邮箱图片 2图片 3

# rpm -e sendmail –nodeps

一.配置本机postfix配合zabbix邮件发送

五、通过搜索查看图形

右上角搜索ip
点击图形查看图形

3、配置SMTP服务端

2.安装postfix

 

六、添加触发器

6.1  通过 配置  ->  主机  -> 找到对应的主机点击触发器 -> 创建触发器
6.2 输入 名称、选择表达式、选择严重性
触发器名称:Check Port 81

图片 4

# yum install postfix -y

1.本机若安装sendmail,则必须关闭并卸载。

七、修改触发器使其有问题

使用本机作为SMTP服务器

更改postfix配置文件中的参数

# service sendmail stop

八、触发器有问题进行邮件告警(演示用QQ邮箱登录来发邮件,不要用系统的sendmail)

8.1  用户设置,主机设置用户的邮件
通过 管理-> 用户
可设置接收什么类型的告警
8.2  用户的权限说明(如果对主机没有读权限,告警邮件收不到)
8.3  创建触发器动作
通过 配置->动作
8.3.1  动作设置
8.3.2  条件设置
8.3.3  操作设置
8.4  报警媒介类型设置
在管理  报警媒人类型
8.4.1  发送邮件脚本讲解、放置位置、需要执行权限(chmod a+x zabbix_sendmail.py)、测试(邮箱需要开启smtp功能)
放置位置的配置zabbix_server.conf:
AlertScriptsPath=/usr/local/zabbix/alertscripts
8.4.2  zabbix给三个参数赋值
{ALERT.SENDTO}
{ALERT.SUBJECT}
{ALERT.MESSAGE}

图片 5

# postconf -e myhostname=mail.zabbix.example.cn

# chkconfig sendmail off

九、发送哟件脚本(zabbix_sendmail.py)

#!/usr/bin/python
# -*- coding: utf-8 -*-
#zabbix send mail

from email.mime.text import MIMEText
import smtplib
import sys

#smtpaddr = 'smtp.163.com'
smtpaddr = 'smtp.qq.com'
myemail='123456789@qq.com'
#password='mypassword'
f = open('/usr/local/zabbix/alertscripts/password','r')
password = f.readline()

recvmail=sys.argv[1]
subject=sys.argv[2]
content=sys.argv[3]

subject = u'%s' % subject
msg = MIMEText("""%s"""%(content), "plain", "utf-8")

msg['Subject'] = subject
msg['From'] = myemail
msg['To'] =  recvmail

try:
        server = smtplib.SMTP()
        server.connect(smtpaddr, "25")
        server.starttls()
        server.login(myemail, password)
        server.sendmail(myemail, recvmail.split(','), msg.as_string())
        server.quit()
        print "success"
except Exception, e:
        print "fail: "+str(e)

 

4、创建触发器

# postconf -e myorigin=zabbix.example.cn

# rpm -e sendmail –nodeps

图片 6

# postconf -e mydomain=zabbix.example.cn

 

图片 7

# postconf -e mydestination=localhost

2.安装postfix (centos6.3下默认yum源,默认postfix系统自带)

图片 8

# postconf -e mynetworks=127.0.0.0/8

# yum install postfix -y

最后1个值大于40度则触发告警(值设低一点,方便查看效果)
更多触发器表达式用法,可查看官方文档:

配置完成会添加参数到/etc/postfix/main.cf下末行

 

函数用法:

# vi /etc/hosts

更改postfix配置文件中的参数

图片 9

添加一行:

# postconf -e myhostname=mail.zabbix.example.cn

查看触发器是否被触发

127.0.0.1 mail.zabbix.example.cn zabbix.example.cn

# postconf -e myorigin=zabbix.example.cn

图片 10

重启postfix服务

# postconf -e mydomain=zabbix.example.cn

4、配置Actions动作

# service postfix restart

# postconf -e mydestination=localhost

图片 11

#yum install mailx

# postconf -e mynetworks=127.0.0.0/8

图片 12

测试发送一封邮件到公网邮箱

配置完成会添加参数到/etc/postfix/main.cf下末行

图片 13

echo “zabbix test mail” |mail -s “zabbix” xxx@163.com

 

图片 14

若远程邮箱收到,则配置成功

# vi /etc/hosts

图片 15

添加一行:

5、查看告警邮件


图片 16

127.0.0.1 mail.zabbix.example.cn zabbix.example.cn

PS:如果收不到,有可能是被过滤到垃圾箱


 

重启postfix服务

# service postfix restart

测试发送一封邮件到公网邮箱

# mail abc@example.com

动态查看发送的邮件日志

# tail -f /var/log/maillog

若远程邮箱收到,则配置成功

 

二.配置zabbix告警发送邮件到远程邮箱

 

1.进入:ZABBIX-管理-示警媒体类型,点击右上角创建示警媒体类型

按照如图配置:

图片 17

 

2.进入: ZABBIX-配置-动作,点击右上角创建动作

然后有如下三个标签

图片 18

点击动作标签,填写名称,例如: send mail
to Zabbix admin

如图:

图片 19

 

 

点击条件标签,添加一个 触发器值 =
“正常” 的选项

如图:

图片 20

点击操作标签,再点击“新的”添加相应用户,用户组以及告警邮件信息到该条目

如图:

图片 21

图片 22

最后先点击更新,后点击存档退出。

 

3.进入:ZABBIX-管理-用户

在成员列点击Admin,如图:

图片 23

选择警示媒体标签,并点击添加,进入配置界面:

按照如图配置:

类型选择之前配置的示警媒体类型

收件人选择远程邮箱地址

图片 24

保存退出

 

三.测试效果:

关闭ZABBIX监控下的一台客户端80端口,显示告警,同时收到一封告警邮件。

如图:

图片 25

图片 26

 

打开80端口,收到一封端口恢复正常的邮件.

图片 27

 

 

——–配置完毕———-

图片 28

发表评论

电子邮件地址不会被公开。 必填项已用*标注