zabbix报警-邮件-钉钉
安装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 time mailto_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 msgImage msg = 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'] = sub
msg['From'] = me
msg['To'] = ",".join(to_list)
send_to = to_list
try:
server = smtplib.SMTP()
server.connect(mail_host)
server.login(mail_user, mail_pass)
server.sendmail(me, send_to, msg.as_string())
server.close()
return True
except Exception, e:
print str(e)
return False if __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-8 import sys
import urllib2
import json class 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_data
headers = {'Content-Type': 'application/json'}
req = urllib2.Request(self.webhook, post_data, headers)
content = urllib2.urlopen(req).read()
return content if __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
zabbix报警-邮件-钉钉的更多相关文章
- zabbix监控系列(4)之zabbix报警邮件无法发送
情况介绍 首先确保邮箱规则没有把报警邮件作为垃圾邮件拉黑了. 服务器断电重启后,发现zabbix报警邮件无法发送,断电之前是好好的,但是重启后不行了,于是查看maillog日志,发现这个错误: Hos ...
- zabbix报警邮件qq邮箱收不到的问题
出现这样问题的根本原因是因为zabbix对中文支持不太友好,乱码导致了邮件无法正常接收. 一.解决zabbix邮件内容为附件 1.安装发送邮件的mailx 以及windows文件转unix文件的命令 ...
- zabbix的搭建及操作(4)实现邮件,钉钉,微信报警
实现邮件报警 网页版邮箱中开启 POP3/SMTP/IMAP 生成授权码并记录 Server端安装配置邮件服务器 1.Yum安装邮件服务器 yum -y install mailx dos2unix ...
- zabbix创建钉钉报警
https://juejin.im/post/5c8708eef265da2dd168a1c1 简介 家里搭建了zabbix去监控主机,邮件报警什么的都太麻烦了,所以直接使用钉钉机器人来提醒,下面是我 ...
- 钉钉机器人zabbix报警
首先在钉钉群聊里添加一个自定义的机器人 并复制webhook的内容 https://oapi.dingtalk.com/robot/send?access_token=37e23308d1b84eb4 ...
- elk报警监控之sentinl 钉钉+邮件告警
注:我的elk sentinl版本都是6.5.1 前期知识 es的查询语法.es watcher使用方法. https://www.cnblogs.com/pilihaotian/p/5830754. ...
- zabbix钉钉报警
我们在钉钉上建立群聊,然后在群聊上添加钉钉机器人: 编写,脚本需要放在zabbix 的alertscripts目录下(如果不知道该目录的位置,可以使用find命令查找) find / -iname a ...
- zabbix 配合钉钉群机器人(webhook) 报警
首先建钉钉群,添加一个自定义机器人拿到webhook zabbix添加一个报警媒介 搞一个shell脚本来启动Python脚本(直接用zabbix调Python脚本不行,不知道什么原因) vim di ...
- zabbix利用python脚本发送钉钉报警
#!/usr/bin/python # -*- coding: utf-8 -*- import requests import json import sys import os headers = ...
随机推荐
- jsp05 指令与动作
JSP7个动作指令如下 : jsp:forward: 执行页面转向,将请求的处理转发到下一个页面. jsp:param: 用于传递参数,必须与其他支持参数曲标签一起使用. jsp:include: 用 ...
- jQuery简单日历插件版
先来看demo:http://codepen.io/jonechen/pen/xOgZMz 插件代码: ; (function($) { var Calendar = function(ele, op ...
- 【51NOD】1096 距离之和最小
[算法]数学 [题解] 其实就是求中位数,奇数个点就是最中间的点,偶数个点就是最中间两个点和它们之间的区域皆可(所以偶数不必取到两点正中央,取两点任意一点即可). 我们可以想象现在x轴上有n个点,我们 ...
- 深入理解 JavaScript(四)
前言 Bob 大叔提出并发扬了 S.O.L.I.D 五大原则,用来更好地进行面向对象编程,五大原则分别是: The Single Responsibility Principle(单一职责 SRP) ...
- Python脚本 - 查询磁盘的读写次数信息
测试系统为:Centos 6.7 Python版本为: 3.6.4 脚本功能:查看指定磁盘的读写及时间等相关信息 #!/usr/bin/env python3 from collections imp ...
- Perl中文件读取操作
Perl中文件读取操作 http://blog.csdn.net/yangxuan12580/article/details/51506216
- 虚拟机安装苹果系统 VMware 12安装Mac OS X 10.10
工具/原料 VMware Workstation Pro 12 (这个可以自己下载,并激活,你懂得) Unlocker 207 (链接:http://pan.baidu.com/s/1i43obDb ...
- html,获取iframe的window,document,自定事件与iframe通信
获取iframe的window对象js代码如下.注意:一定要在文档加载完成之后,才能获取到 var Iframe=document.getElementById("script" ...
- 【python】日志系统
来源: http://blog.csdn.net/wykgf/article/details/11576721 http://www.jb51.net/article/42626.htm http:/ ...
- Math.random易于记忆理解
产生随机数 Math.random*(Max-Min)+Min