SkyWalking告警

SkyWalking提供了强大的监控告警功能,在监控到应用出现问题的时候,会调用webhook或者gRPC hook或者Wechat DingDing等工具报告警告信息

而且SkyWalking已经提供了许多已经写好的监控告警规则参考config目录下的oal

所有的.oal文件中的每一行对应一个metrics name 对应一种监控规则 SkyWalking使用特殊的语法进行监控度量指标的绑定

service_resp_time = from(Service.latency).longAvg();

from(Server.latency)表示从服务Service的维度来度量.longAvg()表示度量的平均响应时间

告警配置文件

config/alarm-settings.yml

里面提供了一些默认告警配置比如响应时长监控 数据库慢查询等

拿一个配置来举例

rules:
# Rule unique name, must be ended with `_rule`.
service_resp_time_rule: # 自定义监控项名称 必须以_rule结尾
metrics-name: service_resp_time # metrics-name 度量方式 对应.oal里面一项
op: ">" # 操作符
threshold: 1000 #阈值
period: 10 # 时间窗口 10表示10min
count: 3 # 超过阈值的次数
silence-period: 5 # 停顿时间 如果 5分钟之类多次出现这个告警 不会调用hook
message: Response time of service {name} is more than 1000ms in 3 minutes of last 10 minutes. # 调用 hook的消息模板

以上监控告警项翻译过来就是 一个Service服务下 平均响应时长在10分钟之类有3次以上超过1000ms就调用hook发送message中的数据(如果5min多次超过阈值不会调用2次hook)

其他的告警项可以参考官方文档进行配置 也可以参考官网文档中的oal语法进行自定义度量规则

https://skywalking.apache.org/docs/main/latest/en/setup/backend/backend-alarm/

https://skywalking.apache.org/docs/main/latest/en/concepts-and-designs/oal/

编写我们自定的webhook

SkyWalking在触发告警之后可以发送一个POST请求的webHook给我们的服务,我们的服务可以通过获取的他告警的message信息调用自己的短信服务 Wechat DingDing之类的服务通知对应的人员进行故障的处理

下面以简单的webhook为例

  1. 首先编写一个javabean来接受post发送过来的数据

    @Data
    public class SkyWalkingAlarmMessage {
    <span class="token keyword">private</span> <span class="token keyword">int</span> scopeId<span class="token punctuation">;</span>
    <span class="token keyword">private</span> String scope<span class="token punctuation">;</span>
    <span class="token keyword">private</span> String name<span class="token punctuation">;</span>
    <span class="token keyword">private</span> String id0<span class="token punctuation">;</span>
    <span class="token keyword">private</span> String id1<span class="token punctuation">;</span>
    <span class="token keyword">private</span> String ruleName<span class="token punctuation">;</span>
    <span class="token keyword">private</span> String alarmMessage<span class="token punctuation">;</span>
    <span class="token keyword">private</span> <span class="token keyword">long</span> startTime<span class="token punctuation">;</span>

    }

  2. 添加一个controller接口

        @GetMapping("slow")
    public String slow() throws InterruptedException {
    TimeUnit.SECONDS.sleep(2);
    return "slow";
    }
    <span class="token annotation punctuation">@PostMapping</span><span class="token punctuation">(</span><span class="token string">"webhook"</span><span class="token punctuation">)</span>
    <span class="token keyword">public</span> <span class="token keyword">void</span> <span class="token function">webhook</span><span class="token punctuation">(</span><span class="token annotation punctuation">@RequestBody</span> List<span class="token generics function"><span class="token punctuation">&lt;</span>SkyWalkingAlarmMessage<span class="token punctuation">&gt;</span></span> messages<span class="token punctuation">)</span> <span class="token punctuation">{<!-- --></span>
    messages<span class="token punctuation">.</span><span class="token function">forEach</span><span class="token punctuation">(</span>System<span class="token punctuation">.</span>out<span class="token operator">:</span><span class="token operator">:</span>println<span class="token punctuation">)</span><span class="token punctuation">;</span>
    <span class="token punctuation">}</span>

  3. 修改alarm-settings.yml配置文件

    webhooks:
    - http://127.0.0.1:9090/webhook #指定回调地址
    # - http://127.0.0.1/go-wechat/
  4. 然后多次请求 /slow接口造成响应时长慢的问题

  5. 最终/webhook收到Skywalking的告警信息

  6. 然后我们就可以拿到SkyWalking提供的告警信息来子定制自己的告警逻辑


