400错误就是回调接口返回数据的属性对应不上
@PostMapping("/webhook")
public void webhook(@RequestBody List alarmMessageList)
自定义的实体类AlarmMessage有问题
只能去官网找了
告警实体类官网
java
@Getter
@EqualsAndHashCode
@RequiredArgsConstructor
@NoArgsConstructor(force = true)
public class AlarmEntity {
private final String scope;
private final int scopeId;
private final String name;
private final String id0;
private final String id1;
}
我使用的skywalking的版本是8.8.0
因为告警功能是基于这两个jar实现的
b站上,黑马的和图灵的讲师的实体类都不一样,所以不能直接抄,没有效果只能去分析skywalking的日志,看是不是发请求接口失败400了
完整代码如下:
实体类
java
@Getter
@EqualsAndHashCode
@RequiredArgsConstructor
@NoArgsConstructor(force = true)
public class AlarmMessage {
private final String scope;
private final int scopeId;
private final String name;
private final String id0;
private final String id1;
}
模拟超时的接口
java
@RestController
public class AlarmController {
@GetMapping("/timeout")
public String timeout() throws InterruptedException {
Thread.sleep(1500);
return "timeout";
}
}
告警回调接口
java
@RestController
public class WebHooks {
private List<AlarmMessage> lastList=new ArrayList<>();
@PostMapping("/webhook")
public void webhook(@RequestBody List<AlarmMessage> alarmMessageList){
lastList = alarmMessageList;
}
@GetMapping("/show")
public List<AlarmMessage> show(){
return lastList;
}
}
skywalking服务配置文件指定告警接口
多次请求http://localhost:8088/timeout
2分钟后一般会有告警信息出现
或者点击右上方的自动,再去请求接口,直到能出现告警
再去请求show接口,查看返回的数据
有数据就是成功了,如果是空数组,就是webhook的接口没有回调成功,去看看skywalking的日志吧!!