zabbix添加邮件方式报警并实现分组报警的功能

摘要:
“.doin(to_list)try:{TRIGGER.NAME}报警项:{TRIGGER.NAME}默认消息:{TRIPGER.STATUS}:{TRIGGER.NAME}报警主机:{RIGGER.SERVERITY}报警信息:{item.NAME}:{item.VALUE}事件代码:{host.NAME主机地址:

zabbix添加邮件方式报警并实现分组报警的功能

1.编写发送邮件的python脚本

# vim /usr/local/zabbix-3.2.0/share/zabbix/alertscripts]# cat send_mail.py

#!/usr/bin/python
#coding:utf-8
import smtplib  
from email.mime.text import MIMEText
from sys import argv
mailto_list=[] 
mail_host="smtpdm-ap-southeast-1.aliyun.com:80"  
mail_user="alarm@mail-service.chinasoft.com"
mail_pass="pass"  

debug_level=0
 
def send_mail(to_list,sub,content):  
    me=mail_user
    msg = MIMEText(content,_subtype='plain',_charset='utf-8')  
    msg['Subject'] = sub  
    msg['From'] = me  
    msg['To'] = ";".join(to_list)  
    try:  
        server = smtplib.SMTP()  
        server.set_debuglevel(debug_level)    
        server.connect(mail_host)  
        server.login(mail_user,mail_pass)  
        server.sendmail(me, to_list, msg.as_string())  
        server.close()  
        return True  
    except Exception, e:  
        print str(e)  
        return False

if __name__ == '__main__':
    try:
        mailto_list=argv[1].split(';')
        sub=argv[2]
        content=argv[3]
    except:
        print "python send_mail.py 'user1@xx.com;user2@xx.com' sub content"
        exit()
    if send_mail(mailto_list,sub,content):  
        print "send ok"  
    else:  
        print "send error"

2.创建Media types

name: mail_alarm
type: Script
Script name: send_mail.py
Script parameters:
{ALERT.SENDTO}
{ALERT.SUBJECT}
{ALERT.MESSAGE}

zabbix添加邮件方式报警并实现分组报警的功能第1张

3.创建actions动作
zabbix添加邮件方式报警并实现分组报警的功能第2张

zabbix添加邮件方式报警并实现分组报警的功能第3张

zabbix添加邮件方式报警并实现分组报警的功能第4张


生产上需要在出现报警情况下,不同的主机发送报警给不同的用户

可以将主机进行分组,比如分为 dev 和 ops 运维组,然后添加用户组,将用户组和主机组进行绑定,把用户添加到特定的用户组中,并且发送报警的时候发给特定的用户

具体步骤

a.把主机进行分组

创建主机群组

配置——>主机群组——>创建主机群组,创建主机群组 dev 并将如 web01 主机添加至主机组,同样的,创建主机群组ops并将db01主机添加至主机组


b.把用户进行分组

创建用户群组

管理——>用户群组——>创建用户群组,创建用户群组dev并添加主机群组至该用户群组


添加主机组: 把机器加入到特定的服务器组中

创建用户组: 并且把机器组和用户组绑定


Group name: cart-dev

zabbix添加邮件方式报警并实现分组报警的功能第5张

为创建的用户配置报警媒介

zabbix添加邮件方式报警并实现分组报警的功能第6张

报警内容

Default subject : 故障{TRIGGER.STATUS},服务器名:{HOSTNAME1}发生: {TRIGGER.NAME}故障!

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


恢复动作

Default subject : {TRIGGER.STATUS}: {TRIGGER.NAME}

Default message:
接收人:{TRIGGER.STATUS}: {TRIGGER.NAME}
告警主机:{HOST.NAME}
主机地址:{HOST.IP}
告警时间:{EVENT.DATE} {EVENT.TIME}
告警等级:{TRIGGER.SEVERITY}
告警信息:{TRIGGER.NAME}
问题详情:{ITEM.NAME}:{ITEM.VALUE}
事件代码:{EVENT.ID}
告警主机:{HOST.NAME}
主机地址:{HOST.IP}
告警时间:{EVENT.DATE} {EVENT.TIME}
告警等级:{TRIGGER.SEVERITY}
告警信息:{TRIGGER.NAME}
问题详情:{ITEM.NAME}:{ITEM.VALUE}
事件代码:{EVENT.ID}

邮件示例

zabbix添加邮件方式报警并实现分组报警的功能第7张

通过shell脚本的方式发送邮件,经过测试邮件收到的内容是有问题的,推荐使用python,命令行发送邮件的记录如下

1,为了不影响邮件收发功能需要停止POSTfix:

systemctl stop postfix
systemctl disable postfix

2,安装邮件发送工具mailx:

yum -y install mailx
mail -V

3. 邮箱配置
cp /etc/mail.rc /etc/mail.rc.bak
grep -v "^$" /etc/mail.rc.bak |grep -v "^#" >/etc/mail.rc

# 末尾添加如下内容

vim /etc/mail.rc

# cat /etc/mail.rc
set hold
set append
set ask
set crt
set dot
set keep
set emptybox
set indentprefix="> "
set quote
set sendcharsets=iso-8859-1,utf-8
set showname
set showto
set newmail=nopoll
set autocollapse
set markanswered
ignore received in-reply-to message-id references
ignore mime-version content-transfer-encoding
fwdretain subject date from to
set bsdcompat
# 阿里云发送邮件服务
set from=alarm@mail-service.chinasoft.com
set smtp="smtp://smtpdm-ap-southeast-1.aliyun.com:80"
set smtp-auth-user=alarm@mail-service.chinasoft.com
set smtp-auth-password="pass"
set smtp-auth=login


# 测试语句
echo "zabbix admin mail 0401" |mail -s "alarm@mail-service.chinasoft.com" jack@chinasoft.cn
echo "zabbix admin mail 0401" |mail -s -v "alarm@mail-service.chinasoft.com" jack@chinasoft.cn


修改配置:
# cat /etc/mail.rc
set hold
set append
set ask
set crt
set dot
set keep
set emptybox
set indentprefix="> "
set quote
set sendcharsets=iso-8859-1,utf-8
set showname
set showto
set newmail=nopoll
set autocollapse
set markanswered
ignore received in-reply-to message-id references
ignore mime-version content-transfer-encoding
fwdretain subject date from to
set bsdcompat
# send mail config
# 自建邮箱服务
set from=ywalarm@service.chinasoft.com
set smtp="smtp://mail.service.chinasoft.com"
set smtp-auth-user=ywalarm@service.chinasoft.com
set smtp-auth-password="pass"
set smtp-auth=login


# 测试命令,可以收到邮件
echo "zabbix test mail" |mail -s "ywalarm@service.chinasoft.com" jack@chinasoft.cn

免责声明:文章转载自《zabbix添加邮件方式报警并实现分组报警的功能》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇data_analysis 第一课C#安装卸载服务下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

linux中sudo的用法和sudoers配置详解

原文地址:http://ncforest.blog.163.com/blog/static/295626642007551417331/ 1.sudo的配置文件是/etc/sudoers ,我们可以用他的专用编辑工具visodu ,此工具的好处是在添加规则不太准确时,保存退出时会提示给我们错误信息;配置好后,可以用切换到您授权的用户下,通过sudo -l...

mybatis的一级缓存

1、mybatis缓存使用场景 2、mybatis一级缓存命中场景  当mybatis执行相关右边的操作时,均会执行clearCache()方法,清空对应缓存。 一级缓存的作用域默认是sqlsession,也就是同一个会话。但是也可以设置为statement级别缓存,此时级别变小了。此时只有同一个statement的子查询才会命中缓存。 只有满足左边条...

图书管理系统【用户、购买、订单模块、添加权限】

用户模块 要登陆后才能购买,因此我们先写购买模块. 设计实体 private String id; private String username; private String password; private String email; private String cellphone; privat...

python数组操作

python中的数组其实就是list,但它更像是java的arraylist,而且功能比arraylist更强大。因为python的list其实是个对象,所以对于他的操作和删除比较有讲究。 创建列表sample_list = ['a',1,('a','b')]Python 列表操作sample_list = ['a','b',0,1,3]得到列表中的某一个...

windows上vmware 虚拟机,局域网其他主机访问

1、虚拟机设置固定IP vim /etc/sysconfig/network-scripts/ifcfg-ens33  重启 service network restart 查看ip ip addr 2、vmware 设置网络       2、主机设置固定IP   3、主机设置开放端口       5、局域网其他主机访问  ...

JAVA中初始化ArrayList的三种方式

  下面讲一下ArrayList初始化的几种不同方式。 一、最常用的初始化方式。 1 List<String> list1 = new ArrayList<String>(); 2 list1.add("apple"); 3 list1.add("banana"); 4 list1.add("o...