SpringCloud中使用ELK处理日志

功能很简单:在工程中使用logback记录日志,通过logstash的tcp传入es。

ElasticSearch LogStash Kibana 都是7.3

EurekaServer:提供注册中心

ServiceProvider:启动9002,9003两个端口作为服务提供者

FeignClient:使用Feign进行消费

 

ServiceProvider服务中提供Restful接口,http://localhost:9002/provider/getSomthing 返回当前服务的端口号

FeignClient消费者通过Feignhttp://localhost/9004/feign/getPort调用ServiceProvider服务,获取服务的端口号

 

日志记录在·ServiceProvider工程中

首先在pom中引入依赖



	net.logstash.logback
	logstash-logback-encoder
	6.1

在/src/main/resources/路径下新建logback.xml



    ProviderLog
    
    
    
    
    
    
    
    
    
    
        127.0.0.1:5044
        
        
        
            
            
                
                
                
                
                
                
                
                
                
                    UTC
                
                
                    
                        
                        
                        
                        
                        
                        
                        {
                        "app": "${springAppName}_${serverPort}",
                        "level": "%level",
                        "thread": "%thread",
                        "class": "%logger{40}",
                        "message": "%message"
                        }
                    
                

            
        
    
    
    
        
            
            %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n
        
    
    
    
        
            
            ${LOG_HOME}/system.log.%d{yyyy-MM-dd}.log
            
            30
        
        
            
            %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n
        
        
        
            10MB
        
    

    
    
        
        
        
    

Controller如下

package com.zzj.cloud.serviceprovider.controller;


import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RequestMapping("/provider")
public class ProviderController {

    Logger logger = LoggerFactory.getLogger("ProviderController");
    @Value("${server.port}")
    private String port;

    @GetMapping("/getSomething")
    public String getPort(){
        //此处记录日志,会在console打印出来,同时会发送至5044被logstash记录,转存至es
        logger.info("There comes a request,the response is:" + port);
        return port;
    }
}

在访问接口之后,可以在kibana看到如下记录。

SpringCloud中使用ELK处理日志_第1张图片

然后添加索引,Management -> Index management -> Kibana -> Index Patterns 点击Create index pattern,在输入框输入刚才的索引名字logstash-2019.08.05-000001,点击Next Step

SpringCloud中使用ELK处理日志_第2张图片

选择时间戳 @timestamp,选择Create index pattern完成。

SpringCloud中使用ELK处理日志_第3张图片

 

创建完毕后,会展示出所有的关键字

SpringCloud中使用ELK处理日志_第4张图片

然后回到Discover页面

SpringCloud中使用ELK处理日志_第5张图片

 

选择logstash-2019.08.05-000001,选择不同的fields字段进行筛选和展示

SpringCloud中使用ELK处理日志_第6张图片

_source是默认全部字段,其中自定义的app,class是在logback.xml中配置的关键字,会在此处展示。app显示的是服务名,如果是其他工程,则会显示对应的工程名,class是对应的类名,等等。都可以在详情中看到。

SpringCloud中使用ELK处理日志_第7张图片

SpringCloud中使用ELK处理日志_第8张图片

至此,简单的ELK环境就搭建完毕,并且可以将系统日志通过logstash传入es中,进行查询展示。

ELK的功能不止于此,可以做日志处理,也可以做类似solr的实时查询。

 

你可能感兴趣的:(elasticsearch,SpringCloud,ELK搭建及使用)