使用nacos动态配置告警

  1. 安装nacos并启动 参考nacos官网文档略过

  2. 修改SkyWalking的application.yml配置文件中的configuration标签从none改为nacos

    configuration:
    selector: ${SW_CONFIGURATION:nacos}
  3. 修改nacos的相关配置 主要需要修改nacos的地址 端口 账号密码 namespace 和 group

     nacos:
    # Nacos Server Host
    serverAddr: ${SW_CONFIG_NACOS_SERVER_ADDR:127.0.0.1}
    # Nacos Server Port
    port: ${SW_CONFIG_NACOS_SERVER_PORT:8848}
    # Nacos Configuration Group
    group: ${SW_CONFIG_NACOS_SERVER_GROUP:skywalking}
    # Nacos Configuration namespace
    namespace: ${SW_CONFIG_NACOS_SERVER_NAMESPACE:test}
    # Unit seconds, sync period. Default fetch every 60 seconds.
    period: ${SW_CONFIG_NACOS_PERIOD:60}
    # Nacos auth username
    username: ${SW_CONFIG_NACOS_USERNAME:"nacos"}
    password: ${SW_CONFIG_NACOS_PASSWORD:"nacos"}
    # Nacos auth accessKey
    accessKey: ${SW_CONFIG_NACOS_ACCESSKEY:""}
    secretKey: ${SW_CONFIG_NACOS_SECRETKEY:""}
  4. 默认Skywalking 在nacos上的namespace为 test group为skywalking

  5. 在nacos上创建test的namespace 和 添加group 为skywalking的告警配置

  6. 添加告警配置

    注意 在nacos的dataId必须跟skywalking官网里面的Dynamic Configuration的key一致 参考官网https://skywalking.apache.org/docs/main/latest/en/setup/backend/dynamic-config/

  7. 此时skywalking就会监听到nacos上的动态配置的修改

注意 Skywalking只有部分配置支持动态配置 具体参考官方文档里面Dynamic Configuration 中支持的Conig Key

[转帖]SkyWalking告警使用的更多相关文章

  1. Apache SkyWalking 告警配置指南

    Apache SkyWalking Apache SkyWalking是分布式系统的应用程序性能监视工具(Application Performance Management,APM),专为微服务.云 ...

  2. 全链路跟踪skywalking简介

    该文章主要包括以下内容: skywalking的简介 skywalking的使用,支持多种调用中间件(httpclent,springmvc,dubbo,mysql等等) skywalking的tra ...

  3. Spring Cloud Alibaba - SkyWalking

    SkyWalking 简介 分布式链路跟踪是分布式系统的应用程序性能监视工具,专为微服务.云原生架构和基于容器(Docker.K8s)架构而设计: 也就是说Skywalking是用于微服务的" ...

  4. .NET6接入Skywalking链路追踪完整流程

    一.Skywalking介绍 Skywalking是一款分布式链路追踪组件,什么是链路追踪? 随着微服务架构的流行,服务按照不同的维度进行拆分,一次请求往往需要涉及到多个服务.互联网应用构建在不同的软 ...

  5. 基于SkyWalking的分布式跟踪系统 - 异常告警

    通过前面2篇文章我们搭建了SW的基础环境,监控了微服务,能了解所有服务的运行情况.但是当出现服务响应慢,接口耗时严重时我们需要立即定位到问题,这就需要我们今天的主角--监控告警,同时此篇也是SW系列的 ...

  6. SkyWalking配上告警更优秀

    前言 对于监控系统来说,不可能让人一直盯着监控看板,而更多的是以自动提醒的方式,比如邮件.短信或微信推送等,当达到或超出预设的告警指标时,就自动发送消息提醒,下面就来说说如何配置SkyWalking的 ...

  7. python实现skywalking邮件告警webhook接口

    1.介绍 Skywalking可以对链路追踪到数据进行告警规则配置,例如响应时间.响应百分比等.发送警告通过调用webhook接口完成.webhook接口用户可以自定义. 2.默认告警规则 告警配置文 ...

  8. 开源APM系统skywalking介绍与使用

    介绍 SkyWalking 创建与2015年,提供分布式追踪功能.从5.x开始,项目进化为一个完成功能的Application Performance Management系统.他被用于追踪.监控和诊 ...

  9. Skywalking部署常见问题以及注意事项

    Skywalking部署常见问题以及注意事项 Intro SkyWalking 创建与2015年,提供分布式追踪功能.从5.x开始,项目进化为一个完成功能的Application Performanc ...

  10. SkyWalking

    介绍 SkyWalking 创建与2015年,提供分布式追踪功能.从5.x开始,项目进化为一个完成功能的Application Performance Management系统.他被用于追踪.监控和诊 ...

