Spring Cloud【SkyWalking日志、SkyWalking告警 、Skywalking自定义告警规则】(十五)

 

目录

分布式请求链路追踪_SkyWalking日志

分布式请求链路追踪_SkyWalking告警 

分布式请求链路追踪_Skywalking自定义告警规则


分布式请求链路追踪_SkyWalking日志

POM中引入相关依赖 

Skywalking8.4.0版本开始才支持收集日志功能,同时pom需引用以下依赖。

<dependency>
   <groupId>org.apache.skywalking</groupId>
   <artifactId>apm-toolkit-logback-1.x</artifactId>
   <version>8.5.0</version>
</dependency>

 Logback配置

在logback.xml中加入配置

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
   <appender name="console" class="ch.qos.logback.core.ConsoleAppender">
       <!-- 日志输出编码 -->
       <encoder class="ch.qos.logback.core.encoder.LayoutWrappingEncoder">
           <layout class="org.apache.skywalking.apm.toolkit.log.logback.v1.x.TraceIdPatternLogbackLayout">
               <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level logger_name:%logger{36} -[%tid] - message:%msg%n</pattern>
           </layout>
       </encoder>
   </appender>
   <root level="info">
       <appender-ref ref="console"/>
   </root>
</configuration>

Skywalking通过gRPC上报日志

gRPC报告程序可以将收集到的日志发送给Skywalking OAP服务器上。

创建logback.xml文件中添加

<appender name="log"
class="org.apache.skywalking.apm.toolkit.log.logback.v1.x.log.GRPCLogClientAppender">
        <!-- 日志输出编码 -->
        <encoder class="ch.qos.logback.core.encoder.LayoutWrappingEncoder">
            <layout class="org.apache.skywalking.apm.toolkit.log.logback.v1.x.TraceIdPatternLogbackLayout">
                <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level logger_name:%logger{36} -
[%tid] - message:%msg%n</pattern>
            </layout>
        </encoder>
    </appender>

    <root level="info">
        <appender-ref ref="console"/>
        <appender-ref ref="log"/>
    </root>

打开你的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告警 

告警基本流程 

每隔一段时间轮询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 以上都是错误

分布式请求链路追踪_Skywalking自定义告警规则

默认规则

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 达到多少次告警后,发送告警消息

猜你喜欢

转载自blog.csdn.net/m0_58719994/article/details/131927005