Springboot+ELK实现日志系统简单搭建

前面简单介绍了ELK三剑客中的其中两个Elasticsearch和Kibana的简单使用,如果对这两个不了解,可以看下下面的

  Centos7安装Elasticsearch和Kibana

  搜索引擎基础---分词和倒排索引简述

  Elasticsearch基础入门

 现在来看看这最后一个Logstash

还是这个地方https://elasticsearch.cn/download/  下载与es,kibana版本对应的Logstash,然后解压。

 

1.和es一样,如果机器内存小,有想玩这个的,记得把config下面的jvm.options文件中的jvm参数设置小点,我设置的256m:

-Xms256m

-Xmx256m

 

2.写配置文件logstash.conf,默认有个logstash-sample.conf这个文件,可以直接拿来修改

内容如下:

#暴露9090端口作为输入
input {
  tcp {
    #host 192.168.0.69
    port => 9090
  }
}
#输出到elasticsearch,此输出创建一个名为myserver的索引
output {
  elasticsearch {
    hosts => ["http://192.168.0.67:9200"]
    index => "myserver"
  }
}

以上就是最简单的配置了

 

3.使用此配置文件启动logstash:./bin/logstash -f ./config/logstash.conf

 

 4.创建spingboot工程,springboot日志本来就用的logback,但是我们还需要引入相关的logstash依赖

        <dependency>
            <groupId>net.logstash.logback</groupId>
            <artifactId>logstash-logback-encoder</artifactId>
            <version>6.2</version>
        </dependency>

 

5.在appliction.properties配置文件指定logstash服务的端口位置,就是上面logstash 暴露出来的输入端口,我们上面的是9090端口

logstash.address=192.168.0.69:9090

 

6.logback日志配置文件:logback-spring.xmlresources下面和工程appliction配置文件同级)

 

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <!--logstash地址,从application.properties中获取-->
    <springProperty scope="context" name="LOGSTASH_ADDRESS" source="logstash.address"/>

    <!--输出到logstash的appender-->
    <appender name="LOGSTASH" class="net.logstash.logback.appender.LogstashTcpSocketAppender">
        <!--可以访问的logstash日志收集端口-->
        <destination>${LOGSTASH_ADDRESS}</destination>
        <encoder class="net.logstash.logback.encoder.LoggingEventCompositeJsonEncoder">
            <providers>
                <timestamp>
                    <timeZone>Asia/Shanghai</timeZone>
                </timestamp>
                <pattern>
                    <pattern>
                        {
                        "app": "my-server",
                        "level": "%level",
                        "thread": "%thread",
                        "logger": "%logger{50} %M %L ",
                        "message": "%msg"
                        }
                    </pattern>
                </pattern>
                <stackTrace>
                    <throwableConverter class="net.logstash.logback.stacktrace.ShortenedThrowableConverter">
                        <maxDepthPerThrowable>100</maxDepthPerThrowable>
                        <rootCauseFirst>true</rootCauseFirst>
                        <inlineHash>true</inlineHash>
                    </throwableConverter>
                </stackTrace>
            </providers>
        </encoder>
    </appender>

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

 

7.启动springboot服务,这个时候我们会发现控制台不会再输出日志了,因为日志输出到logstash,再由logstash发送到es去了。

调用我们接口查看下服务是否成功启动了

说明服务已经成功启动,现在去看kibana查看日志信息

 

 8.搜索是否有myserver的索引,可以看到tomcat 8080端口启动的日志

 

 我们每次都这样搜索来看是不是很不方便,我们可以把这个索引加到discover中,后续只需要在里面搜索我们想要内容就行了

 

9.Management --->Index Patterns --->Create index pattern--->搜索匹配的索引然后创建

 

 

 

 

 

 创建好了就可以在kibana的index列表看见这个索引了

 

 

 

 现在就可以discover中使用这个索引了,不用再去dev tools工具中去写查询了

 

我们着看刚才调用接口打印的日志就可以在discover中看见了

 

 

 

 

 

10.discover中信息筛选:默认的筛选时间是15分钟内的,如果时间比较久了就需要重新选择下时间,然后输入要搜索的内容port,我们就可以看到之前服务起动的日志了

 

ELK简单的集成使用,大概就是这个样子了,当然logstash中还可以去过滤处理数据。像我们现在的日志在kibana里面的格式是很难看的。

posted @ 2020-03-26 22:21  白露非霜  阅读(1699)  评论(0编辑  收藏  举报
访问量