随机推荐

  1. IDM HOSTS本地注册 屏蔽的网址

    127.0.0.1 registeridm.com127.0.0.1 www.registeridm.com127.0.0.1 www.internetdownloadmanager.com127.0 ...

  2. 斯坦福 UE4 C++ ActionRoguelike游戏实例教程 05.认识GameMode&自动生成AI角色

    斯坦福课程 UE4 C++ ActionRoguelike游戏实例教程 0.绪论 概述 本篇文章将会讲述UE中Gamemode的基本概念,并在C++中开发GameMode,为游戏设置一个简单的玩法:使 ...

  3. 【API进阶之路】太秃然了,老板要我一周内检测并导入一万个小时的视频

    摘要:假期结束后回来上班,走进电梯都有一种特别的感觉,电梯那个植发广告里的大哥看我的眼神好像和之前不太一样- 上回说到,老板奖励7天带薪假,我就回家玩耍了几天,顺便还帮兄弟发不脱当了一回"A ...

  4. 40个问题让你快速掌握Java多线程的精髓

    摘要:多线程可以理解为在同一个程序中能够同时运行多个不同的线程来执行不同的任务,这些线程可以同时利用CPU的多个核心运行. 多线程可以理解为在同一个程序中能够同时运行多个不同的线程来执行不同的任务,这 ...

  5. Python图像处理丨基于K-Means聚类的图像区域分割

    摘要:本篇文章主要讲解基于理论的图像分割方法,通过K-Means聚类算法实现图像分割或颜色分层处理. 本文分享自华为云社区<[Python图像处理] 十九.图像分割之基于K-Means聚类的区域 ...

  6. 云图说:云数据库 RDS for MySQL一键开通读写分离,轻松应对业务高峰期

    摘要:华为云数据库 RDS for MySQL提供一键开通读写分离功能,只需要一个连接地址,让您在业务高峰期不再迷茫,不再慌乱,so easy 的应对业务. 本文分享自华为云社区<云图说 | 第 ...

  7. 自己搭建git服务器:linux自己Gitlab服务

    github只能保存开源项目,私有项目要收费. 公司的git不想上传个人项目,比如我的博客:  https://www.zhoulujun.cn/.https://www.zhoulujun.co h ...

  8. 浅谈QUIC协议原理与性能分析及部署方案

    之前写过<http1.0 与 http1.1的区别> 与 <再谈HTTP2性能提升之背后原理-HTTP2历史解剖>,QUIC协议,现在nginx官方也即将支持.所以还是得跟上时 ...

  9. Solon Aop 特色开发(6)新鲜货提取器,提取Bean的函数进行定制开发

    Solon,更小.更快.更自由!本系列专门介绍Solon Aop方面的特色: <Solon Aop 特色开发(1)注入或手动获取配置> <Solon Aop 特色开发(2)注入或手动 ...

  10. Solon Aop 特色开发(2)注入或手动获取Bean

    Solon,更小.更快.更自由!本系列专门介绍Solon Aop方面的特色: <Solon Aop 特色开发(1)注入或手动获取配置> <Solon Aop 特色开发(2)注入或手动 ...