最近由于之前协助前公司做了点力所能及的事情,居然收到了一份贵重的端午礼物,是给我女儿的一个乐高积木,整个有7大包物件,我花了接近一天的时间一砖一瓦的组织起来,虽然很辛苦但是能够从过程中体验到乐趣。这次将分享从头搭建分布式日志系统,主要是在spring mvc上结合ELK套件实现(之前有些工作由于分工不同由不同的同事来完成,我只是在已经配置好的环境下做开发而已),包含如下这些技术点:
- spring mvc
- logback
- logstash
- elasticsearch
- kibana
- redis
来看下整体的架构图,这类架构非常容易解决当下分布式系统下的日志记录,查询以及分析困难的问题。
操作系统,IDE环境:
- eclipse
- windows
1:搭建spring mvc项目
eclipse自带创建的dynamic web project是个空结构,没有任何配置,我们要想跑起来一个hello world的项目,还需要做些配置,比如创建程序文件,比如view,controller等等。
spring tool suite可以帮助我们解决这个问题,它提供了spring mvc的项目模板,里面自带一个hello world的可启动的应用页面,在eclipse中可以很方便的以插件形式安装spring tool suit,安装好之后就可以创建了。
这里需要注意的是不同版本的spring tool suite在创建时的菜单会有不同,我目前的菜单位于:
首先要选中spring标签:
然后在File菜单下找:
创建好之后,我们就可以直接在tomcat下运行了,不需要任何的其它操作,相对创建的dynamic web project要方便的多,不过通过这种模板创建的项目也有缺点:如果你喜欢新的一些依赖包,那么你需要手工去pom文件中去更新版本号为你想要的,还有可能会引入部分你暂时可能用不上的一些第三方包。下图是稍加修改的项目完成图,是一个标准的maven结构的spring mvc。
2:redis安装
由于我的是windows环境,所以相应的需要下载windows版本的redis:
windows版:https://github.com/mythz/redis-windows
下载下来解压,然后选择一个版本:
配置文件我只修改了一个:bind,它是用来绑定一个固定IP的,为什么要显示的去绑定一个IP呢?后面会介绍我遇到的问题。
启动服务端:在redis/bin目录下执行:redis-server.exe redis.windows.conf即可启动
启动客户端:在redis/bin目录下执行:redis-cli.exe -h 127.0.0.1 -p 6379,在这个窗口可以通过一些redis命令再测试redis是否正常,比如get,set ,keys *等等。
3:ELK安装
在这个网站可以找到ELK最新版本:https://www.elastic.co/downloads,将elasticsearch,logstash,kibana这三个全部下载下来。
- 配置elasticsearch
大部分的配置都使用默认的,只是为了好标识我修改了cluster.name以及node.name,详细的参数可研究文档。然后直接在bin目录下运行elasticsearch.bat就可以启动了。
打开http://127.0.0.1:9200/就可以,看到如下信息就说明启动正常了。
还有很多插件可以安装,用来帮助我们查看监控elasticsearch,这里先安装head,命令行进入elasticsearch的目录,然后执行plugin install mobz/elasticsearch-head即可安装。
安装成功后打开http://127.0.0.1:9200/_plugin/head/
- 配置logstash
先看下logstash的架构设计以及与其它ELK的配合,本篇的data source就是redis,不涉及到filter,最终日志输出到elasticsearch中。
这里我们只配置input以及output,需要注意的是不同版本的logstash在配置上也会略有不同,大家有兴趣可以进一步做下对比。
input { redis { data_type => "list" key => "logstash" host => "127.0.0.1" port => 6379 threads => 5 codec => "json" } } filter { } output { elasticsearch { hosts => ["127.0.0.1:9200"] index => "logstash-%{type}-%{+YYYY.MM.dd}" document_type => "%{type}" workers => 1 flush_size => 20 idle_flush_time => 1 template_overwrite => true } stdout{} }
然后在logstash目录下执行logstash -f etc/logstash.d/即可启动
- 配置kinbana
- elasticesearch.url指向之前配置好的elasticsearch地址。
- kinbna.index,这个是用来存储kibana自身的一些信息的。
- 集成logback
需要有一个记录日志的入口,将logback-classic引入进来,为了将日志传递给redis,需要配置一个logback-redis-appender,依赖如下:
<!-- Logging --> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> <version>${org.slf4j-version}</version> </dependency> <dependency> <groupId>ch.qos.logback</groupId> <artifactId>logback-classic</artifactId> <version>${logback.version}</version> </dependency> <!--logstash begin --> <dependency> <groupId>com.cwbase</groupId> <artifactId>logback-redis-appender</artifactId> <version>1.1.3</version> <exclusions> <exclusion> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> </exclusion> </exclusions> </dependency>
配置logback.xml,key需要与logstash配置文件中配置的key相匹配。
<appender name="LOGSTASH" class="com.cwbase.logback.RedisAppender"> <source>logstashdemo</source> <type>dev</type> <host>127.0.0.1</host> <key>logstash</key> <tags>dev</tags> <mdc>true</mdc> <location>true</location> <callerStackIndex>0</callerStackIndex> </appender>
在homecontroller中记录日志,slf4j由于完成了与logback完美集成,所以我们也不需要做任何转换类的配置即可实现日志记录。
前文中曾经提到在配置redis时,设置了bind属性,让其指定到一个固定的IP。如果不指定,在logstash连接redis会有问题,其中的原因有待后续进一步确认。
4:运行网站,查看日志
当redis,elasticsearch,logstash服务运行正常后,启动spring mvc,通过logger记录的日志就可以在kibana中方便的查看了。
测试logback是否已经将日志发送到redis,可以通过redis的命令来查看是否包含了配置的logstash这个key,还可以通过llen来判断日志是否在正常的递增。
如果上面都正常,再找开kibana的页面,第一次打开会提示创建索引规则,创建好之后就可以看到日志已经被采集到elasticsearch中了。
经过接近两天的研究,终于从0开始搭建成功了spring mvc+ELK的分布式日志管理平台,java平台的优势就是开源的产品多,可利用优秀插件也多,擅于去发倔还是可以很省事的做些比较优秀的项目的。虽然本篇只是一个练手入门文章,但有了开始就会有收获。
本文参考:
- http://os.51cto.com/art/201403/431103.htm
- http://kibana.logstash.es
- http://blog.csdn.net/kmtong/article/details/38920327
- http://www.cnblogs.com/xing901022/p/4802822.html
- http://blog.csdn.net/july_2/article/details/24481935
- https://www.elastic.co/guide/en/kibana/current/getting-started.html
转自:http://www.cnblogs.com/ASPNET2008/p/5594479.html
相关推荐
【Linux平台CentOS7系统 - ELK+logback+kafka+nginx搭建分布式日志分析平台】 在复杂的IT环境中,日志管理和分析对于诊断问题、优化性能以及确保系统稳定性至关重要。ELK栈(Elasticsearch、Logstash、Kibana)正是...
ELK+Filebeat+Kafka+ZooKeeper构建日志分析平台,架构图解
对于日志来说,最常见的需求就是收集、存储、查询、展示,开源社区正好有相对应的开源项目:logstash(收集)、elasticsearch(存储+搜索)、kibana(展示),我们将这三个组合起来的技术称之为ELK,所以说ELK指的是...
Suricata+ELK+kibana+logstash 安装手册是网络安全领域中构建入侵检测系统(IDS)和入侵防御系统(IPS)的关键步骤。这个文档详细介绍了如何在CentOS 7环境下设置一套完整的监控解决方案,包括 Suricata 作为核心的...
适合java web全栈学习的博客项目(ssm+redis+elk+layui+jsp) 适合java web全栈学习的博客项目(ssm+redis+elk+layui+jsp) 适合java web全栈学习的博客项目(ssm+redis+elk+layui+jsp) 适合java web全栈学习的博客...
基于SpringBoot+Dubbo+React+ELK+区块链的阿梨房屋中介系统.docx基于SpringBoot+Dubbo+React+ELK+区块链的阿梨房屋中介系统.docx基于SpringBoot+Dubbo+React+ELK+区块链的阿梨房屋中介系统.docx基于SpringBoot+Dubbo...
基于SpringBoot+Dubbo+React+ELK+区块链的阿梨房屋中介系统.pdf基于SpringBoot+Dubbo+React+ELK+区块链的阿梨房屋中介系统.pdf基于SpringBoot+Dubbo+React+ELK+区块链的阿梨房屋中介系统.pdf基于SpringBoot+Dubbo+...
【StirngBoot+ELK+Kafka记录日志】是一种高效、实时的日志收集、分析和展示解决方案,尤其适用于大型分布式系统。该系统通过整合SpringBoot应用的日志记录、Kafka的消息中间件、ELK(Elasticsearch、Logstash、Kibana...
ELK+SringBoot+Kafka 日志跟踪配置详解 ELK(Elasticsearch、Logstash、Kibana)是一款流行的日志分析平台,SpringBoot 是一个流行的 Java 框架,Kafka 是一个流行的消息队列系统。本文将详细介绍如何将 SpringBoot...
ELK+FileBeat+Kafka分布式系统搭建图文教程 本教程详细记录了ELK+FileBeat+Kafka分布式系统的搭建流程和步骤,为大家快速上手提供了详细的指导。本系统由FileBeat、Kafka、Logstash、Elasticsearch、Kibana五个组件...
Java毕业设计 基于SpringBoot+Vue+Prometheus+ELK的基础平台监控系统+部署文档+全部资料(高分项目)Java毕业设计 基于SpringBoot+Vue+Prometheus+ELK的基础平台监控系统+部署文档+全部资料(高分项目) 【备注】 1...
本项目基于Spring框架,结合Mysql数据库、Redis缓存以及ELK(Elasticsearch、Logstash、Kibana)日志分析系统,构建了一个高效、可扩展的后端服务。下面将详细介绍这些技术在项目中的应用。 1. **Spring Framework*...
elk搭建日志平台,按照步骤搭建即可,集成redis,elastic
日志分析工具
**搭建ELK日志系统的步骤**: 1. **环境准备**: 首先确保你有一台运行CentOS 7的服务器,并安装了Java 8和Node.js v9.8.0(因为Kibana依赖Node.js)。然后,你需要下载ELK栈的四个组件:Filebeat、Logstash、...
各产品软件版本 centos 6.5 esxi 6.5 SSH 5.3 JDK 1.8_131 MAVEN 3.6 ...基于EXSI6.5环境下centos6系统搭建ambari+HDP+elasticsearch+kibana+logstash+neo4j集群搭建教程,教程共54页,10000+以上字数
具体而言,本例中ELK日志系统的搭建顺序是这样的:首先通过Filebeat模块收集系统或应用程序的日志文件;接着,使用Kafka模块作为消息队列对日志数据进行缓冲和管理;然后将Kafka中的日志数据发送给Logstash模块,由...
Linux环境下,ELK(Elasticsearch、Logstash、Kibana)和Kafka以及Zookeeper是构建高效日志管理和分析系统的必备组件。这个压缩包包含了这些工具的最新稳定版本,旨在简化安装过程,提高效率。 首先,让我们详细...
本文将详细介绍如何在Linux环境下搭建ELK(Elasticsearch、Logstash、Kibana)+Filebeat+kafka日志系统。这个系统能够有效地收集、处理、存储和分析系统的日志数据,帮助监控和排查问题。 1. **Elasticsearch**:...