暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

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

春哥叨叨 2021-06-11
827

原文地址

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

前言

对于一个优秀的软件架构而言,软件初期的技术选型,开发过程中的系统分割(服务化,SOA,微服务),以及系统上线之后的监控运维,这三方面都是非常重要的。这一篇主要记录对一个线上项目进行监控,通过日志的采集与记录可以有效的观察程序的瓶颈和异常信息,对线上bug的排除有着极其重要的作用。

技术选型

  • 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>
    <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";
    }

安装redis,并启动

(过程略)

下载并配置ELK

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

将logstash,kibana配置为windows服务

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

观察kibana

彩蛋

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

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


文章转载自春哥叨叨,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论