Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >还在用命令行看日志?快用Kibana吧,可视化日志分析YYDS!

还在用命令行看日志?快用Kibana吧,可视化日志分析YYDS!

作者头像
macrozheng
发布于 2022-07-24 09:00:21
发布于 2022-07-24 09:00:21
83400
代码可运行
举报
文章被收录于专栏:mall学习教程mall学习教程
运行总次数:0
代码可运行

最近我把mall项目升级支持了SpringBoot 2.7.0,同时升级了整套ELK日志收集系统。我发现每次升级Kibana界面都会有一定的改变,变得更现代化了吧!今天来聊聊mall项目的日志收集机制,使用了SpringBoot支持的最新版ELK,希望对大家有所帮助!

ELK日志收集系统搭建

首先我们需要搭建ELK日志收集系统,这里使用在Docker环境下安装的方式。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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目录的权限,再重新启动即可;
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
chmod 777 /mydata/elasticsearch/data/
  • 安装并运行Logstash容器,使用如下命令即可,logstash.conf文件地址:https://github.com/macrozheng/mall/blob/master/document/elk/logstash.conf
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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插件;
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
docker exec -it logstash /bin/bash
logstash-plugin install logstash-codec-json_lines
  • 安装并运行Kibana容器,使用如下命令即可;
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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

其他组件

其他组件如MySQLRedis的部署不再赘述,想部署全套的小伙伴可以参考部署文档。

https://www.macrozheng.com/mall/deploy/mall_deploy_docker.html

可视化日志分析

接下来我们体验下Kibana的可视化日志分析功能,以mall项目为例,确实很强大!

创建索引匹配模式

  • 首先我们需要打开Kibana的Stack管理功能;
  • 为Kibana创建索引匹配模式
  • 大家可以看到我们之前创建的四种日志分类已经在ES中创建了索引,后缀为产生索引的日期;
  • 我们需要通过表达式来匹配对应的索引,先创建mall-debug的索引匹配模式;
  • 然后再创建mall-errormall-businessmall-record的索引匹配模式;
  • 接下来打开分析中的发现功能,就可以看到应用中产生的日志信息了。

日志分析

  • 我们先来聊聊mall-debug日志,这类日志是最全的日志,可用于测试环境调试使用,当我们有多个服务同时产生日志时,我们可以通过过滤器来过滤出对应服务的日志;
  • 当然你也可以使用Kibana的专用查询语句KQL来过滤;
  • 还可以实现模糊查询,比如查询下message中包含分页的日志,查询速度确实很快;
  • 通过mall-error日志可以快速获取应用的报错信息,准确定位问题,例如把Redis服务给停了,这里就输出了日志;
  • 通过mall-business日志可以查看com.macro.mall包下的所有DEBUG级别以上日志,通过这个日志我们可以方便地查看调用接口时输出的SQL语句;
  • 通过mall-record日志可以方便地查看接口请求情况,包括请求路径、参数、返回结果和耗时等信息,哪个接口访问慢一目了然;

总结

今天给大家分享了下mall项目中的日志收集解决方案以及如何通过Kibana来进行日志分析,对比直接去服务器上用命令行看日志,确实方便多了。而且Kibana还可以对不同服务产生的日志进行聚合,同时支持全文搜索,确实功能很强大。

参考资料

关于如何自定义SpringBoot中的日志收集机制可以参考下你居然还去服务器上捞日志,搭个日志收集系统难道不香么!

如果你需要对日志进行安全保护的话可以参考下居然有人想白嫖我的日志,赶紧开启安全保护压压惊!

项目源码地址

