Skywalking系列博客8-告警
TIPS
本文基于Skywalking 6.6编写,理论支持Skywalking 6.0及更高版本。
Skywalking的告警由规则来定义。规则存放在 skywalking根目录/config/alarm-settings.yml
中。
该文件结构大致如下:
1 | rules: |
规则
第一部分是规则定义。
规则定义
规则的key的含义如下:
- endpoint_percent_rule:规则名称,将会在告警消息体中展示,必须唯一,且以
_rule
结尾; - metrics-name:度量名称,取值可在
skywalking根目录/config/official_analysis.oal
中找到,填写其中的key即可,对OAL感兴趣的,可前往 https://github.com/apache/skywalking/blob/v6.6.0/docs/en/concepts-and-designs/oal.md 阅读其定义; - include-names:将此规则作用于匹配的实体名称上,实体名称可以是服务名称或端点名称等
- exclude-names:将此规则作用于不匹配的实体名称上,实体名称可以是服务名称或端点名称等
- threshold:阈值
- op:操作符,目前支持 >、<、=
- period:多久检测一次告警规则,即检测规则是否满足的时间窗口,与后端开发环境匹配
- count:在一个period窗口中,如果实际值超过该数值将触发告警
- silence-period:触发告警后,在silence-period这个时间窗口中不告警,该值默认和period相同。例如,在时间T这个瞬间触发了某告警,那么在(T+10)这个时间段,不会再次触发相同告警
- message:告警消息体,
{name}
会解析成规则名称
默认规则
Skywalking默认提供的 alarm-settings.yml
,定义的告警规则如下:
- 过去3分钟内服务平均响应时间超过1秒
- 服务成功率在过去2分钟内低于80%
- 服务90%响应时间在过去3分钟内高于1000毫秒
- 服务实例在过去2分钟内的平均响应时间超过1秒
- 端点平均响应时间过去2分钟超过1秒
Webhook
Webhook表达的意思是,当告警发生时,将会请求的地址URL(用POST方法)。警报消息将会以 application/json
格式发送出去。消息例如:
1 | [{ |
其中:
- scopeId、scope:作用域,取值详见
https://github.com/apache/skywalking/blob/v6.6.0/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/source/DefaultScopeDefine.java
; - name:目标作用域下的实体名称;
- id0:作用域下实体的ID,与名称匹配;
- id1:暂不使用;
- ruleName:
alarm-settings.yml
中配置的规则名称; - alarmMessage:告警消息体;
- startTime:告警时间(毫秒),时间戳形式。
根据如上消息体,可定义入参对象如下:
1 | public class SkyWalkingAlarm { |
Controller编写如下即可:
1 | public class SkyWalkingAlarmController { |
评论系统未开启,无法评论!