python实现skywalking邮件告警webhook接口
1、介绍
Skywalking可以对链路追踪到数据进行告警规则配置,例如响应时间、响应百分比等。发送警告通过调用webhook接口完成。webhook接口用户可以自定义。
2、默认告警规则
告警配置文件:config/alarm-settings.yml
3、告警配置文件语法
rules:
<RULE_NAME>_rule: 规则名称,必须以“_rule”结尾
metrics-name: <VALUES> oal脚本中的度量名称
threshold 阈值
op 比较操作符“<、>、=”
period 多久检查一次当前指标数据,默认为分钟
count 表示到达多少次后发送告警信息
silence-period 在多久之内忽略相同的告警信息
message 告警内容
include-names 本规则告警生效的服务列表
webhooks:
告警信息产生后的回调地址,即调用这个接口发送出去。
4、配置alarm-settings.yml文件
5、重启skywalking服务
6、默认规则
Skywalking默认提供的 alarm-settings.yml ,定义的告警规则如下:
过去3分钟内服务平均响应时间超过1秒
服务成功率在过去2分钟内低于80%
服务90%响应时间在过去3分钟内高于1000毫秒
服务实例在过去2分钟内的平均响应时间超过1秒
端点平均响应时间过去2分钟超过1秒
7、警报消息application/json 格式
{
"scopeId": 1,
"scope": "SERVICE",
"name": "serviceA",
"id0": 12,
"id1": 0,
"ruleName": "service_resp_time_rule",
"alarmMessage": "alarmMessage xxxx",
"startTime": 1560524171000
}
解释:
scopeId、scope:作用域,取值详见 https://github.com/apache/skywalking/blob/v6.6.0/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/source/DefaultScopeDefine.java ;
name:目标作用域下的实体名称;
id0:作用域下实体的ID,与名称匹配;
id1:暂不使用;
ruleName: alarm-settings.yml 中配置的规则名称;
alarmMessage:告警消息体;
startTime:告警时间(毫秒),时间戳形式。
8、python实现邮件告警webhook接口
#!/usr/bin/env python
# _*_ coding: utf-8 _*_
# Tile:
# Author:shy
#https://www.cnblogs.com/yy-cola/p/8066020.html
#https://www.cnblogs.com/qumogu/p/14317010.html
#https://www.cnblogs.com/leijiangtao/p/11757639.html
from flask import Flask,request
import smtplib
from email.mime.text import MIMEText
import time
app = Flask(__name__)
@app.route("/send_mail",methods=["POST"])
def send_mail():
info = request.json
print(info,type(info))
for i in info:
alter_time = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime(i["startTime"] / 1000))
content = """
警告时间:%s
警告类型:%s
服务名称:%s
规则名称:%s
详细内容:%s
""" % (alter_time, i["scope"], i["name"], i["ruleName"], i["alarmMessage"])
print(content)
# 发送邮件
mail_host="mail.abc.com"
sender_user="sa@abc.com"
sender_pwd = "1qaz@WSX"
sender_addr="sa@abc.com"
rec_addr="test@abc.com"
message_mail = MIMEText(content,"plain",'utf-8')
message_mail['Subject'] = 'Skywalking链路监控告警'
message_mail['From'] = sender_addr
message_mail['To'] = rec_addr
server = smtplib.SMTP_SSL(mail_host)
server.connect(mail_host,465)
server.login(sender_user,sender_pwd)
server.sendmail(sender_addr,rec_addr,message_mail.as_string())
return "成功"
if __name__ == "__main__":
app.run("172.16.1.2","5000")
##########################################################
skywalking调用接口url:
http://172.16.1.2:5000/send_mail
python实现skywalking邮件告警webhook接口的更多相关文章
- 通过python为zabbix发送告警邮件
最近部署ZABBIX的邮件告警时,用刚学的python来写告警邮件脚本. 由于时间有限,我只对关键步骤做截图,对zabbix的基本配置略过. python代码如下 1 #!/usr/bin/pytho ...
- Python巡检Oracle表空间并邮件告警
最近,自学了Python基础,突发奇想,把以前通过shell自定义通过nagios实现Oracle表空间以及ASM以及备份的脚本改进下,首先感叹的是Python脚本看上去确实挺好的,效率还不错. 这是 ...
- Zabbix3.2邮件告警python脚本
一.概述及环境要求 1.概述 zabbix监控也起到重要作用,以下是使用python脚本发送告警邮件配置方法.之前使用过sendemail邮件报警但是发现邮件主题为中文时候会出现乱码的问题. 2.环境 ...
- 使用python实现钉钉告警通知功能
前言:日常工作中告警通知是必不可少的,一般会使用邮件.钉钉.企业微信等,今天分享一下使用python实现钉钉告警 一. 钉钉机器人创建 登录钉钉客户端,创建一个群,把需要收到报警信息的人员都拉到这个群 ...
- python实现skywalking的trace模块过滤和报警
skywalking本身的报警功能,用起来视乎不是特别好用,目前想实现对skywalking的trace中的错误接口进行过滤并报警通知管理员和开发.所以自己就用python对skywalking做了二 ...
- 更新日志 - BugHD 新增邮件告警功能
最近 BugHD 又新增了一些功能,包括邮件告警. issue 分享. issue 备注等,同时也做了性能优化.希望能够帮助你更高效地收集解决应用崩溃. BugHD 新增功能 1.邮件告警 除了 We ...
- zabbix监控配置与邮件告警
添加主机与主机组 进入web页面,在 配置-主机群组,创建主机群组 在 配置-主机,新建主机 在可见的名称中建议填写为类似 主机类型-主机名-IP或域名 的格式,如Web-Hyrule001-192. ...
- zabbix的自动发现、自定义添加监控项目、配置邮件告警
1.zabbix的自动发现这里的自动发现,所显示出来的是规则的上自动了现 然后 可以对其内容进行相关的配制,如时间或周期 注意:对于单个主机的规则,可以自行添加或删除, 但对于已经添加好了的规则,若需 ...
- 基础架构之日志管理平台及钉钉&邮件告警通知
接上一篇,我们继续解释如何把ELK跟钉钉及发送邮件功能结合起来,让我们及时的了解重要日志并快速反馈. Sentinel 安装,项目介绍在https://github.com/sirensolution ...
随机推荐
- Python 爬取 书籍
... import requests from bs4 import BeautifulSoup def gethtml(url,h): r = requests.get(url,headers=h ...
- python实现图像二值化
1.什么是图像二值化 彩色图像: 有blue,green,red三个通道,取值范围均为0-255 灰度图:只有一个通道0-255,所以一共有256种颜色 二值图像:只有两种颜色,黑色和白色,二值化就是 ...
- JS中bind、call和apply的作用以及在TS装饰器中的用法
目录 1,前言 1,call 1.1,例子 1.2,直接调用 1.3,将this指向另一个对象 1.4,传递参数 2,apply 2.1,例子 2.2,直接调用 2.3,将this指向另一个对象 2. ...
- [loj2978]杜老师
假设所有素数从小到大依次为$p_{1},p_{2},...,p_{k}$,我们将$x$转换为一个$k$位的二进制数,其中从低到高第$i$位为1当且仅当其$p_{i}$的幂次为奇数 不难发现以下两个性质 ...
- [bzoj2789]Letters
考虑A中第i次出现的j字符,最终位置一定是在B中第i次出现的j字符的位置,然后即求逆序对数量,cdq/线段树即可 1 #include<bits/stdc++.h> 2 using nam ...
- [atARC109F]1D Kingdom Builder
考虑最终有石子的位置的状态,判断一种状态是否可行 反过来,依次删除石子,删除条件是:当删除的石子是该段最后一个(即其两边都没有石子了),要求除其以外,每个连续段旁边的两个点都与其颜色不同 构造一种删除 ...
- [atARC094D]Worst Case
首先,容易证明满足条件的$ip_{i}$必然是一个前缀 将其看成一张二分图,$i$向满足$ip_{i}<xy$的$p_{i}$连边,即找到一个前缀满足其有完美匹配 二分枚举前缀长度$k$,根据h ...
- Elasticsearch分布式搜索和数据分析引擎-ElasticStack(上)v7.14.0
Elasticsearch概述 **本人博客网站 **IT小神 www.itxiaoshen.com Elasticsearch官网地址 https://www.elastic.co/cn/elast ...
- bilibili动画下载视频批量改名(python)
bilib应用 在微软商店中下载哔哩哔哩动画,虽然软件UI古老,但是贵在稳定和支持下载 安装以后搜索自己想要的视频,然后缓存下载 下载后进入下载的路径 视频文件重命名 打开自动命令的程序或者py脚本, ...
- c# Quartzs定时器的简单使用
使用背景: 首先想到倒计时,定时任务.大家想到的肯定就是定时器.那么定时器在web和winfrom程序中有着很大的作用.那在服务器端有没有像定时器一样的存在呢. 有了这些需求,我找到了第三方的组件 Q ...