【弄nèng - Skywalking】入门篇(三)—— Skywalking告警模块使用

该篇博客是Skywalking的告警模块的使用
官方文档:
https://github.com/apache/skywalking/blob/master/docs/en/setup/backend/backend-alarm.md

一. 简介

告警的核心由一组规则驱动,这些规则定义在config/ Alarm -settings.yml文件中。 告警规则的定义分为三部分。

  1. 告警规则:它们定义了应该如何触发度量警报,应该考虑什么条件。
  2. Webhook:当警告触发时,回调HTTP API地址。
  3. gRPChook:远程gRPC方法的主机和端口,告警触发后调用。

实体

定义范围和实体名称之间的关系

  • Service: Service name
  • Instance: {Instance name} of {Service name}
  • Endpoint: {Endpoint name} in {Service name}
  • Database: Database service name
  • Service Relation: {Source service name} to {Dest service name}
  • Instance Relation: {Source instance name} of {Source service name} to {Dest instance name} of {Dest service name}
  • Endpoint Relation: {Source endpoint name} in {Source Service name} to {Dest endpoint name} in {Dest service name}

规则

规则的key的含义如下:

endpoint_percent_rule规则名称,将会在告警消息体中展示,必须唯一,且以 _rule 结尾
metrics-name度量名称,取值可在 skywalking根目录/config/oal/*.oal 中找到,填写其中的key即可,对OAL感兴趣的,可前往 https://github.com/apache/skywalking/blob/master/docs/en/concepts-and-designs/oal.md 阅读其定义
include-names将此规则作用于匹配的实体名称上,实体名称可以是服务名称或端点名称等
exclude-names将此规则作用于不匹配的实体名称上,实体名称可以是服务名称或端点名称等
threshold阈值
op操作符,目前支持 >、<、=
period多久检测一次告警规则,即检测规则是否满足的时间窗口,与后端开发环境匹配
count在一个period窗口中,如果实际值超过该数值将触发告警(按每一分钟计算)
silence-period触发告警后,在silence-period这个时间窗口中不告警,该值默认和period相同。例如,在时间T这个瞬间触发了某告警,那么在(T+10)这个时间段,不会再次触发相同告警
message告警消息体,{name} 会解析成规则名称

默认的metrics-name列表

\config\oal目录下
在这里插入图片描述

alarm-settings.yml文件说明

选取其中一个规则说明
在这里插入图片描述
以上规则含义:

取最近10分钟窗口,在这10分钟内的每一分钟单独计算服务响应时间,如果到达三次超过1s就产生告警,在产生告警后的5分钟之内不再重复告警。

二. Webhook 告警回调

Webhook表达的意思是,当告警发生时,将会请求的地址URL(用POST方法),警报消息将会以 application/json 格式发送出去。

消息属性如下

  • scopeId:范围。所有范围都在DefaultScopeDefine中定义。
  • name:目标范围实体名称。服务名称
  • id0:作用域实体的ID与名称匹配。使用关系范围时,它是源实体ID。
  • id1:使用关系范围时,它将是目标实体ID。否则为空。
  • ruleName:您在中配置的规则名称alarm-settings.yml。
  • alarmMessage:报警文本消息。
  • startTime:告警时间戳。

消息事例:

[
    {
        "scopeId":1, //指的是告警的范围类型(定义常量见下文)
        "scope":"SERVICE", //指的是告警的范围类型(定义常量见下文)
        "name":"serviceA", //服务
        "id0":"123", // 作用域实体的ID与名称匹配。使用关系范围时,它是源实体ID
        "id1":"", 
        "ruleName":"service_resp_time_rule", // 规则名称
        "alarmMessage":"alarmMessage xxxx", // 告警内容
        "startTime":1560524171000 // 发生时间
    }
]

对应JAVA实体类

public class AlarmMessage {
    private int scopeId;
    private String scope;
    private String ruleName;
    private String name;
    private String id0;
    private String id1;
    private String alarmMessage;
    private long startTime;
}

Controller编写

@RestController
@RequestMapping("")
public class SkyWalkingAlarmController {
    @PostMapping("/alarm")
    public void alarm(@RequestBody List<SkyWalkingAlarm> alarms) {
        // 接收到告警后的业务处理
    }
}

配置回调

修改alarm-settings.yml中的webhooks配置
在这里插入图片描述
重启oap后端服务生效
到这里 skywalking产生的告警就会发送到回调接口

三. 动态配置

告警这类的配置我们有可能会经常改动,每次都重启oap服务略显很low。没关系,skywalking帮我们解决了这个问题,就是动态配置
官方文档:传送门

SkyWalking配置大部分是通过application.yml OS系统环境变量设置的。同时,其中一些支持上游管理系统的动态设置。
目前,SkyWalking支持以下动态配置。
在这里插入图片描述

修改application.yml

动态配置在application.yml文件中,我们使用zookeeper当配置中心,只要修改SW_CONFIGURATIONSW_CONFIG_ZK_HOST_PORT就可以,如果你想指定路径就修改SW_CONFIG_ZK_NAMESPACE

application.yml文件中的配置都可以使用环境变量注入
在这里插入图片描述

使用配置中心

因为我们要把告警实现动态配置,所以我们要覆盖alarm-settings.yml文件。在zookeeper的/default路径下创建节点名称为alarm.default.alarm-settings,内容为alarm-settings.yml文件的完整内容复制过去。

测试

启动oap后端服务,观察启动日志,会打印新的告警配置信息。
修改zk中的节点alarm.default.alarm-settings内容,再次观察日志,也会打印新的配置信息。
oap后端服务默认是一分钟同步动态配置一次。可以修改SW_CONFIG_ZK_PERIOD进行变更。


项目推荐

IT-CLOUD :IT服务管理平台,集成基础服务,中间件服务,监控告警服务等。
IT-CLOUD-ACTIVITI6 :Activiti教程源码。博文在本CSDN Activiti系列中。
IT-CLOUD-ELASTICSEARCH :elasticsearch教程源码。博文在本CSDN elasticsearch系列中。
IT-CLOUD-KAFKA :spring整合kafka教程源码。博文在本CSDN kafka系列中。
IT-CLOUD-KAFKA-CLIENT :kafka client教程源码。博文在本CSDN kafka系列中。

开源项目,持续更新中,喜欢请 Star~

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值