发表于 2024-8-1 08:36:01

SpringBoot+Kafka+ELK 完成海量日记收集(超详细)

SpringBoot项目准备
引入log4j2替换SpringBoot默认log,demo项目结构如下:
https://i-blog.csdnimg.cn/blog_migrate/bdfafdb7f759904e7db4b0e4fde5e00f.png
pom
https://i-blog.csdnimg.cn/blog_migrate/9976572d4e6fd5bd37d5386508925338.png
IndexController
测试Controller,用以打印日记举行调试
https://i-blog.csdnimg.cn/blog_migrate/d2d179146b6efe70b7dfa29747b65d6b.png
InputMDC
用以获取log中的[%X{hostName}]、[%X{ip}]、[%X{applicationName}]三个字段值
https://i-blog.csdnimg.cn/blog_migrate/995700900d89c16accc80726936e0ee3.png
NetUtil
https://i-blog.csdnimg.cn/blog_migrate/e0f0ebac5239579a81cc49175de7b7d3.png
启动项目,访问/index和/ero接口,可以看到项目中天生了app-collector.log和error-collector.log两个日记文件
https://i-blog.csdnimg.cn/blog_migrate/dcb8c5c5bf7201a236b5dfe3d49f1777.png
我们将Springboot服务摆设在192.168.11.31这台呆板上。
3
Kafka安装和启用
kafka下载地址:http://kafka.apache.org/downloads.html
kafka安装步骤:首先kafka安装必要依赖与zookeeper,以是小同伴们先准备好zookeeper情况(三个节点即可),然后我们来一起构建kafka broker。
https://i-blog.csdnimg.cn/blog_migrate/571894d244283cc055e2e158184eb2ce.png
创建两个topic
创建topic

kafka-topics.sh --zookeeper 192.168.11.111:2181 --create --topic app-log-collector --partitions 1 --replication-factor 1
kafka-topics.sh --zookeeper 192.168.11.111:2181 --create --topic error-log-collector --partitions 1 --replication-factor 1
我们可以检察一下topic情况
kafka-topics.sh --zookeeper 192.168.11.111:2181 --topic app-log-test --describe
可以看到已经成功启用了app-log-collector和error-log-collector两个topic
https://i-blog.csdnimg.cn/blog_migrate/fc1bc56168e5499e16b304bac31c4664.png
4
filebeat安装和启用:
filebeat下载
cd /usr/local/software
tar -zxvf filebeat-6.6.0-linux-x86_64.tar.gz -C /usr/local/
cd /usr/local
mv filebeat-6.6.0-linux-x86_64/ filebeat-6.6.0
配置filebeat,可以参考下方yml配置文件
vim /usr/local/filebeat-5.6.2/filebeat.yml
###################### Filebeat Configuration Example #########################
filebeat.prospectors:


[*]input_type: log
paths:
app-服务名称.log, 为什么写死,防止发生轮转抓取历史数据



