Springboot+ELK实现日志管理

介绍ELLK三部分的组成:

  • Elasticsearch:用于存储日志
  • Logstash:用户收集处理和转发日志
  • Kibana:提供可搜索的Web可视化界面

关于这三者的安装环境均是Centos7,安装步骤也较简单,详情如下:

《Linux安装Elasticsearch》
《Linux安装Kibana》
Logstash安装:

  1. 官网下载解压,注意和es以及Kibana版本的一致性
  2. 修改配置文件:logstash-6.4.3/config/logstash-sample.conf`
input {
  tcp {
    mode => "server"
    host => "192.168.145.134"    ##安装logstash的ip
    port => 4560                 ##设置logstash的端口
    codec => json_lines
  }
}
output {
  elasticsearch {
    hosts => "127.0.0.1:9200"    #es的ip和端口(本次logstash和es是同一个服务器)
    index => "springboot-logstash-%{+YYYY.MM.dd}"    ##es的index名称
  }
}


  1. 启动:
./logstash -f ../config/logstash-sample.conf    #在bin目录下执行

将Logstash的安装步骤写在SpringBoot环境搭建块,是因为Logstash的配置文件和SpringBoot的日志文件有很重要的关系。


SpringBoot环境的搭建:

  • 修改pom.xml,添加es和logstash的jar包
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-elasticsearch</artifactId>
</dependency>
<!-- https://mvnrepository.com/artifact/net.logstash.logback/logstash-logback-encoder -->
<dependency>
    <groupId>net.logstash.logback</groupId>
    <artifactId>logstash-logback-encoder</artifactId>
    <version>4.11</version>
</dependency>
  • 添加日志文件
    注意:destination必须和logstash配置文件中input -tcp 中的host 和 port一致
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <include resource="org/springframework/boot/logging/logback/base.xml" />

    <appender name="LOGSTASH" class="net.logstash.logback.appender.LogstashTcpSocketAppender">
      <!--这里必须和logstash配置文件中input -tcp 中的host 和 port一致-->
          <destination>192.168.145.134:4560</destination>
        <!-- 日志输出编码 -->
        <encoder charset="UTF-8"
                 class="net.logstash.logback.encoder.LoggingEventCompositeJsonEncoder">
            <providers>
                <timestamp>
                    <timeZone>UTC</timeZone>
                </timestamp>
                <pattern>
                    <pattern>
                        {
                        "logLevel": "%level",
                        "serviceName": "${springAppName:-}",
                        "pid": "${PID:-}",
                        "thread": "%thread",
                        "class": "%logger{40}",
                        "rest": "%message"
                        }
                    </pattern>
                </pattern>
            </providers>
        </encoder>
    </appender>

    <root level="INFO">
        <appender-ref ref="LOGSTASH" />
        <appender-ref ref="CONSOLE" />
    </root>

</configuration>
  • 添加测试类
@RequestMapping("/test")
public String testlogstash() {
    logger.info("===================开始logstash的测试");
    return "hello word";
}
  • 启动项目进行测试
  • 在Kibana中查看日志信息:
    首先在management中添加 creat index patterns
    然后在Discover中查看

更多精彩内容