SkyWalking在6.x版本中新增了告警功能,其核心在于config/alarm-settings.yaml
文件中,该文件分为rules
和webhooks
两部分。
rules用于定义告警的条件,webhook则用于定于告警触发时,需要通知哪些服务。
告警规则配置项的说明:
- **Rule name:**规则名称,也是在告警信息中显示的唯一名称。必须以_rule结尾,前缀可自定义
- **Metrics name:**度量名称,取值为oal脚本中的度量名,目前只支持long、double和int类型。详见 Official OAL script
- **Include names:**该规则作用于哪些实体名称,比如服务名,终端名(可选,默认为全部)
- **Exclude names:**该规则作不用于哪些实体名称,比如服务名,终端名(可选,默认为空)
- **Threshold:**阈值
- OP: 操作符,目前支持 >、<、=
- **Period:**多久告警规则需要被核实一下。这是一个时间窗口,与后端部署环境时间相匹配
- **Count:**在一个Period窗口中,如果values超过Threshold值(按op),达到Count值,需要发送警报
- **Silence period:**在时间N中触发报警后,在TN -> TN + period这个阶段不告警。 默认情况下,它和Period一样,这意味着相同的告警(在同一个Metrics name拥有相同的Id)在同一个Period内只会触发一次
- **message:**告警消息
webhook会在触发告警时,向配置的地址发送http POST请求,并将Content-Type为application/json,也就是说会发送json格式的POST请求。
webhooks发送的字段包含
- **scopeId、scope:**所有可用的 Scope 详见 org.apache.skywalking.oap.server.core.source.DefaultScopeDefine
- **name:**目标 Scope 的实体名称
- **id0:**Scope 实体的 ID
- **id1:**保留字段,目前暂未使用
- **ruleName:**告警规则名称
- **alarmMessage:**告警消息内容
- **startTime:**告警时间,格式为时间戳
- **tags:**alarm-settings.yml中配置的tags
具体字段类型可以参考官方定义的AlarmMessage
由于邮件系统之前的通讯方式都是基于MQ进行的,所以需要定义一个Controller,用于接收Skywalking的请求,官方给出的请求数据示例为
所以可以定义接口为
接收到数据之后,如果不为空,就可以组装邮件发送给配置的相关开发或运维人员。
定义SkyWalking邮件的相关配置
定义告警字段的中文映射
定义SkyWalking的处理Controller