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 插件使用流程图
2.2 导入pom
- 在ShenYu-Bootstrap导入对应的pom依赖。
<!-- shenyu logging-tencent-cls plugin start -->
<dependency>
<groupId>org.apache.shenyu</groupId>
<artifactId>shenyu-spring-boot-starter-plugin-logging-tencent-cls</artifactId>
<version>${project.version}</version>
</dependency>
<!-- shenyu logging-tencent-cls plugin end -->
2.3 启用插件
- 在
shenyu-admin
—> 基础配置 —> 插件管理->loggingTencentCls
,设置为开启。
2.4 配置插件
2.4.1 插件配置
配置项 | 类型 | 备注 | 描述 |
---|---|---|---|
secretId | String | 必填 | secretId |
secretKey | String | 必填 | secretKey |
endpoint | String | 必填 | 主机名,例如:ap-guangzhou.cls.tencentcs.com |
topic | String | 可选, 默认值:shenyu-topic | 日志存储topic |
sendThreadCount | String | 可选, 默认值:1 | 日志消费回调核心线程数 |
TotalSizeInBytes | Integer | 默认为 104857600 | 实例能缓存的日志大小上限, |
MaxSendThreadCount | Integer | 默认为 50 个 | client能并发的最多”goroutine”的数量, |
MaxBlockSec | Integer | 默认为 60000 毫秒 | 如果client可用空间不足,调用者在 send 方法上的最大阻塞时间。 如果超过这个时间后所需空间仍无法得到满足,send 方法会抛出TimeoutException。如果您希望 send 方法一直阻塞直到所需空间得到满足,可将该值设为负数。 |
MaxBatchSize | Integer | 默认为 512 1024 (512KB) | 当一个Batch中缓存的日志大小大于等于 batchSizeThresholdInBytes 时,该 batch 将被发送,最大可设置成 5MB |
MaxBatchCount | Integer | 默认为 4096 | 当一个Batch中缓存的日志条数大于等于 batchCountThreshold 时,该 batch 将被发送最大可设置成 40960 |
LingerMs | Integer | 默认为 2000 毫秒 | Batch从创建到可发送的逗留时间,最小可设置成 100 毫秒 |
Retries | Integer | 默认为 10 次 | 如果某个Batch首次发送失败,能够对其重试的次数,如果 retries 小于等于 0,该 ProducerBatch 首次发送失败后将直接进入失败队列 |
MaxReservedAttempts | Integer | 默认只保留最近的 11 次 | 每个Batch每次被尝试发送都对应着一个Attemp,此参数用来控制返回给用户的 attempt 个数,默认只保留最近的 11 次 attempt 信息。该参数越大能让您追溯更多的信息,但同时也会消耗更多的内存 |
BaseRetryBackoffMs | Integer | 默认为 100 毫秒 | 首次重试的退避时间 client采样指数退避算法,第 N 次重试的计划等待时间为 baseRetryBackoffMs 2^(N-1 |
MaxRetryBackoffMs | Integer | 默认为 50 秒 | 重试的最大退避时间 |
- 获取
topic
2.4.2 规则和选择器配置
- 插件和选择器配置。请查看: Selector and rule config.
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大小 | ||
rpcType | rpc类型 | ||
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插件,配置如下:
2.6.1.2 选择器配置
2.6.1.3 规则配置
2.6.1.4 发送请求
2.6.1.5 tencent sls 日志平台展示
3. 如何禁用插件
- 在
shenyu-admin
—> 基础配置 —> 插件管理->loggingTencentCls
,设置为关闭。