springboot集成Elk做日志系统

 一、ELK 介绍

ELK是三个开源软件的缩写,分别表示:elasticsearch、logstash、kibanaElasticsearch、Logstash、Kibana作用:

Elasticsearch: 是个开源分布式搜索引擎,它的特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制,restful风格接口,多数据源,自动搜索负载等 ,用于存储日志信息

Logstash: 日志收集,springboot利用Logstash把日志发送个Logstash,然后Logstash将日志传递给Elasticsearch。

Kibana:通过web端对日志进行可视化操作

二、本次采用实现日志收集的方案

logback产生日志->logstash->elasticsearch->kibana

springboot集成Elk做日志系统_第1张图片

 springboot集成Elk做日志系统_第2张图片

优点:

​ 此架构搭建简单,容易上手

缺点:

1、每个节点部署logstash,运行时占用CPU,内存大,会对节点性能造成一定的影响

​ 2、没有将日志数据进行缓存,存在丢失的风险

三、ELK的安装

windows 安装 ELK(Elasticsearch,Logstash,kibana)
下载相应软件包:

Elasticsearch 下载:https://www.elastic.co/downloads/elasticsearch

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

kibana 下载:https://www.elastic.co/downloads/kibana

重点讲一下logstash的安装

首先在 logstash的bin目录下 新建一个 logstash.conf 文件

input { 

# stdin { }

tcp { 

# host:port就是上面appender中的destination,

# 这里其实把Logstash作为服务,开启9250端口接收logback发出的消息 
#这个需要配置成本机IP,不然logstash无法启动
host => "127.0.0.1" 
#端口号
port => 9250 
mode => "server" tags => ["tags"] 
#将日志以json格式输入
codec => json_lines 

}

}

filter {
  grok {
    match => [
      "message","%{NOTSPACE:tag}[T ]%{NOTSPACE:method}[T ]%{NOTSPACE:api}[T ]%{NOTSPACE:params}",
      "message","%{NOTSPACE:tag}[T ]%{NOTSPACE:author}[T ]%{NOTSPACE:msg}"
      ]
  }
}

output {

 elasticsearch { 
        hosts => ["localhost:9200"] 
        index => "logstash-test-%{+YYYY.MM.dd}"
     }

stdout { codec => rubydebug }

} 

springboot集成Elk做日志系统_第3张图片

然后在新建一个文件 logstashrunservice.bat

输入logstash.bat -f logstash.conf 并保存

 logstash.bat -f logstash.conf

springboot集成Elk做日志系统_第4张图片

至此logstash安装完成,elasticsearch和kibana的安装比较简单,此处不多加赘述。

使用 NSSM 软件 将 Elasticsearch,Logstash,kibana 都安装成windows服务

下载NSSM: http://www.nssm.cc/download

下载后解压到文件夹

springboot集成Elk做日志系统_第5张图片

此处还是以logstash为例进行安装服务,elasticsearch和kibana的安装一样。

将cmd 当前所在目录设置到 nssm.exe 的目录下运行 nssm install

nssm install

springboot集成Elk做日志系统_第6张图片

springboot集成Elk做日志系统_第7张图片

单击 install service 就可以了。

springboot集成Elk做日志系统_第8张图片

服务安装成功之后,在浏览器中输入对应的地址即刻查看安装是否成功

在浏览器中输入 http://127.0.0.1:9200 访问elasticsearch

springboot集成Elk做日志系统_第9张图片

在浏览器中输入 http://127.0.0.1:9600 访问logstash

springboot集成Elk做日志系统_第10张图片

在浏览器中输入 http://127.0.0.1:5601 访问kibana

springboot集成Elk做日志系统_第11张图片

四、Spring Boot 搭建 ELK正确看日志的配置流程(logback)

1.系统中添加依赖

maven版本
  
      net.logstash.logback
      logstash-logback-encoder
      6.6
  

2.系统中logback.xml的配置

让logback的日志输出到logstash


    
    
    
    
        
            %date{yyyy-MM-dd HH:mm:ss} %highlight(%-5level) (%file:%line\)- %m%n
            
            UTF-8
        
    

    
    
    
    
        log/ant-back.log
        
        
        
            
            
            log/ant-back.%d.%i.log
            
            120
            
                
                100MB
            
        
        
            
            
                %d %p (%file:%line\)- %m%n
            
            
            UTF-8
        
    
    
   
    
    
    
    




    
    
        
        127.0.0.1:9250
        
        
            
                
                    UTC
                
                
                   
                        {
                        "thread": "%thread",
                        "logLevel": "%level",
                        "message": "%message",
                        "class": "%logger{40}",
                        "serviceName": "${springAppName:-}",
                        "trace": "%X{X-B3-TraceId:-}",
                        "span": "%X{X-B3-SpanId:-}",
                        "exportable": "%X{X-Span-Export:-}",
                        "pid": "${PID:-}"

                        }
                    
                
            
        
    

    
    
        
        
    


3.Kibana的使用

重启自己本地的项目,去浏览器的ELk中建立索引,查看刚才从系统中导入logstash的日志

3.1、建立索引模式

springboot集成Elk做日志系统_第12张图片

springboot集成Elk做日志系统_第13张图片

springboot集成Elk做日志系统_第14张图片

springboot集成Elk做日志系统_第15张图片

springboot集成Elk做日志系统_第16张图片索引模式创建完成,如何查看日志呢?

springboot集成Elk做日志系统_第17张图片

springboot集成Elk做日志系统_第18张图片

五、Spring Boot 搭建 ELK正确看日志的配置流程(log4j)

pom依赖

需要将starter和stater-web中引入的log包排除,再引入log4j2依赖包


    org.springframework.boot
    spring-boot-starter
    2.1.5.RELEASE
    
        
            org.springframework.boot
            spring-boot-starter-logging
        
    


    org.springframework.boot
    spring-boot-starter-web
    2.1.5.RELEASE
    
        
            org.springframework.boot
            spring-boot-starter-logging
        
    


    org.springframework.boot
    spring-boot-starter-log4j2
    2.1.5.RELEASE

配置文件修改

log4j2.xml配置文件中内容





    
    
    
        
        
        
        
        
        
    

    
        
            
            
            
            
        
        
        
            
            
            
            
                
                
                
            
            
            
        

        
        
            
            
            
            
                
                
                
            
            
            
        

        
        
            
            
            
            
                
                
                
            
            
            
        
        
            
        
    

    
    
    
        
        
            
        
        
        
        
            
        

        
            
            
            
            
            
        
    

你可能感兴趣的:(spring,boot,elk,后端)