zabbix 报警方式之 邮件报警(4)
一、为什么要自定义邮件脚本报警?
灵活,方便。可以自定义过滤信息。
下面是使用不同方式的邮件报警,一个是利用sendEmail程序来发送报警邮件,第二个是利用python脚本来发送邮件。
二、sendEmail的部署步骤
1.官方介绍:http://caspian.dotconf.net/menu/Software/SendEmail/
2.先下载安装包到本地,解压。
[root@zabbix- ~]# wget -c http://caspian.dotconf.net/menu/Software/SendEmail/sendEmail-v1.56.tar.gz
[root@zabbix- ~]# tar zxf sendEmail-v1..tar.gz
[root@zabbix- ~]# cd sendEmail-v1.
[root@zabbix- sendEmail-v1.]# cp -a sendEmail /usr/local/bin/
[root@zabbix- sendEmail-v1.]# chmod +x /usr/local/bin/sendEmail
[root@zabbix- sendEmail-v1.]# file /usr/local/bin/sendEmail
/usr/local/bin/sendEmail: a /usr/bin/perl -w script text executable
3.看下sendemail命令的帮助信息
[root@zabbix- sendEmail-v1.]# /usr/local/bin/sendEmail sendEmail-1.56 by Brandon Zehm <caspian@dotconf.net> Synopsis: sendEmail -f ADDRESS [options] Required:
-f ADDRESS from (sender) email address
* At least one recipient required via -t, -cc, or -bcc
* Message body required via -m, STDIN, or -o message-file=FILE Common:
-t ADDRESS [ADDR ...] to email address(es)
-u SUBJECT message subject
-m MESSAGE message body
-s SERVER[:PORT] smtp mail relay, default is localhost: Optional:
-a FILE [FILE ...] file attachment(s)
-cc ADDRESS [ADDR ...] cc email address(es)
-bcc ADDRESS [ADDR ...] bcc email address(es)
-xu USERNAME username for SMTP authentication
-xp PASSWORD password for SMTP authentication Paranormal:
-b BINDADDR[:PORT] local host bind address
-l LOGFILE log to the specified file
-v verbosity, use multiple times for greater effect
-q be quiet (i.e. no STDOUT output)
-o NAME=VALUE advanced options, for details try: --help misc
-o message-content-type=<auto|text|html>
-o message-file=FILE -o message-format=raw
-o message-header=HEADER -o message-charset=CHARSET
-o reply-to=ADDRESS -o timeout=SECONDS
-o username=USERNAME -o password=PASSWORD
-o tls=<auto|yes|no> -o fqdn=FQDN Help:
--help the helpful overview you're reading now
--help addressing explain addressing and related options
--help message explain message body input and related options
--help networking explain -s, -b, etc
--help output explain logging and other output options
--help misc explain -o options, TLS, SMTP auth, and more
4.安装下依赖
[root@zabbix- sendEmail-v1.]# yum install perl-Net-SSLeay perl-IO-Socket-SSL -y
5.简单的报警脚本,脚本来自群内一位大神:@东南:http://ywwd.net/read-866
[root@zabbix- sendEmail-v1.]# cd /usr/lib/zabbix/alertscripts/
[root@zabbix- alertscripts]# cat mail.sh
#!/bin/bash To=$
Subject=$
Body=$ /usr/local/bin/sendEmail -f [发送者地址] -t "$To" -s [你的smtp服务器地址] -u "$Subject" -xu [smtp验证登陆名] -xp [你的邮箱密码] -m "$Body"
>& >>/var/log/sendEmail.lo
编辑完成后,给脚本权限
[root@zabbix- alertscripts]# chmod +x mail.sh
[root@zabbix-6 alertscripts]# chown zabbix.zabbix /var/log/sendEmail.log
[root@zabbix- alertscripts]# chown zabbix.zabbix mail.sh
6.脚本编辑好后,在zabbix 登陆界面进行设置。
注意:zabbix 3.0 需要在为alert脚本定义参数,以前的版本参数都固定的,现在用户可以自己定义命令行的参数了。添加的参数也就是脚本中的$1、$2、$3等。
添加方法:Administration-->Media types,增加如下参数
添加媒介:

