对于一个优秀的软件架构而言,软件初期的技术选型,开发过程中的系统分割(服务化,SOA,微服务),以及系统上线之后的监控运维,这三方面都是非常重要的。这一篇主要记录对一个线上项目进行监控,通过日志的采集与记录可以有效的观察程序的瓶颈和异常信息,对线上bug的排除有着极其重要的作用。
通过maven创建一个基于spring mvc的web工程,启动之后成功显示hello world(过程略)。
<!--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-->
<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>
<?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>
private Logger log = LoggerFactory.getLogger(HomeController.class);
@RequestMapping(value = "/hello", method = RequestMethod.GET) public String hello() { log.error("Main错误"); return "/home/hello";
}
(过程略)
由于新版本的elasticsearch支持是jdk 1.8,我的jdk是1.7所以要谨慎选择elk版本。
至此一个简单的基于spring+spring mvc+redis+elk的日志系统搭建成功了!
code 完整地址:https://github.com/zhangcj/springELK