目录
分布式请求链路追踪_SkyWalking日志
分布式请求链路追踪_SkyWalking告警
分布式请求链路追踪_Skywalking自定义告警规则
POM中引入相关依赖
Skywalking8.4.0版本开始才支持收集日志功能,同时pom需引用以下依赖。
org.apache.skywalking
apm-toolkit-logback-1.x
8.5.0
Logback配置
在logback.xml中加入配置
%d{HH:mm:ss.SSS} [%thread] %-5level logger_name:%logger{36} -[%tid] - message:%msg%n
Skywalking通过gRPC上报日志
gRPC报告程序可以将收集到的日志发送给Skywalking OAP服务器上。
创建logback.xml文件中添加
%d{HH:mm:ss.SSS} [%thread] %-5level logger_name:%logger{36} -
[%tid] - message:%msg%n
打开你的agent/config/agent.config配置文件,添加如下配置信息, 注意skywalking的log通信用的grpc:
# 指定要向其报告日志数据的grpc服务器的主机
plugin.toolkit.log.grpc.reporter.server_host
=${SW_GRPC_LOG_SERVER_HOST:192.168.66.101}
# 指定要向其报告日志数据的grpc服务器的端口
plugin.toolkit.log.grpc.reporter.server_port
=${SW_GRPC_LOG_SERVER_PORT:11800}
# 指定grpc客户端要报告的日志数据的最大大小
plugin.toolkit.log.grpc.reporter.max_message
_size=${SW_GRPC_LOG_MAX_MESSAGE_SIZE:10485760}
# 客户端向上游发送数据时将超时多长时间。单位是秒
plugin.toolkit.log.grpc.reporter.upstream_ti
meout=${SW_GRPC_LOG_GRPC_UPSTREAM_TIMEOUT:30
}
注意:
注:gRPC报告程序可以将收集到的日志转发到SkyWalking OAP服务器或SkyWalking Satellite卫星。
测试
告警基本流程
每隔一段时间轮询Skywalking-collector收集到的链路追踪的数据, 再根据所配置的告警规则(如服务响应时间、服务响应时间百分 比)等,如果达到阈值则发送响应的告警信息。发送告警信息是以 线程池异步的方式调用webhook接口完成,从而开发者可以在指定的webhook接口中自行编写各种告警方式,钉钉告警、邮件告警等 等。
Skywalking默认支持7中通知:
web、grpc、微信、钉钉、飞书、华为weLink、slack
默认规则
Skywalking默认提供的 alarm-settings.yml ,定义的告警规则如下:
1、过去3分钟内服务平均响应时间超过1秒
2、服务成功率在过去2分钟内低于80%
3、服务90%响应时间在过去3分钟内高于1000毫秒
4、服务实例在过去2分钟内的平均响应时间超过1秒
5、端点平均响应时间过去2分钟超过1秒
告警规则
1、endpoint_percent_rule:规则名称,将会在告警消息体中展示,必须唯一,且以 _rule 结尾
2、metrics-name:度量名称
3、include-names:将此规则作用于匹配的实体名称上,实体名称可以是服务名称或端点名称等
4、exclude-names:将此规则作用于不匹配的实体名称上,实体名称可以是服务名称或端点名称等
5、threshold:阈值 op:操作符,目前支持 >、<、=
6、period:多久检测一次告警规则,即检测规则是否满足的时间窗口,与后端开发环境匹配
7、count:在一个period窗口中,如果实际值超过该数值将触发告警
8、silence-period:触发告警后,在silence-period这个时间窗口中不告警,该值默认和- -- --- 9、period相同。例如,在时间T这个瞬间触发了某告警,那么在(T+10)这个时间段,不会再次触发相 同告警。
10、message:告警消息体,{name} 会解析成规则名称
注意: 这些预定义的告警规则,打开config/alarm-settings.yml文件即可看到。
Webhook
Webhook表达的意思是,当告警发生时,将会请求的地址URL(用 POST方法)。警报消息将会以 application/json 格式发送出去。
举个栗子: 比如你的好友发了一条朋友圈,后端将这条消息推送给所有其他好友的客户端,就是 Webhook 的典型场景。
[{
"scopeId": 1,
"scope": "SERVICE",
"name": "serviceA",
"id0": 12,
"id1": 0,
"ruleName": "service_resp_time_rule",
"alarmMessage": "alarmMessage xxxx",
"startTime": 1560524171000
}]
参数:
1、scopeId、scope:作用域 name:目标作用域下的实体名称;
2、id0:作用域下实体的ID,与名称匹配;
3、id1:暂不使用;
4、ruleName: alarm-settings.yml 中配置的规则名称;
5、alarmMessage:告警消息体;
6、startTime:告警时间(毫秒),时间戳形式。
实时效果反馈
1.下列不属于Skywalking告警通知的是____。
A 钉钉
B 邮件
C 微信
D 抖音
2.Skywalking发送告警的基本原理是每隔一段时间 _____Skywalking-collector收集到的链路追踪的数据。
A 轮询
B 定时
C 记录
D 以上都是错误
默认规则
1、过去3分钟内服务平均响应时间超过1秒
2、服务成功率在过去2分钟内低于80%
3、服务90%响应时间在过去3分钟内高于1000毫秒
4、服务实例在过去2分钟内的平均响应时间超过1秒
5、端点平均响应时间过去2分钟超过1秒
自定义告警规则
service_response_time_rule:
#指定的规则
metrics-name: service_resp_time
op: ">"
# 阈值
threshold: 1 # 单位毫秒
# 多久检查一次当前的指标数据是否符合告警规则
period: 5
# 达到多少次告警后,发送告警消息
count: 1
# 告警消息内容
message: 服务{name}最近5分钟以内响应时间超过了1ms
测试
实时效果反馈
1.自定义Skywalking告警规则该count参数含义是____。
A 告警阈值
B 多久检查一次当前的指标数据是否符合告警规则
C 告警消息内容
D 达到多少次告警后,发送告警消息
2.自定义Skywalking告警规则该threshold参数含义是____。
A 告警阈值
B 多久检查一次当前的指标数据是否符合告警规则
C 告警消息内容
D 达到多少次告警后,发送告警消息