添加完成后,需要关联到报警用户Administration-->Users-->Media-->add

添加动作,触发条件后报警后发送邮件。Configuration-->Actions-Event source(Triggers)-Create action-


设置了60秒,接收消息组,接受消息用户,以及报警介质。

模拟下,把其中一个zabbix-agent 服务关掉


三、第二种报警方式直接利用python脚本 脚本出自ITnihao:https://github.com/itnihao/zabbix-book
#!/usr/bin/python
#coding:utf-
#author: itnihao
#mail: itnihao@qq.com
#url: https://github.com/itnihao/zabbix-book/edit/master/06-chapter/zabbix_sendmail.py import smtplib
from email.mime.text import MIMEText
import os
import argparse
import logging
import datetime mail_host = 'smtp服务器'
mail_user = '账号'
mail_pass = '密码'
mail_postfix = '邮局' def send_mail(mail_to,subject,content):
me = mail_user+"<"+mail_user+"@"+mail_postfix+">"
msg = MIMEText(content)
msg['Subject'] = subject
msg['From'] = me
msg['to'] = mail_to
global sendstatus
global senderr try:
smtp = smtplib.SMTP()
smtp.connect(mail_host)
smtp.login(mail_user,mail_pass)
smtp.sendmail(me,mail_to,msg.as_string())
smtp.close()
print 'send ok'
sendstatus = True
except Exception,e:
senderr=str(e)
print senderr
sendstatus = False def logwrite(sendstatus,mail_to,content):
logpath='/var/log/zabbix/alert' if not sendstatus:
content = senderr if not os.path.isdir(logpath):
os.makedirs(logpath) t=datetime.datetime.now()
daytime=t.strftime('%Y-%m-%d')
daylogfile=logpath+'/'+str(daytime)+'.log'
logging.basicConfig(filename=daylogfile,level=logging.DEBUG)
os.system('chown zabbix.zabbix {0}'.format(daylogfile))
logging.info('*'*)
logging.debug(str(t)+' mail send to {0},content is :\n {1}'.format(mail_to,content)) if __name__ == "__main__":
parser = argparse.ArgumentParser(description='Send mail to user for zabbix alerting')
parser.add_argument('mail_to',action="store", help='The address of the E-mail that send to user ')
parser.add_argument('subject',action="store", help='The subject of the E-mail')
parser.add_argument('content',action="store", help='The content of the E-mail')
args = parser.parse_args()
mail_to=args.mail_to
subject=args.subject
content=args.content send_mail(mail_to,subject,content)
logwrite(sendstatus,mail_to,content)
将脚本放在/usr/lib/zabbix/alertscripts目录下。并赋予执行权限,属主改为zabbix,之后添加媒介,关联动作,和上面添加步骤基本一样。
本文章属于本作者原创,遵循开源协议,如有转载,请注明本链接的源地址。谢谢 继续更新中!!
zabbix 报警方式之 邮件报警(4)的更多相关文章
- Ubuntu16.04 + Zabbix 3.4.7 邮件报警设置
部署了Zabbix,需要配置邮件报警,在网上找了一些教程,大多是是用的CentOS + Zabbix 2.x版本的,而且还要写脚本,感觉太麻烦了,所以自己结合其他文章摸索了一套配置方法. 先说一下环境 ...
- zabbix使用之打造邮件报警
zabbix使用之打造邮件报警 前言: 报警信息很重要,它能使我们最快的知道故障内容,以便于及时处理问题.zabbix如果没配置报警功能,则完全不能体现zabbix的优势了 配置详情如下: 1.编写发 ...
- zabbix的nginx监控+邮件报警
nginx监控 下载nginx的监控模板
- 分布式系统监视zabbix讲解二之邮件报警通知--技术流ken
概述 在上一篇博客<分布式系统监视zabbix讲解一技术流ken>中已经详细讲解了如何安装zabbix,本篇博客将详细讲解如何使用zabbix监控另外一台主机,并实现email报警通知机制 ...
- 分布式系统监视zabbix讲解二之邮件报警通知
概述 在上一篇博客<分布式系统监视zabbix讲解一技术流ken>中已经详细讲解了如何安装zabbix,本篇博客将详细讲解如何使用zabbix监控另外一台主机,并实现email报警通知机制 ...
- zabbix(7)邮件报警配置
邮件报警可以使用Linux自带邮件服务器(postfix等),也可以使用其他邮件服务器(像腾讯邮箱,126邮箱) 一.使用mail. 1.确定zabbix server是否安装发送邮件的命令mail, ...
- Zabbix学习之路(三)之使用SMTP发送邮件报警及定制邮件报警内容
1.设置邮件报警的思路 (1)设置触发器(Trigger)-->触发后需要执行的动作(Action) 触发器使用逻辑表达式来评估通过 item 获取到得数据是处于哪种状态.在触发器表达式中我们可 ...
- 【Linux】Zabbix + MPM + msmtp + mutt 监控MySQL + 邮件报警
Zabbix部署参考博文 http://blog.sina.com.cn/s/blog_5611597901017oe0.html MPM安装配置参考博文和MPM官网下载地址 http://blog ...
- zabbix实现邮件报警
说明: Zabbix监控服务端.客户端都已经部署完成,被监控主机已经添加,Zabiix监控运行正常. 实现目的: 在Zabbix服务端设置邮件报警,当被监控主机宕机或者达到触发器预设值时,会自动发送报 ...
随机推荐
- 用css和php脚本来使得poscms的list标签顺利输出记录
每次拿到前端给的页面,都会有意想不到的惊喜,因为他们给的页面总是不能很好地契合poscms的模板标签 输出规范,这时候就需要动点脑筋去解决问题了. 拿前两天拿到的一类(对,你没看错,是一类)页面来说吧 ...
- JDK 1.8之 HashMap 源码分析
转载请注明出处:http://blog.csdn.net/crazy1235/article/details/75579654 构造函数 Node hash put treeifyBin get re ...
- 上周面试回来后写的Java面试总结,想进BAT必看
上周陪同之前一起工作的同事去面试(乔治,小袁,鹏飞(面试人)),第一站是去深圳,第二站上海,第三站杭州.面试什么公司我在这里就不多说了,你们知道是一线公司就行.其实本来真的没打算写这篇文章,主要是自己 ...
- OPEN(SAP) UI5 学习入门系列之三:MVC (下) - 视图与控制器
继续来学习UI5的MVC模型吧,这次我们来探讨视图与控制器. 1 视图 在MVC中,视图用来定义和渲染UI.在UI5中,视图的类型是可以自定义的,除了以下预定义的四种视图类型之外,你也可以定制自己的视 ...
- iPhone开机键坏了如何开机
作死 开机 [苹果手机/iphone开机键坏了怎么开机]
- SpringDataJpa增删改查
资料来源网址:http://www.cnblogs.com/hawell/p/SpringDataJpa.html Repository(几个常用的例子) @Repository public int ...
- Servlet传统配置方式和Servlet3.0使用注解的方式
一.Servlet的传统配置方式 在JavaWeb开发中, 每次编写一个Servlet都需要在web.xml文件中进行配置,如下所示: <servlet> <servlet-name ...
- Quartz 2D编程指南(5) - 变换(Transforms)
Quartz 2D 绘制模型定义了两种独立的坐标空间:用户空间(用于表现文档页)和设备空间(用于表现设备的本地分辨率).用户坐标空间用浮点数表示坐标,与设备空间的像素分辨率没有关系.当我们需要一个点或 ...
- LeetCode String Compression
原题链接在这里:https://leetcode.com/problems/string-compression/description/ 题目: Given an array of characte ...
- altera官方推荐时钟使用方法
Register Combinational Logic Outputs If you use the output from combinational logic as a clock signa ...