当前位置:网站首页>Are you still using the command line to read logs?Quickly use Kibana, visual log analysis YYDS
Are you still using the command line to read logs?Quickly use Kibana, visual log analysis YYDS
2022-07-30 02:50:00 【YYniannian】

最近我把mall项目升级支持了SpringBoot 2.7.0,同时升级了整套ELK日志收集系统.我发现每次升级Kibana界面都会有一定的改变,变得更现代化了吧!今天来聊聊mall项目的日志收集机制,使用了SpringBoot支持的最新版ELK,希望对大家有所帮助!
SpringBoot实战电商项目mall(50k+star)地址:github.com/macrozheng/…
ELK日志收集系统搭建
首先我们需要搭建ELK日志收集系统,这里使用在Docker环境下安装的方式.
- 安装并运行Elasticsearch容器,使用如下命令即可;
docker run -p 9200:9200 -p 9300:9300 --name elasticsearch \
-e "discovery.type=single-node" \
-e "cluster.name=elasticsearch" \
-e "ES_JAVA_OPTS=-Xms512m -Xmx1024m" \
-v /mydata/elasticsearch/plugins:/usr/share/elasticsearch/plugins \
-v /mydata/elasticsearch/data:/usr/share/elasticsearch/data \
-d elasticsearch:7.17.3
复制代码- 启动时会发现
/usr/share/elasticsearch/data目录没有访问权限,只需要修改/mydata/elasticsearch/data目录的权限,再重新启动即可;
chmod 777 /mydata/elasticsearch/data/
复制代码- 安装并运行Logstash容器,使用如下命令即可,
logstash.conf文件地址:github.com/macrozheng/…
docker run --name logstash -p 4560:4560 -p 4561:4561 -p 4562:4562 -p 4563:4563 \
--link elasticsearch:es \
-v /mydata/logstash/logstash.conf:/usr/share/logstash/pipeline/logstash.conf \
-d logstash:7.17.3
复制代码- 进入容器内部,安装
json_lines插件;
docker exec -it logstash /bin/bash
logstash-plugin install logstash-codec-json_lines
复制代码- 安装并运行Kibana容器,使用如下命令即可;
docker run --name kibana -p 5601:5601 \
--link elasticsearch:es \
-e "elasticsearch.hosts=http://es:9200" \
-d kibana:7.17.3
复制代码- ELK日志收集系统启动完成后,就可以访问Kibana的界面了,访问地址:http://192.168.3.105:5601

日志收集原理
日志收集系统的原理是这样的,首先应用集成了Logstash插件,通过TCP向Logstash传输日志.Logstash接收到日志后根据日志类型将日志存储到Elasticsearch的不同索引上去,Kibana从Elasticsearch中读取日志,然后我们就可以在Kibana中进行可视化日志分析了,具体流程图如下.

这里把日志分成了如下四种类型,方便查看:
- 调试日志(mall-debug):所有的DEBUG级别以上日志;
- 错误日志(mall-error):所有的ERROR级别日志;
- 业务日志(mall-business):
com.macro.mall包下的所有DEBUG级别以上日志; - 记录日志(mall-record):
com.macro.mall.tiny.component.WebLogAspect类下所有DEBUG级别以上日志,该类是统计接口访问信息的AOP切面类.
启动应用
首先得把mall项目的三个应用启动起来,通过
--link logstash:logstash连接到Logstash.
mall-admin
docker run -p 8080:8080 --name mall-admin \
--link mysql:db \
--link redis:redis \
--link logstash:logstash \
-v /etc/localtime:/etc/localtime \
-v /mydata/app/admin/logs:/var/logs \
-d mall/mall-admin:1.0-SNAPSHOT
复制代码mall-portal
docker run -p 8085:8085 --name mall-portal \
--link mysql:db \
--link redis:redis \
--link mongo:mongo \
--link rabbitmq:rabbit \
--link logstash:logstash \
-v /etc/localtime:/etc/localtime \
-v /mydata/app/portal/logs:/var/logs \
-d mall/mall-portal:1.0-SNAPSHOT
复制代码mall-search
docker run -p 8081:8081 --name mall-search \
--link elasticsearch:es \
--link mysql:db \
--link logstash:logstash \
-v /etc/localtime:/etc/localtime \
-v /mydata/app/search/logs:/var/logs \
-d mall/mall-search:1.0-SNAPSHOT
复制代码其他组件
其他组件如MySQL和Redis的部署不再赘述,想部署全套的小伙伴可以参考部署文档.
可视化日志分析
接下来我们体验下Kibana的可视化日志分析功能,以mall项目为例,确实很强大!
创建索引匹配模式
- 首先我们需要打开Kibana的
Stack管理功能;

