设为首页 收藏本站
查看: 1312|回复: 0

[经验分享] Zabbix的通知功能以及自定义脚本告警

[复制链接]

尚未签到

发表于 2018-1-2 10:10:14 | 显示全部楼层 |阅读模式
  本节内容:


  • 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.1/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.1/etc/zabbix_server.conf  

  添加如下配置:
  

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

  重启zabbix_server。
  (5)配置Actions

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

  2.shell脚本发邮件
  (1)先安装sendEmail

  

[iyunv@care local]# tar zxf sendEmail-v1.56.tar.gz  
[iyunv@care local]#
cp sendEmail-v1.56/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:
2016-08-10 Second>
###Modification: Please modify the variables host, user andpasswd.  

  
# 获取默认的邮件接收者,邮件主题,邮件正文
  
to
=$1  
subject
=$2  
bodyOrgin
=$3  

  
# 获取eventid
  
#eventid
=grep "event>
eventid=$(echo $bodyOrgin | grep "event>
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)" 2>/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" 2>/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}'" 2>/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-8 -o message-file=/tmp/messages.txt -xu monitor@wisedu.com -xp anxinshouhu@2015 2>>/tmp/22.log
  


shell脚本发送邮件  (2)添加Media types

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

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

  (5)邮件展示
  故障邮件展示:

  故障恢复邮件展示:

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-430741-1-1.html 上篇帖子: Zabbix监控 windows agent安装配置 下篇帖子: Zabbix 3.2.6通过SNMP和iDRAC监控DELL服务器
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表