https://github.com/macrozheng/mall

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-07-05,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 macrozheng 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Filebeat+Kafka+Logstash+Elasticsearch+Kibana 构建日志分析系统
随着时间的积累,日志数据会越来越多,当你需要查看并分析庞杂的日志数据时,可通过 Filebeat+Kafka+Logstash+Elasticsearch 采集日志数据到Elasticsearch(简称ES)中,并通过 Kibana 进行可视化展示与分析。
高楼Zee
2021/09/23
2.7K1
Filebeat+Kafka+Logstash+Elasticsearch+Kibana 构建日志分析系统
Docker 入门到实战教程(十二)ELK+Filebeat搭建日志分析系统
一般我们需要进行日志分析场景:直接在日志文件中 grep、awk 就可以获得自己想要的信息。但在规模较大的场景中,此方法效率低下,面临问题包括日志量太大如何归档、文本搜索太慢怎么办、如何多维度查询。需要集中化的日志管理,所有服务器上的日志收集汇总。常见解决思路是建立集中式日志收集系统,将所有节点上的日志统一收集,管理,访问。
小东啊
2020/07/23
5.1K1
Docker 入门到实战教程(十二)ELK+Filebeat搭建日志分析系统
mall-swarm微服务电商系统如何部署?用Jenkins自动化部署是真的香!
使用该部署方案需要对Jenkins有所了解,关于Jenkins的基本使用可以参考:《使用Jenkins一键打包部署SpringBoot应用,就是这么6!》
macrozheng
2020/11/12
9360
mall-swarm微服务电商系统如何部署?用Jenkins自动化部署是真的香!
在Docker容器中部署整套基于Spring Cloud的微服务架构,看这篇就对了!
本文以mall-swarm项目为例,主要介绍一个微服务架构的电商项目如何在Docker容器下部署,涉及到大量系统组件的部署及多个Spring Cloud 微服务应用的部署,基于CentOS7.6。 环境搭建 基础环境部署 mall-swarm运行需要的系统组件如下,Docker容器中安装这些组件的方法直接参考该文章即可:mall在Linux环境下的部署(基于Docker容器) 。 组件 版本号 JDK 1.8 Mysql 5.7 Redis 3.2 Elasticsearch 6.4.0 MongoDb
macrozheng
2019/12/11
9110
SpringBoot应用整合ELK实现日志收集
搭建了ELK日志收集系统之后,我们如果要查看SpringBoot应用的日志信息,就不需要查看日志文件了,直接在Kibana中查看即可。
macrozheng
2019/07/22
2.4K0
SpringBoot应用整合ELK实现日志收集
Elasticsearch实践:ELK+Kafka+Beats对日志收集平台的实现
当我们在开源日志分析系统的领域,谈及 ELK 架构可谓是家喻户晓。然而,这个生态系统并非 Elastic 有意为之,毕竟 Elasticsearch 的初衷是作为一个分布式搜索引擎。其广泛应用于日志系统,实则是一种意料之外,这是社区用户的推动所致。如今,众多云服务厂商在推广自己的日志服务时,往往以 ELK 作为参照标准,由此可见,ELK 的影响力之深远。
栗筝i
2023/10/23
2K0
Elasticsearch实践:ELK+Kafka+Beats对日志收集平台的实现
Docker-Logstash安装
或者直接使用我的文件(记得ip换成你自己的) :  https://shaun.lanzoum.com/iYxoV10uqlsh
shaun
2023/10/26
4100
Docker-Logstash安装
mall在Linux环境下的部署(基于Docker容器)
mall在Linux环境下的部署(基于Docker容器) 本文主要以图文的形式讲解mall在Linux环境下的部署,涉及在Docker容器中安装Mysql、Redis、Nginx、RabbitMQ、Elasticsearch、Mongodb,以及SpringBoot应用部署,基于CenterOS7.6。 Docker环境安装 安装yum-utils: yum install -y yum-utils device-mapper-persistent-data lvm2 为yum源添加docker仓库位置:
macrozheng
2019/07/22
1.6K0
mall在Linux环境下的部署(基于Docker容器)
ELK日志分析系统安装和部署
1.1 平台环境: OS:CentOS release 6.4(Final) ElasticSearch:6.3.2 Logstash:6.3.2 Kibana:6.3.2 JRE:1.8
星哥玩云
2022/07/27
1.2K0
ELK日志分析系统安装和部署
Kubernetes中部署ELK Stack日志收集平台
ELK是Elasticsearch、Logstash、Kibana三大开源框架首字母大写简称。市面上也被称为Elastic Stack。其中Elasticsearch是一个基于Lucene、分布式、通过Restful方式进行交互的近实时搜索平台框架。像类似百度、谷歌这种大数据全文搜索引擎的场景都可以使用Elasticsearch作为底层支持框架,可见Elasticsearch提供的搜索能力确实强大,市面上很多时候我们简称Elasticsearch为es。Logstash是ELK的中央数据流引擎,用于从不同目标(文件/数据存储/MQ)收集的不同格式数据,经过过滤后支持输出到不同目的地(文件/MQ/redis/elasticsearch/kafka等)。Kibana可以将elasticsearch的数据通过友好的页面展示出来,提供实时分析的功能。
没有故事的陈师傅
2021/07/21
2K6
mall在linux环境下的部署(基于Docker容器),Docker安装mysql、redis、nginx、rabbitmq、elasticsearch、lo
Docker是一种流行的容器化平台,它允许开发人员在独立、可移植的环境中构建、打包和部署应用程序。在使用Docker时,常常需要在Docker容器和主机之间进行文件的复制和共享。Docker提供了一个名为docker cp的命令,可以轻松地在容器和主机之间复制文件和目录。
寻求出路的程序媛
2024/09/03
1K0
mall在linux环境下的部署(基于Docker容器),Docker安装mysql、redis、nginx、rabbitmq、elasticsearch、lo
容器部署日志分析平台ELK7.10.1(Elasisearch+Filebeat+Redis+Logstash+Kibana)
  ELK日志分析系统是Logstash、Elastcsearch、Kibana开源软件的集合,对外是作为一个日志管理系统的开源方案,它可以从任何来源、任何格式进行日志搜索、分析与可视化展示。
