最近升级了商城项目,支持SpringBoot2.7.0,同时升级了整个ELK日志采集系统。我发现每次升级Kibana界面,都会有一些变化,会变得更现代!今天说说商城项目的日志采集机制,使用的是SpringBoot支持的最新版ELK。希望对大家有所帮助!SpringBoot实战电商项目商城(50k+star)地址:https://github.com/macrozheng/mallELK日志采集系统搭建首先我们需要搭建ELK日志采集系统,安装在Docker环境中。要安装和运行Elasticsearch容器,请使用以下命令;dockerrun-p9200:9200-p9300:9300--nameelasticsearch\-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\-dElasticsearch:启动7.17.3时,你会发现/usr/share/elasticsearch/data目录没有访问权限,只需要修改/mydata/elasticsearch/data目录的权限,然后重启即可;chmod777/mydata/elasticsearch/data/安装运行Logstash容器,使用如下命令,logstash.conf文件地址:https://github.com/macrozheng...dockerrun--namelogstash-p4560:4560-p4561:4561-p4562:4562-p4563:4563\--linkelasticsearch:es\-v/mydata/logstash/logstash.conf:/usr/share/logstash/pipeline/logstash.conf\-dlogstash:7.17.3进入容器里面,安装json_lines插件;dockerexec-itlogstash/bin/bashlogstash-plugininstalllogstash-codec-json_lines安装并运行Kibana容器,使用以下命令;dockerrun--namekibana-p5601:5601\--linkelasticsearch:es\-e"elasticsearch.hosts=http://es:9200"\-dkibana:7.17.3ELK日志采集系统启动后,即可进入Kibana界面。访问地址:http://192.168.3.105:5601日志采集原理日志采集系统的原理如下。首先,应用集成Logstash插件,通过TCP将日志传输到Logstash。Logstash收到日志后,根据日志类型将日志存储在Elasticsearch的不同索引中,并从Elasticsearch的Kibana中读取日志,然后我们就可以在Kibana中进行可视化的日志分析。具体流程图如下。这里为了便于查看,将日志分为以下四种:调试日志(mall-debug):所有DEBUG级别以上的日志;错误日志(mall-error):所有ERROR级别的日志;业务日志(mall-business):com.macro.mall包下DEBUG级别以上的所有日志;记录日志(mall-record):com.macro.mall.tiny.component.WebLogAspect类下DEBUG级别以上的所有日志,是统计接口访问信息的AOP切面。启动应用首先要启动mall项目的三个应用,通过--linklogstash:logstash连接Logstash。商城管理员dockerrun-p8080:8080--namemall-admin\--linkmysql:db\--linkredis:redis\--linklogstash:logstash\-v/etc/localtime:/etc/localtime\-v/mydata/app/admin/logs:/var/logs\-dmall/mall-admin:1.0-SNAPSHOTmall-portaldockerrun-p8085:8085--namemall-portal\--linkmysql:db\--链接redis:redis\--链接mongo:mongo\--链接rabbitmq:rabbit\--链接logstash:logstash\-v/etc/localtime:/etc/localtime\-v/mydata/app/portal/logs:/var/logs\-dmall/mall-portal:1.0-SNAPSHOTmall-searchdockerrun-p8081:8081--namemall-search\--linkelasticsearch:es\--linkmysql:db\--linklogstash:logstash\-v/etc/localtime:/etc/localtime\-v/mydata/app/search/logs:/var/logs\-dmall/mall-search:1.0-SNAPSHOT其他组件MySQL等其他组件的部署而Redis我就不细说了,想部署全套的可以参考部署文档。https://www.macrozheng.com/ma...可视化日志分析接下来我们来体验一下Kibana的可视化日志分析功能。以商城项目为例,真的很强大!创建索引匹配模式,首先我们需要打开Kibana的Stack管理功能;为Kibana创建索引匹配模式;可以看到我们之前创建的四个日志类在ES中都创建了索引,后缀是索引生成的日期;我们需要通过表达式来匹配对应的索引,首先创建mall-debug的索引匹配方式;然后创建mall-error、mall-business、mall-record的索引匹配模式;然后打开分析中的发现功能,可以看到应用中产生的日志信息。日志分析先说mall-debug日志。此类日志是最全面的日志,可用于测试环境调试。当我们有多个服务同时产生日志时,我们可以使用过滤器过滤掉对应的服务。日志;当然也可以使用Kibana的专用查询语句KQL进行过滤;还可以实现模糊查询,比如查询消息中包含分页的日志,查询速度真快;通过mall-error日志,可以快速获取应用的错误信息,准确定位问题,比如Redis服务停止,就在这里输出日志;通过mall-business日志,可以查看com.macro.mall包下所有DEBUG级别以上的日志,通过这个日志,我们可以方便的查看调用接口随时输出的SQL语句;通过mall-record日志可以方便的查看接口请求状态,包括请求路径、参数、返回结果、耗时信息等。哪个接口访问慢一目了然;综上所述,今天给大家分享的是mall项目。日志收集方案以及如何通过Kibana进行日志分析,比直接在服务器上用命令行查看日志要方便的多。而且Kibana还可以聚合不同服务产生的日志,同时支持全文搜索,确实很强大。参考资料关于SpringBoot中如何自定义日志收集机制,可以参考。你实际上去服务器获取日志。建立一个日志收集系统不是很好吗!日志需要安全保护的可以参考有人要白嫖我的日志,赶快开启安全保护抑制震惊吧!项目源码地址https://github.com/macrozheng...
