出自图灵四期

    skywalking告警的核心由一组规则驱动,这些规则定义在config/alarm-settings.yml文件中,告警规则的定义分为三部分:
    1、告警规则:它们定义了应该如何触发度量警报,应该考虑什么条件;
    2、网络钩子(Webhook}:当警告触发时,哪些服务终端需要被通知;
    3、gRPC钩子:远程gRPC方法的主机和端口,告警触发后调用;
    为了方便,skywalking发行版中提供了默认的alarm-setting.yml文件,包括一些规则,每个规则有英文注释,可以根据注释得知每个规则的作用:

    • 在最近10分钟的3分钟内服务平均响应时间超过1000ms
    • 最近10分钟内,服务成功率在2分钟内低于80%
    • 服务实例的响应时间在过去10分钟的2分钟内超过1000ms
    • 数据库访问{name}的响应时间在过去10分钟的2分钟内超过1000ms

    只要我们的服务请求符合alarm-setting.yml文件中的某一条规则就会触发告警。
    比如service_resp_time_rule规则:
    Skywalking告警通知 - 图1
    该规则表示服务{name}的响应时间在最近10分钟的3分钟内超过1000ms;

    测试:

    编写接口,模拟慢查询

    1. @RequestMapping("/info/{id}")
    2. public User info(@PathVariable("id") Integer id){
    3. try {
    4. Thread.sleep(2000);
    5. } catch (InterruptedException e) {
    6. e.printStackTrace();
    7. }
    8. return userService.getById(id);
    9. }

    回调接口

    1. @RequestMapping("/notify")
    2. public String notify(@RequestBody Object obj){
    3. //TODO 告警信息,给技术负责人发短信,钉钉消息,邮件,微信通知等
    4. System.err.println(obj.toString());
    5. return "notify successfully";
    6. }

    在config/alarm-settings.yml中配置回调接口,并重启skywalking服务
    Skywalking告警通知 - 图2
    测试访问:http://localhost:8000/user/info/1,满足告警规则后,控制台输出告警信息
    Skywalking告警通知 - 图3
    SkyWalking UI显示告警信息
    Skywalking告警通知 - 图4