当前位置:网站首页>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编译报错)
- Hacker News Broadcast | A fake offer steals $625 million
- Oracle 进程数和会话数的关系
- 最重要的传输层
- 实现导入市场活动:
- 解决导航栏变黑色
- org.apache.ibatis.binding.BindingException Invalidbound statement (not found)的解决方案和造成原因分析(超详细)
- el-table sum total
- 浏览器缓存机制
- 【C语言刷LeetCode】2295. 替换数组中的元素(M)
猜你喜欢
随机推荐
The speed of life and death, every second counts
每日优鲜生死劫:被曝清退大部分员工 仍未递交年报(附音频)
JS Bom window innerWidth clientWidth onresize 窗口滚动偏移量 返回顶部
REUSE_ALV_GRID_DISPLAY详解
[Andrioid开发] Splash界面/用户协议与隐私政策弹窗/界面开发
LeetCode Question of the Day (874. Walking Robot Simulation)
FL Studio官方20.9中文版无需汉化补丁,正确安装并设置切换
centOS安装MySQL详解
力扣刷题训练(二)
Linux Jenkins查找缓存文件及删除 (2022-07测试可用)
Kotlin接口
c语言进阶篇:指针(四)
杜教筛【莫比乌斯前缀和,欧拉函数前缀和】推导与模板【一千五百字】
躲避雪糕刺客?通过爬虫爬取雪糕价格
Type-C charging and OTG chip - LDR6028A
Zero code tools recommended - HiFlow
表达式计算器 ExpressionRunner
Successfully resolved pydotplus.graphviz.InvocationException: GraphViz's executables not found
un7.29:Linux——centos中如何安装与配置redis?
DAP data processing process