• 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里面的格式是很难看的。

  • 相关阅读:
    Hibernate笔记
    Struts2笔记(学struts2只需要这一篇文章)
    Linux开机启动和登录时各个文件的执行顺序
    Java虚拟机之垃圾回收算法思想总结
    码农雷林鹏:php概述
    码农雷林鹏:php教程
    雷林鹏分享:JDBC驱动类型
    码农雷林鹏教程分享:JDBC实例代码
    雷林鹏分享:JDBC环境设置
    雷林鹏分享:JDBC SQL语法
  • 原文地址:https://www.cnblogs.com/nijunyang/p/12577110.html
Copyright © 2020-2023  润新知