非著名运维
2022/06/22
1.4K0
容器部署日志分析平台ELK7.10.1(Elasisearch+Filebeat+Redis+Logstash+Kibana)
使用 Docker Compose V2 快速搭建日志分析平台 ELK (Elasticsearch、Logstash 和 Kibana)
ELK的架构有多种,本篇分享使用的架构如图所示: Beats(Filebeat) -> -> Elasticsearch -> Kibana,目前生产环境一天几千万的日志,内存占用大概 10G 左右
易墨
2024/01/21
4.6K2
使用 Docker Compose V2 快速搭建日志分析平台 ELK (Elasticsearch、Logstash 和 Kibana)
ELK日志监控分析系统的探索与实践(一):利用Filebeat监控Springboot日志
由于公司项目较多,所部署服务产生的日志也较多,以往查看服务器日志只能通过xshell、putty等SSH工具分别连接每台服务器,然后进入到各个服务器,执行Linux命令查看日志,这样可能会带来以下问题:
大刚测试开发实战
2022/11/14
3.8K1
ELK日志监控分析系统的探索与实践(一):利用Filebeat监控Springboot日志
Mall 电商实战项目发布重大更新,全面支持SpringBoot 2.3.0 !
之前一直使用的是SpringBoot 2.1.7版本,这个版本是2019年8月发布的,距离现在已经一年多了,也到了更新版本的时候了。SpringBoot 2.3.0 是今年5月发布的,还是比较新的版本,想了解这个版本新特性的朋友可以看下《SpringBoot 2.3.0 新特性一览,快来跟我实践一波!》。
macrozheng
2020/08/11
6690
mall在Linux环境下的部署(基于Docker Compose)
需要打包mall-admin、mall-search、mall-portal的docker镜像,具体参考:使用Maven插件为SpringBoot应用构建Docker镜像
macrozheng
2019/07/22
2K0
mall在Linux环境下的部署(基于Docker Compose)
搭建ELK日志分析平台并收集Nginx日志
一般我们需要进行日志分析场景:直接在日志文件中 grep、awk 就可以获得自己想要的信息。但在规模较大也就是日志量多而复杂的场景中,此方法效率低下,面临问题包括日志量太大如何归档、文本搜索太慢怎么办、如何多维度查询。需要集中化的日志管理,所有服务器上的日志收集汇总。常见解决思路是建立集中式日志收集系统,将所有节点上的日志统一收集,管理,访问。
用户8826052
2021/07/12
1.6K0
重磅更新!mall 微服务版本支持K8S部署啦!
通过把mall-swarm项目部署到K8S上,我们可以发现K8S也没有想象中到那么难,K8S中的很多东西都是和Docker相通的!当我们听到消息称某个新技术要取代旧技术了,往往会困惑我们学的那些旧技术是不是过时了,没用了?其实我们大可不必担心,往往新技术都是在旧技术的基础上产生的,而且那些会旧技术的人会更容易掌握新技术!
macrozheng
2021/03/11
1.3K0
重磅更新!mall 微服务版本支持K8S部署啦!
kubernetes Filebeat+ELK日志收集监控方案
接收来自filebeat的数据,根据其中的tags进行分类,再添加index进行分类,例如nginx-access-%{+YYYY.MM.dd},在kibana中会根据这个index获取日志。
kubernetes中文社区
2019/06/24
3.3K0
kubernetes  Filebeat+ELK日志收集监控方案
EFK实战一 - 基础环境搭建
在分布式系统中,由于节点服务会部署多台,一旦出现线上问题需要通过日志分析定位问题就需要登录服务器一台一台进行日志检索,非常不便利,这时候就需要用到EFK日志收集工具。
JAVA日知录
2020/01/15
1.2K0
推荐阅读
相关推荐
Filebeat+Kafka+Logstash+Elasticsearch+Kibana 构建日志分析系统
更多 >
领券
一站式MCP教程库,解锁AI应用新玩法
涵盖代码开发、场景应用、自动测试全流程,助你从零构建专属AI助手
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档