SkyWalking告警使用

SkyWalking告警

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

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

image-20210423171813377

所有的.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 {
    
        private int scopeId;
        private String scope;
        private String name;
        private String id0;
        private String id1;
        private String ruleName;
        private String alarmMessage;
        private long startTime;
    }
    
  2. 添加一个controller接口

        @GetMapping("slow")
        public String slow() throws InterruptedException {
            TimeUnit.SECONDS.sleep(2);
            return "slow";
        }   
    
    	@PostMapping("webhook")
        public void webhook(@RequestBody List<SkyWalkingAlarmMessage> messages) {
            messages.forEach(System.out::println);
        }
    
  3. 修改alarm-settings.yml配置文件

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

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

    image-20210423173807940

  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的告警配置

    image-20210508162139509

  6. 添加告警配置

    image-20210508162212545

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

    image-20210508162308639

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

    image-20210508162348875

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值