赞
踩
该篇博客是Skywalking的告警模块的使用
官方文档:
https://github.com/apache/skywalking/blob/master/docs/en/setup/backend/backend-alarm.md
告警的核心由一组规则驱动,这些规则定义在config/ Alarm -settings.yml文件中。 告警规则的定义分为三部分。
定义范围和实体名称之间的关系
规则的key的含义如下:
endpoint_percent_rule | 规则名称,将会在告警消息体中展示,必须唯一,且以 _rule 结尾 |
metrics-name | 度量名称,取值可在 skywalking根目录/config/oal/*.oal 中找到,填写其中的key即可,对OAL感兴趣的,可前往 https://github.com/apache/skywalking/blob/master/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} 会解析成规则名称 |
在\config\oal
目录下
选取其中一个规则说明
以上规则含义:
取最近10分钟窗口,在这10分钟内的每一分钟单独计算服务响应时间,如果到达三次超过1s就产生告警,在产生告警后的5分钟之内不再重复告警。
Webhook表达的意思是,当告警发生时,将会请求的地址URL(用POST方法),警报消息将会以 application/json 格式发送出去。
消息事例:
[
{
"scopeId":1, //指的是告警的范围类型(定义常量见下文)
"scope":"SERVICE", //指的是告警的范围类型(定义常量见下文)
"name":"serviceA", //服务
"id0":"123", // 作用域实体的ID与名称匹配。使用关系范围时,它是源实体ID
"id1":"",
"ruleName":"service_resp_time_rule", // 规则名称
"alarmMessage":"alarmMessage xxxx", // 告警内容
"startTime":1560524171000 // 发生时间
}
]
public class AlarmMessage {
private int scopeId;
private String scope;
private String ruleName;
private String name;
private String id0;
private String id1;
private String alarmMessage;
private long startTime;
}
@RestController
@RequestMapping("")
public class SkyWalkingAlarmController {
@PostMapping("/alarm")
public void alarm(@RequestBody List<SkyWalkingAlarm> alarms) {
// 接收到告警后的业务处理
}
}
修改alarm-settings.yml
中的webhooks配置
重启oap后端服务生效
到这里 skywalking产生的告警就会发送到回调接口
告警这类的配置我们有可能会经常改动,每次都重启oap服务略显很low。没关系,skywalking帮我们解决了这个问题,就是动态配置
官方文档:传送门
SkyWalking配置大部分是通过application.yml OS系统环境变量设置的。同时,其中一些支持上游管理系统的动态设置。
目前,SkyWalking支持以下动态配置。
动态配置在application.yml文件中,我们使用zookeeper当配置中心,只要修改SW_CONFIGURATION
和SW_CONFIG_ZK_HOST_PORT
就可以,如果你想指定路径就修改SW_CONFIG_ZK_NAMESPACE
application.yml文件中的配置都可以使用环境变量注入
因为我们要把告警实现动态配置,所以我们要覆盖alarm-settings.yml
文件。在zookeeper的/default路径下创建节点名称为alarm.default.alarm-settings
,内容为alarm-settings.yml
文件的完整内容复制过去。
启动oap后端服务,观察启动日志,会打印新的告警配置信息。
修改zk中的节点alarm.default.alarm-settings
内容,再次观察日志,也会打印新的配置信息。
oap后端服务默认是一分钟同步动态配置一次。可以修改SW_CONFIG_ZK_PERIOD
进行变更。
IT-CLOUD :IT服务管理平台,集成基础服务,中间件服务,监控告警服务等。
IT-CLOUD-ACTIVITI6 :Activiti教程源码。博文在本CSDN Activiti系列中。
IT-CLOUD-ELASTICSEARCH :elasticsearch教程源码。博文在本CSDN elasticsearch系列中。
IT-CLOUD-KAFKA :spring整合kafka教程源码。博文在本CSDN kafka系列中。
IT-CLOUD-KAFKA-CLIENT :kafka client教程源码。博文在本CSDN kafka系列中。开源项目,持续更新中,喜欢请 Star~
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。