python实现skywalking邮件告警webhook接口

python实现skywalking邮件告警webhook接口,第1张

概述1、介绍   Skywalking可以对链路追踪到数据进行告警规则配置,例如响应时间、响应百分比等。发送警告通过调用webhook接口完成。webhook接口用户可以自定义。2、默认告警规则告警配置文件:config/alarm-settings.yml3、告警配置文件语法rules:<RULE_NAME>_rule:  规则名

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实现skywalking邮件告警webhook接口所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1187311.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-03
下一篇 2022-06-03

发表评论

登录后才能评论

评论列表(0条)

保存