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接口的更多相关文章

  1. 通过python为zabbix发送告警邮件

    最近部署ZABBIX的邮件告警时,用刚学的python来写告警邮件脚本. 由于时间有限,我只对关键步骤做截图,对zabbix的基本配置略过. python代码如下 1 #!/usr/bin/pytho ...

  2. Python巡检Oracle表空间并邮件告警

    最近,自学了Python基础,突发奇想,把以前通过shell自定义通过nagios实现Oracle表空间以及ASM以及备份的脚本改进下,首先感叹的是Python脚本看上去确实挺好的,效率还不错. 这是 ...

  3. Zabbix3.2邮件告警python脚本

    一.概述及环境要求 1.概述 zabbix监控也起到重要作用,以下是使用python脚本发送告警邮件配置方法.之前使用过sendemail邮件报警但是发现邮件主题为中文时候会出现乱码的问题. 2.环境 ...

  4. 使用python实现钉钉告警通知功能

    前言:日常工作中告警通知是必不可少的,一般会使用邮件.钉钉.企业微信等,今天分享一下使用python实现钉钉告警 一. 钉钉机器人创建 登录钉钉客户端,创建一个群,把需要收到报警信息的人员都拉到这个群 ...

  5. python实现skywalking的trace模块过滤和报警

    skywalking本身的报警功能,用起来视乎不是特别好用,目前想实现对skywalking的trace中的错误接口进行过滤并报警通知管理员和开发.所以自己就用python对skywalking做了二 ...

  6. 更新日志 - BugHD 新增邮件告警功能

    最近 BugHD 又新增了一些功能,包括邮件告警. issue 分享. issue 备注等,同时也做了性能优化.希望能够帮助你更高效地收集解决应用崩溃. BugHD 新增功能 1.邮件告警 除了 We ...

  7. zabbix监控配置与邮件告警

    添加主机与主机组 进入web页面,在 配置-主机群组,创建主机群组 在 配置-主机,新建主机 在可见的名称中建议填写为类似 主机类型-主机名-IP或域名 的格式,如Web-Hyrule001-192. ...

  8. zabbix的自动发现、自定义添加监控项目、配置邮件告警

    1.zabbix的自动发现这里的自动发现,所显示出来的是规则的上自动了现 然后 可以对其内容进行相关的配制,如时间或周期 注意:对于单个主机的规则,可以自行添加或删除, 但对于已经添加好了的规则,若需 ...

  9. 基础架构之日志管理平台及钉钉&邮件告警通知

    接上一篇,我们继续解释如何把ELK跟钉钉及发送邮件功能结合起来,让我们及时的了解重要日志并快速反馈. Sentinel 安装,项目介绍在https://github.com/sirensolution ...

随机推荐

  1. Vue3学习(十一)之 table表格组件的使用

    一.前言 大约有两周没学习更文,不是懒,而是没心情,相亲路屡战屡败,着实很影响心情. 我想这世上对我而言,最难的事,莫过于恋爱结婚了,再一次经历了见光死的高光时刻. 二.又见Ant Design Vu ...

  2. Django笔记&教程 6-4 forms进阶操作,重写forms方法

    Django 自学笔记兼学习教程第6章第4节--forms进阶操作,重写forms方法 点击查看教程总目录 1 - 重写clean方法 在本章第三节中,我们举了个注册学生账号的例子,里面我们使用模型来 ...

  3. Django 小实例S1 简易学生选课管理系统 5 实现注册功能

    Django 小实例S1 简易学生选课管理系统 第5节--实现注册功能 点击查看教程总目录 作者自我介绍:b站小UP主,时常直播编程+红警三,python1对1辅导老师. 本文涉及到的新的额外知识点: ...

  4. Spring AOP及事务配置三种模式详解

    Spring AOP简述 Spring AOP的设计思想,就是通过动态代理,在运行期对需要使用的业务逻辑方法进行增强. 使用场景如:日志打印.权限.事务控制等. 默认情况下,Spring会根据被代理的 ...

  5. java开发环境搭建,配置

    java开发环境搭建 下载jdk8的地址 是oracle的 安装JDK 下载电脑对应的版本 双击安装JDK 记住安装路径 配置环境变量 我的电脑/此电脑 右键属性 高级设置 环境变量 点击新建 变量名 ...

  6. [atARC070E]NarrowRectangles

    记$len_{i}=r_{i}-l_{i}$,即第$i$个区间的长度 用$f_{i,j}$表示前$i$个区间合法,第$i$个区间位于$[j,j+len_{i}]$的最小代价,暴力dp的时间复杂度为$o ...

  7. 21天从Java转向Go之第三天——初出茅庐

    名称 Go中25个关键字 只能在语法允许的地方使用,不能做为名称 break default func interface select case defer go map struct chan e ...

  8. 面向对象编程之Python学习一

    在实际的程序设计中,使用Java面向对象编程方法编写算法能够很清楚的理解其来龙去脉. 习惯了面向对象思维,学习Python也自然使用这种思维. 目前,由于Python很多软件包能够容易的获取和利用,人 ...

  9. IDEA 2021.2.3 安装与破解教程

    首先说明,大部分情况下,花10块钱都可以在淘宝找人直接帮你完美解决这个资源问题 所以千万不要相信一些所谓的百度结果,一般都是花费了时间却最后无法解决破解的问题 我相信任何一个想要学习软件开发的人一定要 ...

  10. 洛谷 P6177 - Count on a tree II/【模板】树分块(树分块)

    洛谷题面传送门 好家伙,在做这道题之前我甚至不知道有个东西叫树分块 树分块,说白了就是像对序列分块一样设一个阈值 \(B\),然后在树上随机撒 \(\dfrac{n}{B}\) 个关键点,满足任意一个 ...