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 = ...
随机推荐
- 几分钟内学习 Clojure
1.基本例子 ; 分号作为注释的开始 ; Clojure 用一种把元素用括号括起来的像列表一样的方式来书写,元素之间用空格隔开 ; clojure 解释器会把第一个元素当做是函数或者宏调用,其他的都作 ...
- 从无到有搭建SSM框架
框架 https://www.cnblogs.com/xiaoL/p/7753130.html log4j配置详解 https://www.cnblogs.com/SummerinShire ...
- 基于FPGA的HDTV视频图像灰度直方图统计算法设计
随着HDTV的普及,以LCD-TV为主的高清数字电视逐渐进入蓬勃发展时期.与传统CRT电视不同的是,这些高清数字电视需要较复杂的视频处理电路来驱动,比如:模数转换(A/D Converter).去隔行 ...
- 【51NOD-0】1118 机器人走方格
[算法]DP #include<cstdio> #include<algorithm> using namespace std; ,maxn=; int f[maxn][max ...
- bzoj 1197 DP
我们可以将这个问题转化为在n维空间中一共放m个n维球,求这m个球最多将这个空间分为不同的几个部分. 那么我们设w[i][j]代表i为空间放j个球分为的部分,那么w[i][j]=w[i][j-1]+w[ ...
- Tornado 安装及简单程序示例
1.安装步骤:tar xvzf tornado-3.2.tar.gz cd tornado-3.2 python setup.py build sudo python setup.py install ...
- Problems with Ribbon/Feign/Zuul retry
原文 https://github.com/spring-cloud/spring-cloud-netflix/issues/1577 I'm using Spring Cloud Camden SR ...
- 超级rtmp服务器和屌丝wowza
超级rtmp服务器和屌丝wowza http://blog.csdn.net/win_lin/article/details/11927973
- C11 标准特性研究
前言 - 需要点开头 C11标准是C语言标准的第三版(2011年由ISO/IEC发布),前一个标准版本是C99标准. 相比C99,C11有哪些变化呢!!所有的测试全部基于能够和标准贴合的特性平台. 但 ...
- 动画基础--基于Core Animation(1)
1.简介 上一篇文章[New learn]动画-基于UIView了解到了一些直接由UIView这个在UIKIT提供的类中提供的一些动画方法. 使用UIView的动画特性已经能够满足我们很多的需求,它是 ...