- 为Kibana创建
索引匹配模式;

- 大家可以看到我们之前创建的四种日志分类已经在ES中创建了索引,后缀为产生索引的日期;

- 我们需要通过表达式来匹配对应的索引,先创建
mall-debug的索引匹配模式;

- 然后再创建
mall-error、mall-business和mall-record的索引匹配模式;

- 接下来打开分析中的
发现功能,就可以看到应用中产生的日志信息了.

日志分析
- 我们先来聊聊
mall-debug日志,这类日志是最全的日志,可用于测试环境调试使用,当我们有多个服务同时产生日志时,我们可以通过过滤器来过滤出对应服务的日志;

- 当然你也可以使用Kibana的专用查询语句KQL来过滤;

- 还可以实现模糊查询,比如查询下
message中包含分页的日志,查询速度确实很快;

- 通过
mall-error日志可以快速获取应用的报错信息,准确定位问题,例如把Redis服务给停了,这里就输出了日志;

- 通过
mall-business日志可以查看com.macro.mall包下的所有DEBUG级别以上日志,通过这个日志我们可以方便地查看调用接口时输出的SQL语句;

- 通过
mall-record日志可以方便地查看接口请求情况,包括请求路径、参数、返回结果和耗时等信息,哪个接口访问慢一目了然;

总结
今天给大家分享了下mall项目中的日志收集解决方案以及如何通过Kibana来进行日志分析,对比直接去服务器上用命令行看日志,确实方便多了.而且Kibana还可以对不同服务产生的日志进行聚合,同时支持全文搜索,确实功能很强大.
项目源码地址
边栏推荐
- Not enough information to list load addresses in the image map. (STM32 compilation error)
- 机器学习(十五)异常检测
- 奥比中光高级副总裁王兆民离职 董事会秘书暂未取得资格证
- English grammar_indefinite pronouns -some & any
- Not enough information to list load addresses in the image map.(STM32编译报错)
- ESP8266 +0.96" I2C OLED Dial Clock
- 中级-面试题目整理
- 【C语言刷LeetCode】592. 分数加减运算(M)
- matlab洗碗机节水模型的优化设计-这是个课题名称,不是买洗碗机,审核的人仔细看下,谢谢
- EL 表达式
猜你喜欢

JS Bom location 楼层导航效果 offsetTop data-n 方括号选择器
![[3D检测系列-PointRCNN]复现PointRCNN代码,并实现PointRCNN3D目标检测可视化,包含预训练权重下载链接(从0开始以及各种报错的解决方法)](/img/ca/17c047b8b1f030cc4ebb7e354070d9.png)
[3D检测系列-PointRCNN]复现PointRCNN代码,并实现PointRCNN3D目标检测可视化,包含预训练权重下载链接(从0开始以及各种报错的解决方法)

JUC(五):共享带来的问题

解决:Error while adding the mapper ‘interface to configuration. Error parsing Mapper XML

快速入门jsp

五种绑定彻底弄懂this,默认绑定、隐式绑定、显式绑定、new绑定、箭头函数绑定详解

VLAN 实验

Leetcode.234 判断回文链表(双指针/快慢指针)

黑客动态播报 | 一封假offer,盗取6.25亿美元

Embedded SIG | 分布式软总线
随机推荐
JS Navigator appName appVersion userAgent platform
【C语言刷LeetCode】592. 分数加减运算(M)
The box office broke 790 million US dollars. Have you watched this recent dinosaur movie?
[Notes] Stuttering word segmentation to draw word cloud map
成功解决AttributeError: ‘PngImageFile‘ object has no attribute ‘imshow‘
ESP8266 +0.96" I2C OLED Dial Clock
CSDN外链解决方法 (2022-07-28测试可用)
厉害,腾讯技术专家手撸Redis技术笔记,下载量已突破30W
[Andrioid开发] Splash界面/用户协议与隐私政策弹窗/界面开发
自动配置和 thymeleaf模板引擎
一文读懂Elephant Swap,为何为ePLATO带来如此高的溢价?
Houdini 地形知识点
binary search tree
Hyperchain超块链创始人史兴国接受21世纪经济报道采访,解读上海NFT新规及数藏发展
影响小程序开发费用的三个因素!
奥比中光高级副总裁王兆民离职 董事会秘书暂未取得资格证
单片机没有随机数发生器如何生成随机数——2022.07.26
JUC(六):synchronized
Docker一键安装MySQL
快速入门jsp