赞
踩
TIPS
本文基于Skywalking 6.6编写,理论支持Skywalking 6.0及更高版本。
Skywalking的告警由规则来定义。规则存放在 skywalking根目录/config/alarm-settings.yml
中。
该文件结构大致如下:
rules: endpoint_percent_rule: metrics-name: endpoint_percent include-names: - dubbox-provider exclude-names: - dubbox-consumer threshold: 75 op: < period: 10 count: 3 silence-period: 10 message: Successful rate of endpoint {name} is lower than 75% webhooks: - http://127.0.0.1/notify/ - http://127.0.0.1/go-wechat/
第一部分是规则定义。
规则的key的含义如下:
Skywalking默认提供的 alarm-settings.yml
,定义的告警规则如下:
Webhook表达的意思是,当告警发生时,将会请求的地址URL(用POST方法)。警报消息将会以 application/json
格式发送出去。消息例如:
[{ "scopeId": 1, "scope": "SERVICE", "name": "serviceA", "id0": 12, "id1": 0, "ruleName": "service_resp_time_rule", "alarmMessage": "alarmMessage xxxx", "startTime": 1560524171000 }, { "scopeId": 1, "scope": "SERVICE", "name": "serviceB", "id0": 23, "id1": 0, "ruleName": "service_resp_time_rule", "alarmMessage": "alarmMessage yyy", "startTime": 1560524171000 }]
其中:
public class SkyWalkingAlarm {
private Integer scopeId;
private String scope;
private String name;
private Integer id0;
private Integer id1;
private String ruleName;
private String alarmMessage;
private Long startTime;
// getters and setters...
}
Controller编写如下即可:
public class SkyWalkingAlarmController {
@PostMapping("/alarm")
public IMOOCJSONResult alarm(@RequestBody List<SkyWalkingAlarm> alarms) {
// 接收到告警后的业务处理
//根据服务发现组件上面的服务名称,找到对应的/actuator/info
// 进而找到对应的owner-email配置的值
return IMOOCJSONResult.ok();
}
}
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。