当前位置: 首页 > news >正文

logstash采集springboot微服务日志

前面一篇文章介绍了logstash采集nginx日志,这次介绍一下通过logstash采集springboot微服务中指定格式的日志。

需求

现有日志示例格式如下:

2025-07-21 11:16:37.629  INFO 8 --- [reactor-http-nio-1] c.test.authgateway.filter.GateWayFilter  : logstashVO:{"body":"{}","fullName":"TEST","time":1753067797629,"url":"/test/findUserInfo.do","userId":1088479580471164928}
2025-07-21 11:16:37.629  INFO 8 --- [reactor-http-nio-1] c.test.authgateway.filter.GateWayFilter  : logstashVO:{"body":"{}","fullName":"TEST","time":1753067797629,"url":"/test/findUserInfo.do","userId":1088479580471164928}
2025-07-21 11:16:37.629  INFO 8 --- [reactor-http-nio-1] c.test.authgateway.filter.GateWayFilter  : logstashVO:{"body":"{}","fullName":"TEST","time":1753067797629,"url":"/test/findUserInfo.do","userId":1088479580471164928}

需要采集“logstashVO:”之后的JSON格式字符串,该功能主要通过网关服务收集用户访问行为,当然根据用户需求可以做的事情还可以很多,这里就不一一列举。

logstash配置

input {file {path => ["/data/logs/spring.log"]type => "test"start_position => "beginning"}
}
filter {if "c.test.authgateway.filter.GateWayFilter  : logstashVO:" not in [message] { drop {}}ruby {code => "event.set('@timestamp', LogStash::Timestamp.at(event.get('@timestamp').time.localtime + 8*60*60))"}grok {match => { "message" => "c\.test\.authgateway\.filter\.GateWayFilter  \: logstashVO\:%{GREEDYDATA:logstashVO}"}}json {source => "logstashVO"}json {source => "body"target => "body"}mutate {remove_field => ["@version","event","host","logstashVO"]}   
}output {stdout {codec => rubydebug}kafka {bootstrap_servers => "10.16.39.121:9092"topic_id => "test2-logs"codec => jsonacks => "all"retries => 5batch_size => 16384}
}

注意这里的输入input.file.path对应的路径一定要是镜像中的路径/data/logs/,而不能为宿主机里的路径/data/public/logstash/logs

启动镜像

docker run --log-driver json-file --log-opt max-size=100m --log-opt max-file=2 \
--privileged=true --network=host --restart=always --name logstash \
-v /data/public/logstash/config/:/usr/share/logstash/config/ \
-v /data/public/logstash/logs/:/data/logs/ \
-d logstash:8.4.0

检查日志采集

启动后,可以通过Offset Explorer连接Kafka检查是否正确采集到了相关的日志。
在这里插入图片描述

测试

echo '2025-07-21 11:16:37.629  INFO 8 --- [reactor-http-nio-1] c.test.authgateway.filter.GateWayFilter  : logstashVO:{"body":"{}","fullName":"TEST","time":1753067797629,"url":"/test/findUserInfo.do","userId":1088479580471164928}' >> /data/public/logstash/logs/spring.log

执行一下,可以看到新日志进入到Kafka中
在这里插入图片描述
写入Kafka中日志格式如下:

{"@timestamp": "2025-07-26T17:48:58.874280406Z","body": {},"url": "/test/findUserInfo.do","fullName": "TEST","log": {"file": {"path": "/data/logs/spring.log"}},"type": "test","time": 1753067797629,"userId": 1088479580471164928,"message": "2025-07-21 11:16:37.629  INFO 8 --- [reactor-http-nio-1] c.test.authgateway.filter.GateWayFilter  : logstashVO:{\"body\":\"{}\",\"fullName\":\"TEST\",\"time\":1753067797629,\"url\":\"/test/findUserInfo.do\",\"userId\":1088479580471164928}"
}
http://www.xdnf.cn/news/1196047.html

相关文章:

  • 【奔跑吧!Linux 内核(第二版)】第4章:内核编译和调试
  • 商汤发布具身智能平台,让机器人像人一样和现实世界交互
  • Agent大模型大厂面试题及讲解答案
  • 【分享】外国使馆雷电综合防护系统改造方案(一)
  • 不坑盒子:Word里1秒制作“花括号”题目,多音字组词、形近字组词……
  • 【最新版】防伪溯源一体化管理系统+uniapp前端+搭建教程
  • 【Qt开发】信号与槽(二)-> 信号和槽的使用
  • 积分兑换小程序Java
  • 深入理解 Spring 中的 XmlBeanFactory 原理及实践
  • 数据结构第1问:什么是数据结构?
  • Java 大视界 -- Java 大数据机器学习模型在电商客户细分与精准营销活动策划中的应用(367)
  • 【牛客网C语言刷题合集】(四)
  • PostgreSQL并发控制
  • 机器学习鸢尾花案例
  • KingbaseES聚焦产品上线
  • docker与k8s的容器数据卷
  • 自由学习记录(74)
  • 多租户Kubernetes集群架构设计实践——隔离、安全与弹性扩缩容
  • MYSQL--再谈间隙锁和临键锁
  • RabbitMq 常用命令和REST API
  • 商品中心—1.B端建品和C端缓存
  • Python-初学openCV——图像预处理(四)——滤波器
  • 命令行和neovim的git操作软件-lazygit
  • sealos 方式安装k8s5节点集群
  • 自动标注软件X-AnyLabeling的使用教程
  • 基于动态增强的 LLM 置信度方法研究
  • C语言中:形参与实参的那些事
  • [SAP ABAP] ALV报表练习4
  • Matlab自学笔记六十五:解方程的数值解法(代码速成)
  • 文件IO——bmp图像处理