SkyWalking 监控告警

对于服务的异常信息,比如接口有较长延迟,skywalking也做出了告警功能

 

kywalking中有一些默认的告警规则,如下:

  • 最近3分钟内服务的平均响应时间超过1秒
  • 最近2分钟服务成功率低于80%
  • 最近3分钟90%服务响应时间超过1秒
  • 最近2分钟内服务实例的平均响应时间超过1秒

当然除了以上四种,随着Skywalking不断迭代也会新增其他规则,这些规则的配置在config/alarm-settings.yml配置文件中

 

每个规则都由相同的属性组成,这些属性的含义如下图:

 

 

 

如果想要调整默认的规则,比如监控返回的信息,监控的参数等等,只需要改动上述配置文件中的参数即可。

当然除了以上默认的几种规则,skywalking还适配了一些钩子(webhooks)。其实就是相当于一个回调,一旦触发了上述规则告警,skywalking则会调用配置的webhook,这样开发者就可以定制一些处理方法

 

当然这个钩子也是有些规则的,如下:

  • POST请求
  • application/json 接收数据
  • 接收的参数必须是AlarmMessage中指定的参数。

注意:AlarmMessage这个类随着skywalking版本的迭代可能出现不同,一定要到对应版本源码中去找到这个类,拷贝其中的属性。这个类在源码的路径:org.apache.skywalking.oap.server.core.alarm,如下图:

 

 

@Slf4j
@Api(tags = "AlarmController")
@RequestMapping("/alarm")
@RestController
public class AlarmController {

    @ApiOperation("接受skywalking告警")
    @PostMapping("/receive")
    public void receive(@RequestBody List<AlarmMessage> list) {
        log.info("/alarm/receive:" + JSON.toJSONString(list));
    }

}

接口定制完成后,需要在config/alarm-settings.yml配置文件中添加这个钩子,如下图:

 

 

 

 

 

 调用上面案例中的睡眠两秒的接口,多调用几次,则会触发告警,控制台打印日志如下:

 

posted @ 2021-11-24 15:26  草木物语  阅读(1273)  评论(0编辑  收藏  举报