SkyWalking异步采集spring gateway日志

SkyWalking异步采集spring gateway日志架构

环境及帮助文件

SkyWalking-OAP官方下载地址

SkyWalking-OAP帮助文档 -- 配置说明

SkyWalking-Agent官方下载地址

SkyWalking-Agent帮助文档 -- 配置说明

Agent is available for JDK 8 - 21

Oracle JDK8u202(Oracle JDK8最后一个非商业版本) 下载地址:Oracle JDK8u202

【重点知识】

异步采集相关通用配置见:

SkyWalking集成Kafka实现日志异步采集经验总结_skywalking kafka-CSDN博客

下面重点列出gateway集成上的差异

一、拷贝对应版本的gateway插件到插件目录

1、确认自己使用的gateway版本

如:下面是3.1.9

1、{skywalking-agent}/apm-spring-cloud-gateway-3.x-plugin-9.4.0.jar 拷贝到 {skywalking-agent}/plugins

二、拷贝数据压缩插件到插件目录

说明:集成其他应用或组件同样适用

{skywalking-agent}/optional-reporter-plugins/zstd-jni-1.4.3-1.jar拷贝到 {skywalking-agent}/plugins

zstd相比snappy-java-1.1.7.3.jar更耗CPU,但它的压缩比非常大,过万个pod的大型系统推荐使用。

三、拷贝链路过滤插件到插件目录

说明:集成其他应用或组件同样适用

{skywalking-agent}/optional-reporter-plugins/apm-trace-ignore-plugin-9.4.0.jar拷贝到 {skywalking-agent}/plugins

并在agent的config目录创建文件:apm-trace-ignore-plugin.config,内容如下:

python 复制代码
#  忽略路径数据上传
#  路径匹配规则
#  /path/?   单个字符
#  /path/*   多个字符
#  /path/**  多个字符和多级路径
#  多个规则使用逗号","分割
# 注意: 有些路径需要带要协议名称,是否需要带上参考sw-ui页面采集到的url数据
trace.ignore_path=${SW_AGENT_TRACE_IGNORE_PATH:GET:/actuator/**,/eureka/**}

常见问题

Q1:报NullPointer,打印堆栈异常与fastjson有关

A:这个CPU指标采样插件不要用:trace-sampler-cpu-policy-plugin-9.4.0.jar(其他几个低些的版本也一样),当然,如果你没报这个错,用了就用了也不用删除。

附件

附件一:lz4压缩算法

lz4压缩算法 --- 压缩速度快

GitHub - lz4/lz4: Extremely Fast Compression algorithm

附件二:snappy压缩工具

snappy压缩算法 --- 压缩速度快

GitHub - google/snappy: A fast compressor/decompressor

附件三:Zstd压缩算法

Zstd压缩算法 --- 压缩比高,CPU比较富裕时此算法

GitHub - facebook/zstd: Zstandard - Fast real-time compression algorithm

附件四:Kafka可视化管理工具

-) Kafka Map -- 国产、开源,通过配置kafka地址实现管理(作者使用)

kafka-map: 一个美观简洁且强大的kafka web管理工具。

-) kafka CMAK -- 通过配置zookeeper地址实现管理(作者使用)

GitHub - yahoo/CMAK: CMAK is a tool for managing Apache Kafka clusters

-) kafka-monitor -- 开源

https://github.com/linkedin/kafka-monitor/wiki

-) kafka-eagle -- 商业软件(收费)

EFAK

等等

附件五:客户端配置示例

客户端参数两种key形式

bash 复制代码
# 客户端参数两种key形式
-Dskywalking.agent.service_name=smet-rpc-service
-javaagent:/app/saashealth/skywalking-agent/skywalking-agent-9.2.0/skywalking-agent.jar
-Dskywalking.plugin.kafka.bootstrap_servers=10.130.***.92:19092
-Dskywalking.collector.backend_service=10.130.***.92:11801

大写变量形式

bash 复制代码
-DSW_AGENT_NAME=smet-rpc-service \
-javaagent:/app/saashealth/skywalking-agent/skywalking-agent-9.2.0/skywalking-agent.jar \
-DSW_KAFKA_BOOTSTRAP_SERVERS=10.130.***.92:19092 \
-DSW_AGENT_COLLECTOR_BACKEND_SERVICES=10.130.***.92:11801 \

附件六:SkyWalking-OAP配置最佳实践

这里只对几个关键的参数进行说明,这些参数经常是成功实施的关键所在:

1、SW_STORAGE_ES_FLUSH_INTERVAL 默认5秒,这里设置10s

2、SW_STORAGE_ES_CONCURRENT_REQUESTS 默认4,这里设置为2

3、SW_STORAGE_ES_INDEX_SHARDS_NUMBER -- 这个有资料显示用ES节点数*2,但作者告诉你,你只要设置为2就行了,这个2将是图中这个2,另外几个索引是10(2*5)个分区

注意

  • 修改oap配置需要在重启oap后删除ES索引,oap会自动按新分区数重建
  • 上图几个G只是30分钟的数据(因为作者30分钟前有删除所有索引数据)

4、SW_STORAGE_ES_INDEX_REPLICAS_NUMBER ES 副本数量设置为0即可

5、SW_KAFKA_FETCHER_CONSUMERS 默认2,不变

6、SW_KAFKA_FETCHER_PARTITIONS 单个消费者消费多少个分区:这里设5,那么2个消费都一共消费10个分区。实际kafka10个分区,这里所有pod(3个集群,每个集群4个oap的pod,共12个oap的pod)都消费所有分区。下图可以看到kafka topic的分区数量

7、SW_KAFKA_FETCHER_PARTITIONS_FACTOR -- 分区因子,可以是kafka topic的总分区数,也可以是小数,比如:0.2 (表示消费的topic的数量占总数量的比例) 。作者设置为10

总之,读者在实际项目中根据上面的信息结合实际理论上可以优化出一套可行的配置。保证7*24小时不挂

相关推荐
PXM的算法星球4 天前
spring gateway配合nacos实现负载均衡
spring·gateway·负载均衡
1990_super5 天前
使用ceph-deploy安装和配置RADOS Gateway (RGW)并使用S3访问集群
ceph·gateway
北极糊的狐7 天前
接口返回504 Gateway Time-out 错误,这意味着请求在网关或代理服务器等待上游服务器响应时超时。以下是可能的原因和排查建议:
数据库·gateway
sg_knight8 天前
Spring Cloud Gateway全栈实践:动态路由能力与WebFlux深度整合
java·spring boot·网关·spring·spring cloud·微服务·gateway
放纵日放纵10 天前
微服务—Gateway
微服务·架构·gateway
你我约定有三11 天前
分布式微服务--GateWay(1)
java·开发语言·分布式·微服务·架构·gateway
William一直在路上14 天前
KONG API Gateway中的核心概念
网络·gateway·kong
Java牛马17 天前
SpringCloud之Gateway
网关·spring cloud·gateway·路由·过滤器·断言
yh云想17 天前
《微服务SpringCloud架构实践指南:从Nacos到Gateway的全面解析》
spring cloud·nacos·gateway·openfeign·filter