[*]/usr/local/logs/app-collector.log
#界说写入 ES 时的 _type 值
document_type: “app-log”
multiline:
#pattern: ‘^\s*(\d{4}|\d{2})-(\d{2}|{3})-(\d{2}|\d{4})’ # 指定匹配的表达式(匹配以 2017-11-15 08:04:23:889 时间格式开头的字符串)
pattern: ‘^[’                              # 指定匹配的表达式(匹配以 "{ 开头的字符串)
negate: true                                # 是否匹配到
match: after # 合并到上一行的末尾
max_lines: 2000 # 最大的行数
timeout: 2s # 如果在规定时间没有新的日记变乱就不等待背面的日记
fields:
logbiz: collector
logtopic: app-log-collector ## 按服务划分用作kafka topic
evn: dev


[*]input_type: log
paths:


[*]/usr/local/logs/error-collector.log
document_type: “error-log”
multiline:
#pattern: ‘^\s*(\d{4}|\d{2})-(\d{2}|{3})-(\d{2}|\d{4})’ # 指定匹配的表达式(匹配以 2017-11-15 08:04:23:889 时间格式开头的字符串)
pattern: ‘^[’                              # 指定匹配的表达式(匹配以 "{ 开头的字符串)
negate: true                                # 是否匹配到
match: after # 合并到上一行的末尾
max_lines: 2000 # 最大的行数
timeout: 2s # 如果在规定时间没有新的日记变乱就不等待背面的日记
fields:
logbiz: collector
logtopic: error-log-collector ## 按服务划分用作kafka topic
evn: dev
output.kafka:
enabled: true
hosts: [“192.168.11.51:9092”]
topic: ‘%{}’
partition.hash:
reachable_only: true
compression: gzip
max_message_bytes: 1000000
required_acks: 1
logging.to_files: true
filebeat启动:
查抄配置是否正确
cd /usr/local/filebeat-6.6.0
./filebeat -c filebeat.yml -configtest
Config OK

启动filebeat
/usr/local/filebeat-6.6.0/filebeat &
查抄是否启动成功
ps -ef | grep filebeat
可以看到filebeat已经启动成功
https://i-blog.csdnimg.cn/blog_migrate/e6683a6ff27ecf6ed22baa6ee90b6402.png
然后我们访问192.168.11.31:8001/index和192.168.11.31:8001/err,再检察kafka的logs文件,可以看到已经天生了app-log-collector-0和error-log-collector-0文件,说明filebeat已经帮我们把数据收集好放到了kafka上。
5
logstash安装
logstash的安装可以参考《Logstash的安装与使用》。
我们在logstash的安装目录下新建一个文件夹
mkdir scrpit
然后cd进该文件,创建一个logstash-script.conf文件
cd scrpit
vim logstash-script.conf
multiline 插件也可以用于其他类似的堆栈式信息,好比 linux 的内核日记。

input {
kafka {
app-log-服务名称

topics_pattern => “app-log-.*”
bootstrap_servers => “192.168.11.51:9092”
codec => json
consumer_threads => 1  ## 增长consumer的并行消耗线程数
decorate_events => true
#auto_offset_rest => “latest”
group_id => “app-log-group”
}
kafka {
error-log-服务名称

topics_pattern => “error-log-.*”
bootstrap_servers => “192.168.11.51:9092”
codec => json
consumer_threads => 1
自我介绍一下,小编13年上海交大结业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数Java工程师,想要提拔技能,往往是自己摸索发展或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易遇到天花板技术故步自封!
因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简朴,就是盼望可以或许资助到想自学提拔又不知道该从何学起的朋友,同时减轻各人的负担。https://i-blog.csdnimg.cn/blog_migrate/a95df8b36e07a793555107d19ea44d4e.jpeg
https://i-blog.csdnimg.cn/blog_migrate/798e93ffc61edf592596f780ccdc43e8.png
https://i-blog.csdnimg.cn/blog_migrate/8d5618ce2b65528c436d043743c3d73e.png
既有适合小白学习的零底子资料,也有适合3年以上履历的小同伴深入学习提拔的进阶课程,根本涵盖了95%以上Java开发知识点,真正体系化!
由于文件比较大,这里只是将部门目录截图出来,每个节点内里都包含大厂面经、学习笔记、源码课本、实战项目、解说视频,并且会持续更新!
如果你以为这些内容对你有资助,可以扫码获取!!(备注Java获取)
https://i-blog.csdnimg.cn/blog_migrate/e644c8028712e91cd1351df49ff72935.jpeg 最后

在面试前我整理归纳了一些面试学习资料,文中结合我的朋友同学面试美团滴滴这类大厂的资料及案例
https://i-blog.csdnimg.cn/blog_migrate/a8998e7d1c6a72e49d580807598d7cb7.png
https://i-blog.csdnimg.cn/blog_migrate/6369e9b5e1dbb8f2b892a90318ff8462.png
由于篇幅限制,文档的详解资料太全面,细节内容太多,以是只把部门知识点截图出来粗略的介绍,每个小节点内里都有更细化的内容!
各人看完有什么不懂的可以在下方留言讨论也可以关注。
以为文章对你有资助的话记得关注我点个赞支持一下!
《一线大厂Java面试题解析+核心总结学习笔记+最新解说视频+实战项目源码》,点击传送门即可获取!
2faed303032d36.jpg" alt=“img” style=“zoom: 33%;” />
最后

在面试前我整理归纳了一些面试学习资料,文中结合我的朋友同学面试美团滴滴这类大厂的资料及案例
[外链图片转存中…(img-91HnBkWM-1712076401145)]
[外链图片转存中…(img-CkeSzQoj-1712076401146)]
由于篇幅限制,文档的详解资料太全面,细节内容太多,以是只把部门知识点截图出来粗略的介绍,每个小节点内里都有更细化的内容!
各人看完有什么不懂的可以在下方留言讨论也可以关注。
以为文章对你有资助的话记得关注我点个赞支持一下!
《一线大厂Java面试题解析+核心总结学习笔记+最新解说视频+实战项目源码》,点击传送门即可获取!

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: SpringBoot+Kafka+ELK 完成海量日记收集(超详细)