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小时不挂

相关推荐
yxl874646461 天前
磐创PCTG-9013 Modbus转ProfibusDP工业协议转换器
网络·科技·物联网·gateway·信息与通信
__log2 天前
401鉴权问题完全指南:从“门卫拦人“到“畅通无阻“
gateway
暗夜猎手-大魔王2 天前
hermes源码学习8--Gateway 内部机制
人工智能·gateway
SRETalk2 天前
SkyWalking / Jaeger / ARMS 已经有了,还需要统一可观测平台吗
skywalking·apm·jaeger·flashcat·arms
云烟成雨TD4 天前
Spring AI 1.x 系列【52】可观测集成 SkyWalking
人工智能·spring·skywalking
JJJennie7775 天前
从苹果 2026 落地场景,看系统级 Agent 时代的隐私边界与 MAI Gateway 的企业Token治理
人工智能·gateway·apple
kakawzw5 天前
微服务组件源码6——Spring Gateway
spring·gateway
白露与泡影5 天前
Java 8老系统旁路接入AI Gateway:不升级JDK也能用AI
java·人工智能·gateway
是一个Bug6 天前
Nginx 与 API Gateway:从“小区门卫”到“商场总服务台”
运维·nginx·gateway
大G的笔记本6 天前
生产级 Spring Boot 网关完整实现方案
java·笔记·gateway