springboot整合ELK进行日志收集

ELK简介
ELK是Elasticsearch+Logstash+Kibana简称

Elasticsearch 是一个分布式的搜索和分析引擎,可以用于全文检索、结构化检索和分析,并能将这三者结合起来。Elasticsearch 基于 Lucene 开发,现在是使用最广的开源搜索引擎之一。

Logstash 简单来说就是一根具备实时数据传输能力的管道,负责将数据信息从管道的输入端传输到管道的输出端,与此同时这根管道还可以让你根据自己的需求在中间加上滤网,Logstash提供了很多功能强大的滤网以满足你的各种应用场景。

Kibana 是一个开源的分析与可视化平台,设计出来用于和Elasticsearch一起使用的。你可以用kibana搜索、查看、交互存放在Elasticsearch索引里的数据,使用各种不同的图标、表格、地图等,kibana能够很轻易的展示高级数据分析与可视化。

ELK下载安装
可以去官网分别下载安装:https://www.elastic.co/cn/downloads/past-releases#
需要提前安装JDK1.8。

1.下载并安装工具:
elasticsearch:6.7.0;
logstash:6.7.0;
kibana:6.7.0;
安装 logstash,配置config下的logstash-sample.conf:

# Sample Logstash configuration for creating a simple
# Beats -> Logstash -> Elasticsearch pipeline.

input {
  #beats {
  #  port => 5044
  #}
   tcp {
        port => 4560
        codec => json_lines
    }
}

output {
  elasticsearch {
    hosts => ["http://localhost:9200"]
    index => "%{[@metadata][beat]}-%{[@metadata][version]}-%{+YYYY.MM.dd}"
    #user => "elastic"
    #password => "changeme"
  }
}

安装elasticsearch,kibana;
启动顺序:logstash>=elasticsearch > kibana > springboot

2.启动:
启动logstash,bin下执行: logstash -f ../config/logstash-sample.conf


image.png

启动elasticsearch:bin下执行:elasticsearch:bin


image.png

启动kibana,bin下执行:kibana
image.png

3.建立springboot项目并运行:
项目整体架构:


image.png

pom.xml引入依赖:


        
            org.springframework.boot
            spring-boot-starter
        

        
            org.springframework.boot
            spring-boot-starter-test
            test
        

        
        
            org.springframework.boot
            spring-boot-devtools
            true
        

        
        
            org.springframework.boot
            spring-boot-starter-web
        

        
        
            org.springframework.boot
            spring-boot-starter-thymeleaf
        

        
            org.springframework.boot
            spring-boot-starter-data-elasticsearch
        


        
        
            com.alibaba
            fastjson
            1.2.47
        

        
        
            org.apache.commons
            commons-lang3
            ${commons-lang3.version}
        

        
            org.projectlombok
            lombok
            provided
        


        
            io.springfox
            springfox-swagger2
            2.9.2
        
        
            io.springfox
            springfox-swagger-ui
            2.9.2
        
     
        
            net.logstash.logback
            logstash-logback-encoder
            5.1
        

    

application.properties文件:

#指定服务端口
server.port=8888
spring.application.name=测试
# ELASTICSEARCH (ElasticsearchProperties)
# Elasticsearch cluster name.
spring.data.elasticsearch.cluster-name=my-application
# Comma-separated list of cluster node addresses.
spring.data.elasticsearch.cluster-nodes=127.0.0.1:9300
# Whether to enable Elasticsearch repositories.
spring.data.elasticsearch.repositories.enabled=true

配置日志文件:logback.xml:



    
    
    
    
        
            
            %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg  %n
        
    
    
    
        
            
            ${LOG_HOME}/runtime-info-%d{yyyy-MM-dd}.log
            
            30
        
        
            
            %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n
        
        
            INFO
            ACCEPT
            DENY
        
        
        
            10MB
        
    
    
        
            
            ${LOG_HOME}/runtime-debug-%d{yyyy-MM-dd}.log
            
            30
        
        
            
            %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n
        
        
            DEBUG
            ACCEPT
            DENY
        
        
        
            10MB
        
    
    
        
            
            ${LOG_HOME}/runtime-error-%d{yyyy-MM-dd}.log
            
            30
        
        
            
            %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n
        
        
            ERROR
            ACCEPT
            DENY
        
        
        
            10MB
        
    

    
        
       
        localhost:4560
        
            {"appname":"jacob"}
        
    


    
    
        
        
        
        
        
    



编写代码,写入日志:

package com.cxh.springboot_elasticsearch.controller;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class TestController {

    Logger logger = LoggerFactory.getLogger(ElasticController.class);


    @RequestMapping("/cs")
    public String cs(){
        logger.info("测试log");
        for(int i = 0; i < 30; i++){
            logger.error("something wrong. id={}; name=Ryan-{};", i, i);
        }
        return "测试";
    }
}

运行springboot,浏览器打开:http://localhost:8888/cs

4.浏览器打开kibana界面:http://localhost:5601
点击management建立index pattern:

image.png

再点击discover界面可以查看:


image.png

个人座右铭:主动 行动 思考 反省 总结

你可能感兴趣的:(springboot整合ELK进行日志收集)