zoukankan      html  css  js  c++  java
  • springboot在windows集成elk

    说明:elk指的是Elasticsearch、Logstash、Kibana的简称

    Elasticsearch:是实时全文搜索和分析引擎,提供搜集、分析、存储数据三大功能;

    Logstash:是一个用来搜集、分析、过滤日志的工具。

    Kibana:是一个基于Web的图形界面,用于搜索、分析和可视化存储在 Elasticsearch指标中的日志数据。

    elk的测试版本:6.2.2

    这里简单搭建elk来收集springBoot生产的日志

    1:安装elk

    1.1安装elasticsearch

    ​ 1.1.1 下载ElasticSearch,下载地址:https://www.elastic.co/downloads/elasticsearch

    ​ 下载zip压缩包,并解压

    ​ 1.1.2 进入bin目录下,双击执行elasticsearch.bat

    ​ 1.1.3 启动后在浏览器上访问http://localhost:9200,如下图展示则安装启动成功。

    1.2安装elasticsearch-head插件

    ​ 1.2.1在谷歌浏览器的网上应用商店增加扩展插件

    ​ 1.2.2点击插件可查看Elasticsearch的索引文件

    1.3安装Logstash

    ​ 1.3.1下载Logstash https://www.elastic.co/downloads/logstash

    ​ 下载zip包并解压到D:elasticsearch-6.2.2logstash-6.2.2

    ​ 1.3.2在bin目录下新建logstash.conf文件,并填入以下配置内容

    input {
     tcp {
     mode => "server"
     host => "127.0.0.1"
     port => 4560
     codec => json_lines
     }
    }
    output {
      elasticsearch {
        hosts => "127.0.0.1:9200"
        index => "springboot-logstash-%{+YYYY.MM.dd}"
      }
      stdout{  
          codec=>rubydebug  
      }
    }
    

    ​ 1.3.3测试输入消息转发到Elasticsearch

    ​ 在cmd命令切换到D:elasticsearch-6.2.2logstash-6.2.2in,并logstash -e "input { stdin { } } output { elasticsearch { hosts => ['127.0.0.1:9200'] } }"

    ​ 输入hello world回车发送

    看到logstash-YYYY-MM-DD索引 并能看到hello world,说明配置成功了

    ​ 1.3.4运行Logstash,在cmd命令切换到D:elasticsearch-6.2.2logstash-6.2.2in,执行logstash -f logstash.conf

    1.4安装Kibana

    ​ 1.4.1 下载地址 https://www.elastic.co/downloads/kibana ,下载zip压缩包,并解压

    ​ 1.4.2 执行kibana.bat,访问http://localhost:5601/,如下图所示,则成功

    2:springboot集成logstash

    新建一个springboot工程

    pom 添加依赖

    <dependencies>
        <!--集成logstash-->
        <dependency>
            <groupId>net.logstash.logback</groupId>
            <artifactId>logstash-logback-encoder</artifactId>
            <version>5.3</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.16.22</version>
        </dependency>
    </dependencies>
    

    springboot默认内置logback,不需要增加依赖

    在资源的resource文件夹下新建logback-spring.xml(注意destination的地址必须要和logstash的host和port一致),配置内容:

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE configuration>
    <configuration>
        <include resource="org/springframework/boot/logging/logback/defaults.xml"/>
        <include resource="org/springframework/boot/logging/logback/base.xml"/>
    
        <springProperty scope="context" name="appName" source="Web Server's Default Page"/>
    
        <!-- 日志在工程中的输出位置 -->
        <property name="LOG_FILE" value="${BUILD_FOLDER:-build}/${appName}"/>
    
        <!-- 控制台的日志输出样式 -->
        <property name="CONSOLE_LOG_PATTERN" value="%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(${PID:- }){magenta} %clr(---){faint} %clr([%15.15t]){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}}"/>
    
        <!-- 控制台输出 -->
        <appender name="console" class="ch.qos.logback.core.ConsoleAppender">
            <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
                <level>INFO</level>
            </filter>
            <!-- 日志输出编码 -->
            <encoder>
                <pattern>${CONSOLE_LOG_PATTERN}</pattern>
                <charset>utf8</charset>
            </encoder>
        </appender>
    
        <!--logstash配置-->
        <appender name="LOGSTASH" class="net.logstash.logback.appender.LogstashTcpSocketAppender">
            <destination>127.0.0.1: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>
            <!--<encoder charset="UTF-8" class="net.logstash.logback.encoder.LogstashEncoder"/>-->
        </appender>
    
        <root level="INFO">
            <appender-ref ref="LOGSTASH"/>
            <appender-ref ref="CONSOLE"/>
        </root>
    
    </configuration>
    

    接着在配置文件application.yml,添加配置:

    logging:
      level:
        root=INFO:
      config: classpath:logback-spring.xml
    

    增加个测试日志的controller接口

    @Slf4j
    @Controller
    public class DemoController {
    
        @RequestMapping("/")
        @ResponseBody
       public String home() {
           log.info("hello world!");
          return "hello world!";
          
       }
    
    }
    

    重复上述的启动Elasticsearch、Logstash、Kibana过程

    启动springboot项目测试,访问elasticsearch-head,若出现springboot-logstash-*对应日期的索引,说明集成logstash成功

    打开http://localhost:5601/,添加索引,采集springboot-logstash*的索引的消息

    使用 Discover 查询日志信息,先访问http://localhost:8081/

    输入hello world实时查询采集的日志

  • 相关阅读:
    标准差,绝对中位差
    批处理计时
    四元数压缩
    float类型的存储方式
    通俗易懂理解——浮点与定点的计算机表示及互转
    max MultiRes修改器
    Topogun拓补工具
    3dmax高模到低模烘法线
    在线曲线绘制
    景深
  • 原文地址:https://www.cnblogs.com/next-yrz/p/14361368.html
Copyright © 2011-2022 走看看