1. 概述

1.1 插件名称

  • Tencent cls 日志插件

1.2 适用场景

  • 收集日志到Tencent cls日志平台,并通过Tencent cls日志平台进行数据分析

1.3 插件功能

  • 网关接收客户端请求,向服务端转发请求,并将服务端结果返回给客户端.网关可以记录下每次请求对应的详细信息。
  • 插件便是记录访问日志并将访问日志发送到Tencent cls的插件.

1.4 插件代码

  • 核心模块 shenyu-plugin-logging-tencent-cls

  • 核心类 org.apache.shenyu.plugin.tencent.cls.LoggingTencentClsPlugin

  • 核心类 org.apache.shenyu.plugin.tencent.cls.client.TencentClsLogCollectClient

1.5 添加自哪个shenyu版本

ShenYu 2.5.1

2. 如何使用插件

2.1 插件使用流程图

Logging-Tencent cls日志插件 - 图1

2.2 导入pom

  • 在ShenYu-Bootstrap导入对应的pom依赖。
  1. <!-- shenyu logging-tencent-cls plugin start -->
  2. <dependency>
  3. <groupId>org.apache.shenyu</groupId>
  4. <artifactId>shenyu-spring-boot-starter-plugin-logging-tencent-cls</artifactId>
  5. <version>${project.version}</version>
  6. </dependency>
  7. <!-- shenyu logging-tencent-cls plugin end -->

2.3 启用插件

  • shenyu-admin —> 基础配置 —> 插件管理-> loggingTencentCls ,设置为开启。

2.4 配置插件

2.4.1 插件配置

Logging-Tencent cls日志插件 - 图2

配置项类型备注描述
secretIdString必填secretId
secretKeyString必填secretKey
endpointString必填主机名,例如:ap-guangzhou.cls.tencentcs.com
topicString可选, 默认值:shenyu-topic日志存储topic
sendThreadCountString可选, 默认值:1日志消费回调核心线程数
TotalSizeInBytesInteger默认为 104857600实例能缓存的日志大小上限,
MaxSendThreadCountInteger默认为 50 个client能并发的最多”goroutine”的数量,
MaxBlockSecInteger默认为 60000 毫秒如果client可用空间不足,调用者在 send 方法上的最大阻塞时间。
如果超过这个时间后所需空间仍无法得到满足,send 方法会抛出TimeoutException。如果您希望 send 方法一直阻塞直到所需空间得到满足,可将该值设为负数。
MaxBatchSizeInteger默认为 512 1024 (512KB)当一个Batch中缓存的日志大小大于等于 batchSizeThresholdInBytes 时,该 batch 将被发送,最大可设置成 5MB
MaxBatchCountInteger默认为 4096当一个Batch中缓存的日志条数大于等于 batchCountThreshold 时,该 batch 将被发送最大可设置成 40960
LingerMsInteger默认为 2000 毫秒Batch从创建到可发送的逗留时间,最小可设置成 100 毫秒
RetriesInteger默认为 10 次如果某个Batch首次发送失败,能够对其重试的次数,如果 retries 小于等于 0,该 ProducerBatch 首次发送失败后将直接进入失败队列
MaxReservedAttemptsInteger默认只保留最近的 11 次每个Batch每次被尝试发送都对应着一个Attemp,此参数用来控制返回给用户的 attempt 个数,默认只保留最近的 11 次 attempt 信息。该参数越大能让您追溯更多的信息,但同时也会消耗更多的内存
BaseRetryBackoffMsInteger默认为 100 毫秒首次重试的退避时间 client采样指数退避算法,第 N 次重试的计划等待时间为 baseRetryBackoffMs 2^(N-1
MaxRetryBackoffMsInteger默认为 50 秒重试的最大退避时间
  • 获取 topic

Logging-Tencent cls日志插件 - 图3

2.4.2 规则和选择器配置

2.5 Logging信息

采集的access log的字段如下:

字段名称含义说明备注
clientIp客户端IP
timeLocal请求时间字符串, 格式:yyyy-MM-dd HH:mm:ss.SSS
method请求方法(不同rpc类型不一样,http类的为:get,post等待,rpc类的为接口名称)
requestHeader请求头(json格式)
responseHeader响应头(json格式)
queryParams请求查询参数
requestBody请求Body(二进制类型的body不会采集)
requestUri请求uri
responseBody响应body
responseContentLength响应body大小
rpcTyperpc类型
status响应码
upstreamIp上游(提供服务的程序)IP
upstreamResponseTime上游(提供服务的程序)响应请求的耗时(毫秒ms)
userAgent请求的用户代理
host请求的host
module请求的模块
path请求的路径path
traceId请求的链路追踪ID需要接入链路追踪插件,如skywalking,zipkin

2.6 示例

2.6.1 通过腾讯云cls日志平台收集日志

2.6.1.1 插件配置

  • 开启插件,并配置 tencent cls插件,配置如下:

Logging-Tencent cls日志插件 - 图4

2.6.1.2 选择器配置

Logging-Tencent cls日志插件 - 图5

2.6.1.3 规则配置

Logging-Tencent cls日志插件 - 图6

2.6.1.4 发送请求

Logging-Tencent cls日志插件 - 图7

2.6.1.5 tencent sls 日志平台展示

Logging-Tencent cls日志插件 - 图8

3. 如何禁用插件

  • shenyu-admin —> 基础配置 —> 插件管理-> loggingTencentCls ,设置为关闭。