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 = ...
随机推荐
- bzoj 2083: [Poi2010]Intelligence test——vecto+二分
Description 霸中智力测试机构的一项工作就是按照一定的规则删除一个序列的数字,得到一个确定的数列.Lyx很渴望成为霸中智力测试机构的主管,但是他在这个工作上做的并不好,俗话说熟能生巧,他打算 ...
- NGINX: 返回大 JSON 数据不完整的问题
说明: 内容全部来自 [ CSDN 金玮良 ] nginx 返回数据不完整的问题 当nginx 遇到大数据流时,会把数据先放在自己的缓冲区,然后一并发给客户端. 那如果这个结论成立, 那一次请求的数据 ...
- OPENId是什么, OAUTH 是什么
what is openId open id is said to be a protocol which uses url as username, so if a website supports ...
- HDU 1372 Knight Moves (广搜)
题目链接 Problem Description A friend of you is doing research on the Traveling Knight Problem (TKP) whe ...
- 分布式实时日志分析解决方案ELK部署架构
一.概述 ELK 已经成为目前最流行的集中式日志解决方案,它主要是由Beats.Logstash.Elasticsearch.Kibana等组件组成,来共同完成实时日志的收集,存储,展示等一站式的解决 ...
- [Leetcode Week16]Range Sum Query - Mutable
Range Sum Query - Mutable 题解 原创文章,拒绝转载 题目来源:https://leetcode.com/problems/range-sum-query-mutable/de ...
- ioctl( ) 函数
ioctl( )函数 本函数影响由fd参数引用的一个打开的文件. #include<unistd.h> int ioctl( int fd, int request, .../* void ...
- python实战===用python调用jar包(原创)
一个困扰我很久的问题,今天终于解决了.用python调用jar包 很简单,但是网上的人就是乱转载.自己试都不试就转载,让我走了很多弯路 背景:python3.6 32位 + jre 32位 + ...
- oracle to_char 返回毫秒级
select to_char(systimestamp,'yyyy-mm-dd hh24:mi:ssxff') time1, 关键在 systimestamp
- 【LOJbeta round1】ZQC的手办
NOI2012-超级钢琴的升级版. 用线段树维护最小值及其出现位置,接下来就跟超级钢琴一个做法了. #include<bits/stdc++.h> #define N 500010 #de ...