架构师之路----一步步搭建日志监控系统(Spring+SpringMVC+Redis+ELK)

原文地址

https://my.oschina.net/u/1000241/blog/844651

技术选型

  • spring
  • spring 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>

    <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有两个作用:
  1. 前端logstash做日志收集代理,作用同flume;
  2. 后端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,并启动

(过程略)

测试redis启动

下载并配置ELK

由于新版本的elasticsearch支持是jdk 1.8,我的jdk是1.7所以要谨慎选择elk版本。

logstash会通过redis读取日志,导入es中进行存储和索引操作。

启动elasticsearch

elasticsearch安装成功

将logstash,kibana配置为windows服务

配置服务并启动

启动web项目,并观察kibana日志状况

项目启动成功,日志生成

观察kibana

日志生成

彩蛋

spring request生命周期

可以完整的看到spring mvc对应一个http请求的生命周期;

至此一个简单的基于spring+spring mvc+redis+elk的日志系统搭建成功了!

code 完整地址:https://github.com/zhangcj/springELK

转载于:https://my.oschina.net/u/1000241/blog/844651

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值