SkyWalking集成Kafka实现日志异步采集经验总结

 SkyWalking日志异步采集架构

【重点知识】

1、【Agent】kafka-reporter-plugin-x.x.x.jar包放plugins目录后必走kafka(kafka没有正确配置就会报错)

2、【Agent】异步如不开启数据压缩,日志数据较大,pod多、业务大时容易造成网络拥堵

3、【Agent】SW_AGENT_INSTANCE_NAME默认:UUID@hostname,建议调整为:nodeip@podip

4、【Agent】官方说:使用Kafka时skywalking.collector.backend_service参数依然要配置

5、【APM】SkyWalking OAP配置启用kafka并配置好后,OAP启动时会自动创建Topic

环境及帮助文件

SkyWalking-OAP官方下载地址

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

SkyWalking-Agent官方下载地址

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

Agent is available for JDK 8 - 21

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

skywalking-OAP服务

启用kafka配置

编辑oap配置文件 ${skywalking-apm}/config/application.yml配置

# line 323 apache-skywalking-apm-9.6.0
kafka-fetcher:selector: ${SW_KAFKA_FETCHER:default}default:# 多个使用逗到分隔bootstrapServers: ${SW_KAFKA_FETCHER_SERVERS:localhost:9092}namespace: ${SW_NAMESPACE:""}# 默认3,几个消费者就配几partitions: ${SW_KAFKA_FETCHER_PARTITIONS:3}# 不能超过kafka集群机器的数量,默认2replicationFactor: ${SW_KAFKA_FETCHER_PARTITIONS_FACTOR:2}enableNativeProtoLog: ${SW_KAFKA_FETCHER_ENABLE_NATIVE_PROTO_LOG:true}enableNativeJsonLog: ${SW_KAFKA_FETCHER_ENABLE_NATIVE_JSON_LOG:true}consumers: ${SW_KAFKA_FETCHER_CONSUMERS:1}kafkaHandlerThreadPoolSize: ${SW_KAFKA_HANDLER_THREAD_POOL_SIZE:-1}kafkaHandlerThreadPoolQueueSize: ${SW_KAFKA_HANDLER_THREAD_POOL_QUEUE_SIZE:-1}
...

skywalking-agent服务

经验

-》 kafka-reporter-plugin-x.x.x.jar 这个包放plugins目录后必走kafka,如果kafka没有正确配置就会报错

-》 不压缩的情况下,一次请求约1KB日志

-》SW_AGENT_INSTANCE_NAME  默认:UUID@hostname,建议:host_ip@pod_ip

-》使用Kafka时skywalking.collector.backend_service参数依然要配置(官方说的)

开启Kafka

  1. 将${skywalking-agent}/optional-reporter-plugins/kafka-reporter-plugin-x.x.x.jar 拷贝到 ${skywalking-agent}/plugins

开启消息数据压缩

# optional-reporter-plugins下面任选一种(lz4、snappy、zstd-jni)压缩实现包即可

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

Springboot应用增加jvm参数

应用启动参数,多个kafka地址使用逗号分割

# myApp 改为你的包名
java \
-javaagent:/usr/local/agent/skywalking-agent.jar \
-Dskywalking.agent.service_name=myApp \
-Dskywalking.collector.backend_service=aigoServer:11800 \
-Dskywalking.plugin.kafka.bootstrap_servers=10.81.**.14:9092 \
-Xmx1g \
myApp.jar

Tomcat应用增加jvm参数

应用启动参数,多个kafka地址使用逗号分割

#  myApp 改为实际应用名
JAVA_OPTS="$JAVA_OPTS --javaagent:/usr/local/agent/skywalking-agent.jar \
-Dskywalking.agent.service_name=myApp \
-Dskywalking.collector.backend_service=aigoServer:11800 \
-Dskywalking.plugin.kafka.bootstrap_servers=10.81.**.14:9092"

说明:

使用Kafka时skywalking.collector.backend_service参数依然要配置(官方说的)

附件

附件一: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 \

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/23060.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2025前端框架最新组件解析与实战技巧:Vue与React的革新之路

作者:飞天大河豚 引言 2025年的前端开发领域,Vue与React依然是开发者最青睐的框架。随着Vue 3的全面普及和React 18的持续优化,两大框架在组件化开发、性能优化、工程化支持等方面均有显著突破。本文将从最新组件特性、使用场景和编码技巧三…

Orange 单体架构 - 快速启动

1 后端服务 1.1 基础设施 组件说明版本MySQLMySQL数据库服务5.7/8JavaJava17redis-stackRedis向量数据库最新版本Node安装Node22.11.0 1.2 orange-dependencies-parent 项目Maven依赖版本管理 1.2.1 项目克隆 GitHub git clone https://github.com/hengzq/orange-depende…

Layer2 扩容解决方案详解

Layer2 扩容解决方案详解 🔄 1. Layer2 基础概念 1.1 什么是 Layer2? Layer2 是建立在以太坊主网(Layer1)之上的扩容解决方案,它: 继承以太坊的安全性提供更高的交易吞吐量降低交易费用保持去中心化特性…

小智机器人CMakeLists编译文件解析

