安装zabbix的时候已经配置了zabbix_server的脚本目录

AlertScriptsPath=/opt/app/zabbix/script

所以把邮件、钉钉、微信相关的脚本都放在/opt/zabbix/script目录下

邮件

效果图

<table width="800px" border="0" cellspacing="0", cellpadding="4"><tr bgcolor="#EFEBDE"><td >时间</td><td>at {EVENT.TIME} on {EVENT.DATE}</td><tr><tr bgcolor="#C0C0C0"><td >问题</td><td>{TRIGGER.NAME}</td><tr><tr bgcolor="#EFEBDE"><td>主机</td><td>{HOST.NAME}</td><tr><tr bgcolor="#C0C0C0"><td >级别</td><td>{TRIGGER.SEVERITY}</td><tr><tr bgcolor="#EFEBDE"><td >ID</td><td>{EVENT.ID}</td><tr><tr bgcolor="#C0C0C0"><td >相关图表</td><td><img src="cid:zbx_img" /></td><tr>
</table>

zabbix-action-Default message

#!/usr/bin/env python
# -*- coding:utf-8 -*-import HTMLParser
import urlparse
import urllib
import urllib2
import cookielib
import string
import os# 登录的主页面
hosturl = 'http://zabbix.heboan.com/screens.php'  # 根据自己的实际地址填写
# post数据接收和处理的页面(我们要向这个页面发送我们构造的Post数据)
posturl = 'http://zabbix.heboan.com/index.php'  # 从数据包中分析出,处理post请求的url# 设置一个cookie处理器,它负责从服务器下载cookie到本地,并且在发送请求时带上本地的cookie
cj = cookielib.LWPCookieJar()
cookie_support = urllib2.HTTPCookieProcessor(cj)
opener = urllib2.build_opener(cookie_support, urllib2.HTTPHandler)
urllib2.install_opener(opener)# 打开登录主页面(他的目的是从页面下载cookie,这样我们在再送post数据时就有cookie了,否则发送不成功)
h = urllib2.urlopen(hosturl)# 构造header,一般header至少要包含一下两项。这两项是从抓到的包里分析得出的。
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:14.0) Gecko/20100101 Firefox/14.0.1','Referer': '******'}
# 构造Post数据,他也是从抓大的包里分析得出的。
postData = {'name': 'admin',    # 用户名'password': 'zabbix',   # 密码'autologin': 1,'enter': 'Sign in'
}# 需要给Post数据编码
postData = urllib.urlencode(postData)# 通过urllib2提供的request方法来向指定Url发送我们构造的数据,并完成登录过程
request = urllib2.Request(posturl, postData, headers)
response = urllib2.urlopen(request)
text = response.read()def get_graph(graphid, period, image_name):host = 'zabbix.heboan.com'path = '/tmp/image/'  # 保存图片的地址#zabbix的图片的地址的构造url = "http://%s/chart2.php?graphid=%s&period=%s&width=500&height=100" % (host, graphid, period)img_req = urllib2.Request(url)png = urllib2.urlopen(img_req).read()file = path + image_name + '.png'with open(file,'wb') as f:f.write(png)

获取图片的脚本-zbx_g.sh

#!/usr/bin/env python
# -*- coding:utf-8 -*-import sys
from zbx_g import get_graph
import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.mime.image import MIMEImage
import timemailto_list=[]   # 收件人列表
mailto_list.append(sys.argv[1])
mail_host="smtp.xxx.com:25"   # 邮件服务器
mail_user="xxxx"              # 用户名
mail_pass="xxxxx"                # 密码
mail_postfix="xxxxx.com"        #  邮件后缀

title = sys.argv[2]
content = sys.argv[3]def send_mail(to_list, sub):# 增加图片def addimg(src, imgid):fp = open(src, 'rb')msgImage = MIMEImage(fp.read())fp.close()msgImage.add_header('Content-ID', imgid)return msgImagemsg = MIMEMultipart('related')#HTML代码msgtext = MIMEText(content, "html", "utf-8")msg.attach(msgtext)# 全文件路径,后者为ID 根据ID在HTML中插入的位置msg.attach(addimg("/tmp/image/cpu_load.png", "zbx_img"))me = mail_user + "@" + mail_postfix msg['Subject'] = submsg['From'] = memsg['To'] = ",".join(to_list)send_to = to_listtry:server = smtplib.SMTP()server.connect(mail_host)server.login(mail_user, mail_pass)server.sendmail(me, send_to, msg.as_string())server.close()return Trueexcept Exception, e:print str(e)return Falseif __name__ == '__main__':get_graph(790, 10800, 'cpu_load')send_mail(mailto_list, title)

发送邮件脚本-mail.sh

钉钉

效果图

创建一个群组,添加你需要发送报警人

点击个人头像--机器人管理

在机器人管理页面选择“自定义”机器人,输入机器人名字并选择要发送消息的群。如果需要的话,可以为机器人设置一个头像。点击“完成添加”

点击“复制”按钮,即可获得这个机器人对应的Webhook地址

>{TRIGGER.NAME}|
主机:{HOST.NAME}|
时间:{EVENT.DATE} {EVENT.TIME}|
等级:{TRIGGER.SEVERITY}|
详情:{ITEM.NAME}:{ITEM.VALUE}|
状态:{TRIGGER.STATUS}:{ITEM.VALUE1}|
事件ID:{EVENT.ID}

zabbix-action-Default message

