1. 概述

1.1 插件名称

  • Huawei Lts 日志插件

1.2 适用场景

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

1.3 插件功能

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

1.4 插件代码

  • 核心模块 shenyu-plugin-logging-huawei-lts
  • 核心类 `org.apache.shenyu.plugin.huawei.lts.LoggingHuaweiLtsPlugin
  • 核心类 `org.apache.shenyu.plugin.huawei.lts.client.HuaweiLtsLogCollectClient

1.5 添加自哪个shenyu版本

ShenYu 2.6.0

2. 如何使用插件

2.1 插件使用流程图

Logging-ElasticSearch插件 - 图1

2.2 导入pom

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

2.3 启用插件

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

2.4 配置插件

2.4.1 插件配置

Logging-ElasticSearch插件 - 图2

配置项描述类型备注
projectId华为云帐号的项目ID(project id)。String必填
accessKeyId华为云帐号的AK。String必填
accessKeySecret华为云帐号的SK。String必填
regionName云日志服务的区域。String必填
logGroupIdLTS的日志组ID。String必填
logStreamIdLTS的日志流ID。String必填
totalSizeInBytes单个producer实例能缓存的日志大小上限。int选填
maxBlockMs如果 producer 可用空间不足,调用者在 send 方法上的最大阻塞时间,单位为毫秒。默认为 60 秒(60000毫秒),建议为0秒。当maxBlockMs值>=0时,则阻塞到设置的时间,如果到达阻塞时间,还是不能获取到内存,即报错且丢弃日志。当maxBlockMs值=-1时,则一直阻塞到发送成功,且不会丢弃日志。long选填
ioThreadCount执行日志发送任务的线程池大小。int选填
batchSizeThresholdInBytes当一个 ProducerBatch 中缓存的日志大小大于等于 batchSizeThresholdInBytes 时,该 batch 将被发送。int选填
batchCountThreshold当一个 ProducerBatch 中缓存的日志条数大于等于 batchCountThreshold 时,该 batch 将被发送。int选填
lingerMs一个 ProducerBatch 从创建到可发送的逗留时间。int选填
retries如果某个 ProducerBatch 首次发送失败,能够对其重试的次数,建议为 3 次。如果 retries 小于等于 0,该 ProducerBatch 首次发送失败后将直接进入失败队列。int选填
baseRetryBackoffMs首次重试的退避时间。long选填
maxRetryBackoffMs重试的最大退避时间。long选填
giveUpExtraLongSingleLog超过1M的日志, 拆分后丢弃大于1M的数据。boolean选填
enableLocalTest是否开启跨云上报日志boolean选填
  • 获取 regionName

Logging-ElasticSearch插件 - 图3

区域名称RegionName
华北-北京二cn-north-2
华北-北京四cn-north-4
华北-北京一cn-north-1
华东-上海二cn-east-2
华东-上海一cn-east-3
华南-广州cn-south-1
华南-深圳cn-south-2
西南-贵阳一cn-southwest-2
  • 获取 projectId

Logging-ElasticSearch插件 - 图4

  • 获取 accessKeyIdaccessKeySecret

Logging-ElasticSearch插件 - 图5

  • 获取 logGroupIdlogStreamId

Logging-ElasticSearch插件 - 图6

Logging-ElasticSearch插件 - 图7

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 通过华为云lts日志平台收集日志

2.6.1.1 插件配置

  • 开启插件,并配置 huawei lts插件,配置如下:

Logging-ElasticSearch插件 - 图8

2.6.1.2 选择器配置

Logging-ElasticSearch插件 - 图9

2.6.1.3 规则配置

Logging-ElasticSearch插件 - 图10

2.6.1.4 发送请求

Logging-ElasticSearch插件 - 图11

2.6.1.5 hauwei lts日志平台展示

Logging-ElasticSearch插件 - 图12

3. 如何禁用插件

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