skywalking-告警逻辑
都是应用服务告警
现在的需求要支持动态更新规则配置
如果oap服务使用配置中心管理配置,skywalking支持动态加载-每分钟更新一次,这样不需要改代码,接入的时候只需要更新nacos配置就可以。skywalking会定时拉取配置
如果不用配置中心,则需要修改skywalking代码,从两方面考虑
读取rule配置有两个地方,一个是oap项目启动是会加载alarm-settings.yml配置文件—这个必须要有,没有会报错
在一个后面如果使用了配置中心,会定时拉去配置
org.apache.skywalking.oap.server.configuration.api.ConfigChangeWatcher#notify
所以如果修改需要从这两个地方入手,核心的部分不动
Skywalking告警大概流程 关键节点流程 告警配置接入oaprules:
service_resp_time_rule:
metrics-name: service_resp_time #指标名称
op: ">"
#三秒 阈值
threshold: 3
#四分钟---时间桶
period: 4
#大于等于2次---四分钟内有两分钟服务响应时间大于3秒
count: 2
silence-period: 1 #静默期---这个范围内不会报警
message: Response time of service {name} is more than 10ms in 1 minutes of last 10 minutes.
only-as-condition: false
tags:
level: WARNING
receivers: lisi
service_sla_rule:
metrics-name: service_sla
op: ">"
threshold: 100
period: 10
count: 1
silence-period: 1
message: Successful rate of service {name} is more than 1% in 1 minutes of last 10 minutes
only-as-condition: true
composite-rules:
comp_rule:
expression: service_resp_time_rule && service_sla_rule #上面两个告警条件都满足
message: Service {name} response time is more than 10ms and sla is more than 1%.
tags:
level: CRITICAL
receivers: zhangsan
以jvm上报数据说明
APM
定义JVM一些数据指标定义JVM一些数据指标,JVMMetric.proto文件,并且指标上传的服务,mvn package编译后会生成对应的class文件
OAP
JVM分发器
oal执行引擎会根据oal文件里面定义的jvm指标动态生成jvm指标类和对应的分发器
MetricsAggregateWorker 大概逻辑