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,内容如下:
# 忽略路径数据上传
# 路径匹配规则
# /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形式
# 客户端参数两种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
# 大写变量形式
-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小时不挂