本节内容:

  • Zabbix的通知功能
  • 定义接收告警的用户
  • 定义Action
  • Zabbix自定义脚本发送报警邮件

一、Zabbix的通知功能

在配置好监控项和触发器之后,一旦正常工作中的某触发器状态发生改变,一般意味着有异常情况发生,此时通常需要采取一定的动作(action),如告警或者执行远程命令。 实现zabbix的通知功能,一般需要两个步骤:定义所需的“媒介”和配置一个”动作”。 媒介类型有:E-mail,SMS,Jabber和自定义的通知脚本。我这里就使用E-mail了。

1.定义媒介

登录zabbix web管理控制台,点击Administration—> Media types,可以看到有3个定义好了的媒介,不用这3个,点击右上角的”Create media type”。

填写信息:

二、定义接收告警的用户

1.创建用户组

(1)点击Administration—> User groups,点击右上角的Create user group。

(2)输入组名,点击Add。

2.创建用户

(1)点击Administration—> Users,点击右上角的Create user。

在User列填入个人信息:

(2)点击Media,点击Add,选择媒介和接收邮件的时间等信息:

(3)点击Permissions,根据这个新添的用户给予合适的权限

三、定义Action

点击Configuration—> Actions,点击右上角的Create action:

Action配置:

Conditions配置:

四、Zabbix自定义脚本发送报警邮件

Zabbix发送报警邮件还可以采用自定义的脚本来发送。

1.Python脚本发邮件

(1)定义Media types

如下图,添加以下3个参数,分别对应sendEmail.sh脚本需要的3个参数:收件人地址、主题、详细内容。

{ALERT.SENDTO}
{ALERT.SUBJECT}
{ALERT.MESSAGE}

【注意】: 很多人安装zabbix 3.0之后,写的脚本一直发信不成功,手动执行时可以的。那是因为zabbix3.0之后,可以自定义参数了。所以不写参数,它是不会传参数的。在2.x版本不存在这个问题,默认会传3个参数。脚本中可以使用$1, $2, $3来调用 action 中的 邮件的收件人, Default Subject, Default Message。

(2)定义Users的Media

(3)python报警脚本

# cd /usr/local/zabbix-3.0./share/zabbix/alertscripts/
# vim zabbix_sendmail.py
#!/usr/bin/python
# coding:utf-8 import smtplib
from email.mime.text import MIMEText
import sys # 邮箱服务器地址
mail_host = 'smtp.exmail.qq.com'
# 邮箱用户名
mail_user = '01115004@wisedu.com'
# 邮箱密码
mail_pass = 'zjk230640'
mail_postfix = 'wisedu.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])

Python报警脚本

修改脚本权限:

# chmod +x zabbix_sendmail.py
# chown -R zabbix.zabbix zabbix_sendmail.py

(4)修改zabbix_server配置

# vim /usr/local/zabbix-3.0./etc/zabbix_server.conf

添加如下配置:

### Option: AlertScriptsPath
AlertScriptsPath=/usr/local/zabbix-3.0./share/zabbix/alertscripts

重启zabbix_server。

(5)配置Actions

【注意】:每触发一次Action,都会在Reports—>Action log看到记录:

2.shell脚本发邮件

(1)先安装sendEmail

[root@care local]# tar zxf sendEmail-v1..tar.gz
[root@care local]# cp sendEmail-v1./sendEmail /usr/local/bin

安装sendEmail

将写好的脚本上传到/usr/local/zabbix-3.0.1/share/zabbix/alertscripts。这里为了业务需求,需要定制化发送邮件的内容,脚本内容如下:

#!/bin/bash
###Description:This script is used to alarm.
###Written by: jkzhao - jkzhao@wisedu.com
###History: -- Second release.
###Modification: Please modify the variables host, user and passwd. # 获取默认的邮件接收者,邮件主题,邮件正文
to=$
subject=$
bodyOrgin=$ # 获取eventid
#eventid=grep "event ID" $bodyOrgin |awk '{print $4}'
eventid=$(echo $bodyOrgin | grep "event ID" |awk '{print $NF}')
echo "eventid:$eventid" > /tmp/test.txt # shell调用存储过程,获取主键viewid,传入参数:eventid,输出:viewid
host=172.16.9.112
user=root
passwd=zabbix
database=zabbix viewid=$(mysql -u${user} -p${passwd} -h${host} -D${database} -e "call generateAlertView($eventid,@result)" >/dev/null | awk 'NR>1')
echo "viewid:$viewid" >> /tmp/test.txt
group=$(mysql -u${user} -p${passwd} -h${host} -D${database} -e "select alerts_view_group.group from alerts_view_group where viewid = $viewid" >/dev/null | awk 'NR>1')
echo "group:$group" >> /tmp/test.txt
body=$bodyOrgin"; 影响业务: "$group # 因为需要格式化发送邮件的内容,将拼接好的body信息写入文件中再做处理
echo $body | awk -F';' '{for(i=1;i<=NF;i++){print $i}}' > /tmp/messages.txt
# 将文件中出现的^M删除掉
sed -i 's/\x0D//g' /tmp/messages.txt
# 删除以空格开头的行前面的空格
sed -i 's/^\s*//g' /tmp/messages.txt # 由于zabbix无论是故障还是恢复都是要发邮件的,但是对于故障和恢复的邮件内容需要定制为不同的内容,因此需要先获取到是故障还是恢复
state=$(echo $subject | awk -F: '{print $2}') # 按照安心守护要求修改邮件正文内容
if [ $state == "PROBLEM" ]; then
sed -i 's/Trigger:/异常对象:/' /tmp/messages.txt
sed -i '/Trigger severity:/{h;d};/Item values:/{G}' /tmp/messages.txt
sed -i 's/Trigger severity:/异常等级:/' /tmp/messages.txt
sed -i 's/Item values:/异常原因:/' /tmp/messages.txt
sed -i '/Original event/d' /tmp/messages.txt
sed -i '/Trigger status:/d' /tmp/messages.txt
sed -i '$a发生时间: ' /tmp/messages.txt
sed -i "s/发生时间: /发生时间: $(date "+%Y-%m-%d %H:%M:%S")/" /tmp/messages.txt
# 把发生故障时的alertView插入alerts_view表
alertValue=$(grep "异常原因" /tmp/messages.txt | awk -F: 'BEGIN{ORS=""};{for(i=3;i<=NF;++i) {print $i}}')
echo "alertValue:$alertValue" >> /tmp/test.txt
mysql -u${user} -p${passwd} -h${host} -D${database} -e "UPDATE alerts_view set alertValue='${alertValue}' WHERE viewid = '${viewid}'" >/dev/null
sed -i 's/Warning/风险/' /tmp/messages.txt
sed -i 's/Disaster/宕机/' /tmp/messages.txt
else
sed -i 's/Trigger:/恢复对象:/' /tmp/messages.txt
sed -i 's/Item values:/恢复内容:/' /tmp/messages.txt
sed -i 's/影响业务/恢复业务/' /tmp/messages.txt
sed -i '/Original event/d' /tmp/messages.txt
sed -i '/Trigger status:/d' /tmp/messages.txt
sed -i '/Trigger severity:/d' /tmp/messages.txt
sed -i '$a发生时间: ' /tmp/messages.txt
sed -i "s/发生时间: /发生时间: $(date "+%Y-%m-%d %H:%M:%S")/" /tmp/messages.txt
fi /usr/local/bin/sendEmail -f monitor@wisedu.com -t "$to" -s smtp.exmail.qq.com -u "$subject" -o message-content-type=text -o message-charset=utf- -o message-file=/tmp/messages.txt -xu monitor@wisedu.com -xp anxinshouhu@ >>/tmp/.log

shell脚本发送邮件

(2)添加Media types

(3)给指定的用户添加Media

(4)配置Actions,为了业务需求定制Default message

(5)邮件展示

故障邮件展示:

故障恢复邮件展示:

Zabbix的通知功能以及自定义脚本告警的更多相关文章

  1. zabbix 自定义脚本监控activemq

    1. 编写获取activemq队列积压消息(check-amq.sh) #!/bin/bash QUEUENAME=$ MQ_IP='172.16.1.56' curl -uadmin:admin h ...

  2. zabbix自定义脚本监控服务器端口状态

    zabbix可以通过客户端的[net.tcp.port[<ip>,port]]该item监控项来判断本地/远程服务器TCP端口是否正常,不过当时没有想起来,就用了自定义脚本去写的,很久没有 ...

  3. zabbix 获取不到自定义脚本的值解决

    agent端: zabbix 自定义脚本 [root@localhost script]# cat check_ping.sh #!/bin/bash result=$(/usr/local/nagi ...

  4. 自学Zabbix3.10.1.5-事件通知Notifications upon events-媒介类型自定义脚本

    自学Zabbix3.10.1.5-事件通知Notifications upon events-媒介类型自定义脚本

  5. Zabbix如何设置脚本告警

    设置告警脚本的路径 # vim /etc/zabbix/zabbix_server.confAlertScriptsPath=/usr/lib/zabbix/alertscripts 创建脚本 在这里 ...

  6. cocos2d-js 安卓自定义本地通知功能

    安卓新手,笔记有理解不当的地方望指出,经过几天折腾终于可以实现类似ios的本地通知功能(ios就几行代码),可能有第三方sdk可以方便实现,暂时没去找 思路: 1. startService 和bin ...

  7. (48)zabbix报警媒介:自定义脚本Custom alertscripts

    自定义脚本媒介.zabbix会将信息传递给脚本,接下来你在脚本里面随意处理,一共会传递三个参数,按顺序接受也就是$1,$2,$3了,为了方便记忆,一般分别给他们赋值到To\Subject\body 配 ...

  8. Zabbix的LLD功能--Low-level discovery

    感觉这个主题是和一个主题是一个系列,而且更基础. 准备深入研究一下... 相关文档准备: https://www.zabbix.com/documentation/2.0/manual/discove ...

  9. [系统集成] RT(Request Tracker)执行自定义脚本及发送微信、短信的实现方法

    RT(Request Tracker)是一个基于 Perl 语言的开源状态跟踪和工作流系统,支持审批.权限管理等功能,中文化支持的也不错,可以作为企业的流程审批系统使用.可惜的是,该系统在国内使用的不 ...

随机推荐

  1. [老法新用]使用PADDING-TOP:(PERCENTAGE)实现响应式背景图片

    处理响应式布局中背景图片的简单方法是等比例缩放背景图片.我们知道宽度设为百分比的  <img> 元素,其高度会随着宽度的变化自动调整,且其宽高比不变.如果想在背景图片中实现同样的效果,我们 ...

  2. vue的props和$attrs

    过去我们在vue的父子组件传值的时候,我们先需要的子组件上用props注册一些属性: <template> <div> props:{{name}},{{age}} 或者 {{ ...

  3. scrum敏捷开发重点介绍

    参考: http://www.scrumcn.com/agile/scrum-knowledge-library/scrum.html https://www.zhihu.com/question/3 ...

  4. Hadoop生态圈-HBase的HFile创建方式

    Hadoop生态圈-HBase的HFile创建方式 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 废话不多说,直接上代码,想说的话都在代码的注释里面. 一.环境准备 list cr ...

  5. PHP里echo print print_r的区别

    echo ,print的区别在于echo 可以输出多个变量值,而print只有一个变量,做为一个字符串输出. 另一点区别在于echo 没有返回值,print有返回值1.print不能输出数组和对象. ...

  6. 修改home下的中文目录为英文目录

    原文地址:http://blog.csdn.net/esonbest1234/article/details/50729582 习惯问题,喜欢使用fedora为您在home目录下自创建的“桌面”.“文 ...

  7. 2015/11/5用Python写游戏,pygame入门(5):面向对象的游戏设计

    昨天的内容里有了运动的子弹,虽然我们只添加了一个子弹,但你可以看到我们需要记录子弹的x,y坐标,每次要更新它的坐标.如果我们想要有多颗子弹,就需要存储多个坐标.那时候处理起来就不显得那么简单,也许我们 ...

  8. Packet Tracer 5.0实验(一) 交换机的Telnet远程登录设置

    一.实验目标 掌握采用telnet方式配置交换机的方法 二.技术原理 配置交换机的管理IP地址(计算机的IP地址与交换机管理IP地址在同一网段): 为telnet用户配置用户名和登录口令: enabl ...

  9. openresty/1.11.2.1性能测试

    测试数据 ab -n -c -k http://127.0.0.1/get_cache_value nginx.conf lua_shared_dict cache_ngx 128m; server ...

  10. zookeeper图形工具——zkui

    虽然zookeeper安装包提供了客户端工具zkcli,但是命令特别少 ,每次想看看里面的节点信息特别费劲. 幸好有图形工具——zkui,https://github.com/echoma/zkui, ...