编译完成后,成功烧录! 这段代码是一个CMake脚本,用于配置和构建一个嵌入式项目,特别是针对ESP32系列芯片的项目。CMake是一个跨平台的构建系统,用于管理项目的编译过程。 set(SOURCES "audio_codecs/audio_code…

银河麒麟系统安装mysql5.7【亲测可行】

一、安装环境 cpu:I5-10代; 主板:华硕; OS:银河麒麟V10(SP1)未激活 架构:Linux 5.10.0-9-generic x86_64 GNU/Linux mysql版本:mysql-5.7.34-linux-glibc2.12-x86_64.ta…

【Linux】动静态库

目录 站在库提供者的角度 静态库 制作静态库 静态库的内容 发布静态库 用户使用静态库 找头文件 找库文件 动态库 制作动态库 动态库报错 动态库是怎么被加载的? 地址相关问题 程序加载前的地址 程序加载后的地址 如何执行第一条指令? …

500字理透react的hook闭包问题

在react中hook的闭包问题很容易在不经意间犯错,项目写大了之后更是难以找到到底是哪里出了问题。 为什么会出现闭包问题 出现闭包问题的原因就是函数中操作的变量不是最新的变量,什么意思呢,我们知道函数组件每次刷新都是重新运行一次函数&…

Unity Shader Graph 2D - 一个简单的魔法阵激活效果

前言 在魔幻类游戏里通常会有魔法阵的存在,而当某个机关被触发或者某个剧情被触发时,需要对魔法阵进行激活,这个时候就需要一个魔法阵的激活效果来让这个游戏的这一时刻的交互性更强,生动性更强,本文将用一种十分简单的方式来实现一个魔法阵的激活效果。 创建一个…

C++ 类和对象(友元、内部类、匿名对像)

目录 一、前言 二、正文 1.友元 1.1友元函数的使用 1.1.1外部友元函数可访问类的私有成员,友员函数仅仅是一种声明,他不是类的成员函数。 1.1.2一个函数可以是多个类的友元函数 2.友元类的使用 2.1什么是友元类 2.2 友元类的关系是单向的&#x…

Docker Network

1.简介 容器之间的通讯时通过网桥通讯的,跨主机通讯可以使用flannel进行通讯 那么为什么主机可以访问到虚拟机内部呢?因为VMware虚拟出一个虚拟的网卡,而这个虚拟网卡和主机在同一个局域网下 NAT是映射一个虚拟网卡,进行路由通信…

【Linux系统】—— 冯诺依曼体系结构与操作系统初理解

【Linux系统】—— 冯诺依曼体系结构与操作系统初理解 1 冯诺依曼体系结构1.1 基本概念理解1.2 CPU只和内存打交道1.3 为什么冯诺依曼是这种结构1.4 理解数据流动 2 操作系统2.1 什么是操作系统2.2 设计OS的目的2.3 操作系统小知识点2.4 如何理解"管理"2.5 系统调用和…

【行业解决方案篇十八】【DeepSeek航空航天:故障诊断专家系统 】

引言:为什么说这是“航天故障终结者”? 2025年春节刚过,航天宏图突然官宣"DeepSeek已在天权智能体上线",这个搭载在卫星和空间站上的神秘系统,号称能提前48小时预判99.97%的航天器故障。这不禁让人想起年初NASA禁用DeepSeek引发的轩然大波,更让人好奇:这套系…

计算机网络真题练习(高软29)

系列文章目录 计算机网络阶段练习 文章目录 系列文章目录前言一、真题练习总结 前言 计算机网络的阶段练习题,带解析答案。 一、真题练习 总结 就是高软笔记,大佬请略过!

从猜想终结到算法革新,弹性哈希开启数据存储新篇章

目录 哈希表的前世今生基本原理从传统到现代:哈希表的演变历程安德鲁 克拉皮文及其团队的创作历程弹性哈希详解基本原理优点技术细节漏斗哈希解析基本原理优点技术细节新算法的实际应用案例电子商务推荐系统金融交易监控系统社交媒体内容过滤物联网设备管理结论与展望哈希表的…

DeepSeek各模型现有版本对比分析

文章目录 一、基础模型系列:V1 到 V3 的演进二、专用模型系列:推理与多模态三、版本选型与商业化趋势 DeepSeek作为最近特别火爆的模型,本文将对DeepSeek现有的主要版本进行对比分析,涵盖参数规模、训练数据、功能改进、应用场景和性能表现等…

RabbitMQ学习—day6—springboot整合

目录 1. springboot配置 2. 开始写RabbitMq代码 3. 队列优化 4. 插件实现延迟队列 5. 总结 前一小节我们介绍了死信队列,刚刚又介绍了 TTL,至此利用 RabbitMQ 实现延时队列的两大要素已经集齐,接下来只需要将它们进行融合,再加…

Automa 浏览器自动化编排 实现自动化浏览器操作

在日常的浏览器使用过程中,我们常常会遇到一些重复繁琐的任务,比如反复填写网页表单、从网页抓取数据、定时截图等,这些工作不仅耗费时间和精力,还容易出错。今天要给大家介绍的Automa,就是一款专门用来解决这类问题的…

【多模态处理篇五】【DeepSeek文档解析:PDF/Word智能处理引擎】

你知道吗?全球每天产生的PDF文档超过10亿份,但90%的上班族还在用复制粘贴的笨办法处理文档!DeepSeek文档解析引擎就像给你的电脑装上了"文档翻译官",能把PDF/Word里的文字、表格、公式甚至排版样式都变成AI能理解的"语言"。举个真实场景:法务小姐姐用…

【C语言】结构体内存对齐问题

1.结构体内存对齐 我们已经基本掌握了结构体的使用了。那我们现在必须得知道结构体在内存中是如何存储的?内存是如何分配的?所以我们得知道如何计算结构体的大小?这就引出了我们今天所要探讨的内容:结构体内存对齐。 1.1 对齐规…

【多模态处理篇三】【DeepSeek语音合成:TTS音色克隆技术揭秘】

最近帮某明星工作室做AI语音助手时遇到魔幻需求——要求用5秒的咳嗽声克隆出完整音色!传统TTS系统直接翻车,生成的语音像得了重感冒的电音怪物。直到祭出DeepSeek的TTS音色克隆黑科技,才让AI语音从"机器朗读"进化到"声临其境"。今天我们就来扒开这个声音…