經過前面2篇文章咱們搭建了SW的基礎環境,監控了微服務,能瞭解全部服務的運行狀況。可是當出現服務響應慢,接口耗時嚴重時咱們須要當即定位到問題,這就須要咱們今天的主角--監控告警,同時此篇也是SW系列的最後一篇。java
首先咱們認識一下SW DashBoard上的幾個關鍵參數,以下圖所示 web
skywalking發送告警的基本原理是每隔一段時間輪詢skywalking-collector收集到的鏈路追蹤的數據,再根據所配置的告警規則(如服務響應時間、服務響應時間百分比)等,若是達到閾值則發送響應的告警信息。發送告警信息是以線程池異步的方式調用webhook接口完成,(具體的webhook接口可使用者自行定義),從而開發者能夠在指定的webhook接口中自行編寫各類告警方式,釘釘告警、郵件告警等等。apache
告警的核心由一組規則驅動,這些規則定義在 config/alarm-settings.yml
,打開以後以下所示: json
告警規則的定義分爲兩部分。後端
告警規則主要有如下幾點網絡
SkyWalking 的告警 Webhook 要求對等方是一個 Web 容器. 告警的消息會經過 HTTP 請求進行發送, 請求方法爲 POST, Content-Type 爲 application/json, JSON 格式基於 List<org.apache.skywalking.oap.server.core.alarm.AlarmMessage, 包含如下信息.app
org.apache.skywalking.oap.server.core.source.DefaultScopeDefine
.[{ "scopeId": 1, "name": "serviceA", "id0": 12, "id1": 0, "alarmMessage": "alarmMessage xxxx", "startTime": 1560524171000 }, { "scopeId": 1, "name": "serviceB", "id0": 23, "id1": 0, "alarmMessage": "alarmMessage yyy", "startTime": 1560524171000 }]
@Data public class SwAlarmVO { private int scopeId; private String name; private int id0; private int id1; private String alarmMessage; private long startTime; }
@RestController @RequestMapping("sw") @Log4j2 public class AlarmController { @PostMapping("/alarm") public void alarm(@RequestBody List<SwAlarmVO> alarmList){ log.info("skywalking alarm message:{}",alarmList); //todo doalarm } }
修改告警配置,開放webhook接口異步
爲了模擬請求調用慢,咱們在代碼中使用Thread.sleep(1000)
增長接口耗時,而後等webhoook接口告警響應 分佈式
詳細信息以下:ide
[SwAlarmVO(scopeId = 2, name = dubbo - consumer - pid: 13812 @ jianzhang11, id0 = 28, id1 = 0, alarmMessage = Response time of service instance dubbo - consumer - pid: 13812 @ jianzhang11 is more than 1000ms in 2 minutes of last 10 minutes, startTime = 1573122018755), SwAlarmVO(scopeId = 2, name = dubbo - provider2 - pid: 14108 @ jianzhang11, id0 = 25, id1 = 0, alarmMessage = Response time of service instance dubbo - provider2 - pid: 14108 @ jianzhang11 is more than 1000ms in 2 minutes of last 10 minutes, startTime = 1573122018755)]
此時webhook能正常接收到sw的告警信息,後續的消息通知直接定製開發便可。
相關文章:
歡迎關注個人我的公衆號:JAVA日知錄