经过前面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接口告警响应
分布式
详细信息以下:
[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的告警信息,后续的消息通知直接定制开发便可。ide
相关文章:
请关注我的公众号:JAVA日知录