#!/usr/bin/env python
# coding=utf-8import sys
import urllib2
import jsonclass DtalkRobot(object):"""自定义机器人的封装类"""def __init__(self, webhook):self.webhook = webhook# markdown类型def sendMarkdown(self, title, text):data = {"msgtype": "markdown","markdown": {"title": title,"text": text}}return self.post(data)def post(self, data):post_data = json.dumps(data)# print post_dataheaders = {'Content-Type': 'application/json'}req = urllib2.Request(self.webhook, post_data, headers)content = urllib2.urlopen(req).read()return contentif __name__ == "__main__":webhook = "你的钉钉webhook"#标题title = sys.argv[1]#内容text  = sys.argv[2].replace('|', "\n\n")robot = DtalkRobot(webhook)print robot.sendMarkdown(title, text)

发送钉钉脚本-ding.py

转载于:https://www.cnblogs.com/sellsa/p/9779263.html

zabbix报警-邮件-钉钉相关推荐

  1. python发邮件11002_【python发送zabbix报警邮件,SSL版本】mailman.py

    [python发送zabbix报警邮件,SSL版本]mailman.py#!/usr/local/bin/python3 # # via  @ 20150210 # SSL only ''' 用法: ...

  2. Zabbix 邮件报警、钉钉报警、微信报警

    文章目录 一.部署server端和agent端 1.实验准备 2.部署zabbix-server[监控端] (1)安装zabbix-server (2)启动mariadb (3)准备数据库及授权 (4 ...

  3. 【zabbix】自定义监控、邮件报警、企业微信报警、钉钉报警(详细)

    环境说明 centos 7 版本 zabbix 6.0 版本 主机名 IP地址 备注 zabbix 192.168.10.150 服务端,同时自我监控 zabbix-2 192.168.10.151 ...

  4. 五分钟实现Zabbix电话、短信、邮件、钉钉、飞书、企业微信等机器人报警

    Zabbix是现在企业用的比较多的开源监控系统,Zabbix电话短信报警更是运维不可缺少的报警渠道,假如半夜正在睡觉服务器异常了,这时候电话报警就非常必要. Spug推送助手针对常见的报警系统,内置好 ...

  5. zabbix配置步骤、操作及使用个人邮箱、企业微信、钉钉报警的配置

    一.监控端配置 步骤: 1.去官网下载包,从而有zabbix.repo,更新yum源 2.yum安装zabbix-server-mysql zabbix-web-mysql zabbix-agent ...

  6. Zabbix 钉钉报警

    话不多说,咱们直接进入正题 钉钉报警时基于zabbix,访问钉钉应用接口去推送的报警消息,所以我们需要一个在钉钉创建一个报警应用 1.  我做的钉钉报警是基于钉钉自定义应用进行推送的所以需要登录钉钉管 ...

  7. Python钉钉报警及Zabbix集成钉钉报警

    钉钉报警设置 创建群机器人 很多人学习python,不知道从何学起. 很多人学习python,掌握了基本语法过后,不知道在哪里寻找案例上手. 很多已经做案例的人,却不知道如何去学习更加高深的知识. 那 ...

  8. zabbix通过钉钉报警

    1.创建报警脚本  vim /usr/local/share/zabbix/alertscripts/dingalert.py #!/usr/bin/env python import json im ...

  9. zabbix配置钉钉报警

    一.  通过关键字方式报警: 1.  在钉钉中创建一个群聊: 2.  在群聊中添加一个机器人:在" 群设置 -- 智能群助手 -- 添加机器人 -- 选择自定义机器人 --填入机器人的信息  ...

最新文章

  1. 微信小程序server-1-搭建HTTPS server
  2. java中map可以为空吗_Java: Map里面的键和值可以为空吗?
  3. tomcat的端口修改
  4. 【Lucene4.8教程之六】QueryParser与Query子类:如何生成Query对象
  5. SQL Server 2008 R2:error 26 开启远程连接详解
  6. 在VS2008中使用jQuery智能感应
  7. win10卸载电脑管家就蓝屏_新电脑WIN10出现蓝屏 系统重装也不行
  8. python得安什么安装包_初学 Python 需要安装哪些软件?
  9. Codeforces Good bye 2015 B. New Year and Old Property dfs 数位DP
  10. osgEarth文档翻译1
  11. vs2010断点调试详细教程
  12. Document/View/Frame三口组深入探讨
  13. JSP文件过大 exceeding 65535 bytes limit
  14. 什么是跨域及怎么解决跨域问题?
  15. 阿里云交互式分析与Presto对比分析及使用注意事项
  16. XE中FMX操作ListBox,添加上千条记录(含图片)
  17. otg烧写linux内核,Linux——OTG方式烧写镜像文件步骤总结
  18. 数据库有char和nchar varchar 和nvarchar区别是啥?
  19. my web sites for HEP
  20. BlogBus发难:博客为什么不能随便搬家?

热门文章

  1. 职业选手的。cfg怎么用_靠演技出道,用直拍疯狂吸粉:“姐圈”选手怎么就出圈了呢?...
  2. android hero动画,主动画 (Hero animations)
  3. HDU 5128 The E-pang Palace 【暴力】
  4. 上海腾享-演播室LED平板灯-演播室恒力铰链吊杆
  5. 数据库连接的Persist Security Info参数说明
  6. 东北育才 DAY2组合数取mod (comb)
  7. 一起去追寻那大漠孤烟
  8. 玩转华为ENSP模拟器系列 | 配置LDP自动触发DoD请求功能示例
  9. 《空号》:聊聊我在阿里外包3个月学到了什么。。。
  10. 三大开源社区是哪几个_3个衡量开源社区健康的指标