架构师之路----一步步搭建日志监控系统(Spring+SpringMVC+Redis+ELK)
2017-02-23 00:00
836 查看
摘要: 对于一个优秀的软件架构而言,软件初期的技术选型,开发过程中的系统分割(服务化,SOA,微服务),以及系统上线之后的监控运维,这三方面都是非常重要的。这一篇主要记录对一个线上项目进行监控,通过日志的采集与记录可以有效的观察程序的瓶颈和异常信息,对线上bug的排除有着极其重要的作用。
spring mvc
redis
logback
ELK
由于项目比较小,采用了日志写入redis,大型项目可参考将redis替换为kafka。
商业项目可用logstash监听nginx access log,定时将日志上传kafka集群。
如log4j将日志发送到logstash:
logstash input配置:
logstash有两个作用:
前端logstash做日志收集代理,作用同flume;
后端logstash做解析日志,连接es建立索引;
logstash会通过redis读取日志,导入es中进行存储和索引操作。
可以完整的看到spring mvc对应一个http请求的生命周期;
至此一个简单的基于spring+spring mvc+redis+elk的日志系统搭建成功了!
code 完整地址:https://github.com/zhangcj/springELK
原文地址
https://my.oschina.net/u/1000241/blog/844651技术选型
springspring mvc
redis
logback
ELK
开发web工程搭建
通过maven创建一个基于spring mvc的web工程,启动之后成功显示hello world(过程略)。pom文件
<!--spring--> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-test</artifactId> <version>${spring.version}</version> </dependency> <!--spring--> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-beans</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-core</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>${spring.version}</version> </dependency> <!--Spring Web + Spring MVC--> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-web</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>${spring.version}</version> </dependency>
构建成功
引入logback进行日志输出
本次日志组件使用的是logback;pom文件
<!--logback--> <dependency> <groupId>ch.qos.logback</groupId> <artifactId>logback-classic</artifactId> <version>1.1.3</version> </dependency> <dependency> <groupId>org.logback-extensions</groupId> <artifactId>logback-ext-spring</artifactId> <version>0.1.2</version> </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>jcl-over-slf4j</artifactId> <version>1.7.12</version> </dependency> <!--logstash begin --> <dependency> <groupId>com.cwbase</groupId> <artifactId>logback-redis-appender</artifactId> <version>1.1.5</version> </dependency>
logback.xml
<?xml version="1.0" encoding="UTF-8"?> <configuration> <appender name="LOGSTASH" class="com.cwbase.logback.RedisAppender"> <source>SpringELK</source> <type>dev-type</type> <tags>dev</tags> <host>127.0.0.1</host> <port>6379</port> <key>logstash</key> </appender> <logger name="com.zcj.springELK" level="DEBUG"/> <root level="DEBUG"> <appender-ref ref="LOGSTASH" /> </root> </configuration>
由于项目比较小,采用了日志写入redis,大型项目可参考将redis替换为kafka。
商业项目可用logstash监听nginx access log,定时将日志上传kafka集群。
如log4j将日志发送到logstash:
#输出日志到logstash log4j.appender.logstash=org.apache.log4j.net.SocketAppender log4j.appender.logstash.RemoteHost=127.0.0.1 log4j.appender.logstash.port=4560 log4j.appender.logstash.ReconnectionDelay=60000 log4j.appender.logstash.LocationInfo=true
logstash input配置:
input { log4j { host => "127.0.0.1" port => 4560 } }
logstash有两个作用:
前端logstash做日志收集代理,作用同flume;
后端logstash做解析日志,连接es建立索引;
日志输出
private Logger log = LoggerFactory.getLogger(HomeController.class); @RequestMapping(value = "/hello", method = RequestMethod.GET) public String hello() { log.error("Main错误"); return "/home/hello"; }
安装redis,并启动
(过程略)下载并配置ELK
由于新版本的elasticsearch支持是jdk 1.8,我的jdk是1.7所以要谨慎选择elk版本。logstash会通过redis读取日志,导入es中进行存储和索引操作。
将logstash,kibana配置为windows服务
启动web项目,并观察kibana日志状况
观察kibana
彩蛋
可以完整的看到spring mvc对应一个http请求的生命周期;
至此一个简单的基于spring+spring mvc+redis+elk的日志系统搭建成功了!
code 完整地址:https://github.com/zhangcj/springELK
相关文章推荐
- Logback+ELK+SpringMVC搭建日志收集服务器
- ELK6.2.2日志分析监控系统搭建和配置
- 搭建ELK(ElasticSearch+Logstash+Kibana)日志分析系统(五) 通过redis扩展logstash
- J2EE项目系列(四)--SSM框架构建积分系统和基本商品检索系统(Spring+SpringMVC+MyBatis+Lucene+Redis+MAVEN)(2)建立商品数据库和Lucene的搭建
- spring mvc+ELK从头开始搭建日志平台
- Linux搭建ELK日志收集系统:FIlebeat+Redis+Logstash+Elasticse
- ELK日志监控系统搭建
- ELK 日志系统搭建--监控nginx
- ELK6.2.2日志分析监控系统搭建和配置
- ELK日志监控系统搭建
- ELK日志监控系统搭建
- Logback+ELK+SpringMVC搭建日志收集服务器
- spring mvc+ELK从头开始搭建日志平台
- spring mvc+ELK从头开始搭建日志平台
- 一步步搭建Spring+Spring MVC+Hibernate系统框架+登录与注册功能
- Logstash+Redis+Elasticsearch+Kibana+Nginx搭建日志分析系统
- ELK学习2_用Kibana和logstash快速搭建实时日志查询、收集与分析系统
- linux下利用elk+redis 搭建日志分析平台教程
- Logstash+Redis+Elasticsearch+Kibana+Nginx搭建日志分析系统
- ELK_elk+redis 搭建日志分析平台