對於服務的異常信息,比如接口有較長延遲,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
配置文件中添加這個鈎子,如下圖:
調用上面案例中的睡眠兩秒的接口,多調用幾次,則會觸發告警,控制台打印日志如下: