Logback+kafka+ELK搭建微服务日志

Logback+kafka+ELK搭建微服务日志

  • 前言
  • 环境准备
    • 安装zookeeper
    • 安装kafka
    • 安装elasticsearch
    • 安装logstash
    • 安装kibana
    • 配置Logback
      • pom文件改造
      • 新增logback-spring.xml
      • boot配置文件一下
    • 测试
    • kibana使用

前言

微服务下的日志不能采用原先单一架构的日志系统,因为日志文件分散在各个服务器上面,对于排查问题很不友好。我们的目标是把所有的服务产生的日志都聚合到一起。所以采用Logback+kafka+ELK的方法来搭建微服务日志。
大体流程是是通过logback打印日志,然后将日志通过kafka消息队列发送到Logstash,经过处理以后存储到Elasticsearch中,然后通过Kibana图形化界面进行分析和处理。

环境准备

  1. window环境
  2. Spring boot 2.0.3.RELEASE
  3. elasticsearch-7.3.0
  4. kafka_2.11-2.3.0
  5. kibana-7.3.0-windows-x86_64
  6. logstash-7.3.0
  7. zookeeper-3.4.12

安装zookeeper

下载地址:http://mirror.bit.edu.cn/apache/zookeeper/
因为kafka依赖zookeeper,所以我们需要按照zookeeper。下载下来之后直接解压。
将目录中conf下的配置文件 zoo_sample.cfg 重命名 zoo.cfg即可(使用默认配置即可)。

#默认端口2181 
clientPort=2181
之后 双击bin\zkServer.cmd 即可

安装kafka

下载地址:http://kafka.apache.org/downloads
注意要下载二进制的别下载源码
下载下来之后直接解压。一样使用默认的配置文件即可

# 如果zookeeper的端口修改过 则需要将这里需要改一下
zookeeper.connect=localhost:2181
(建议把地址改成ip)
listeners=PLAINTEXT://172.16.12.67:9092
cmd启动 bin\windows>kafka-server-start.bat ..\..\config\server.properties

安装elasticsearch

下载地址:https://www.elastic.co/cn/downloads/elasticsearch
下载下来之后直接解压。一样使用默认的配置文件即可

双击 bin\elasticsearch.bat

安装logstash

下载地址:https://www.elastic.co/cn/downloads/logstash
下载下来之后直接解压。

# 修改logstash-simple.con  注意这里写的kafka配置到时候要和Logback配置的一样
input {
    kafka {
        bootstrap_servers => "172.16.12.67:9092"
        topics => ["kafka-log"]
        codec => json
        }
}
 
output {
    elasticsearch {
        hosts => ["127.0.0.1:9200"]
        index => "kafka-log-%{+YYYY.MM.dd}"
    }
    stdout{
        codec=>rubydebug
    }
}

cmd启动 logstash.bat -f logstash-simple.conf (我把配置文件放到bin目录下了 不放的话就写配置文件的相对地址)

安装kibana

下载地址:https://www.elastic.co/cn/downloads/kibana
下载下来之后直接解压。一样使用默认的配置文件即可

双击启动 kibana.bat即可

配置Logback

pom文件改造

			
            
                org.apache.kafka
                kafka-clients
                2.1.1
            
            
                net.logstash.logback
                logstash-logback-encoder
                4.11
            
            
                com.github.danielwegener
                logback-kafka-appender
                0.1.0
                runtime
            

新增logback-spring.xml

Logback+kafka+ELK搭建微服务日志_第1张图片






    
    kafka-log-test
    
    
    
    

    
    
        
        
            %d{HH:mm:ss.SSS} %contextName [%thread] %-5level %logger{36} - %msg%n
        
    

    
    
        
        ${logDir}/${logName}.log
        
            ${logDir}/history/${myspringboottest_log}.%d{yyyy-MM-dd}.rar
            30
        
        
            %d{HH:mm:ss.SSS} %contextName [%thread] %-5level %logger{36} - %msg%n
        
    


    
        
            
                false
                true
                {"system":"kafka-log-test"}
                
            
            UTF-8
        
        
        kafka
        
        
        bootstrap.servers=172.16.12.67:9092

    


    
    
        true
        true
        0
        2048
        
    

    
        
        
        
    


boot配置文件一下

logging:
  config: classpath:logback-spring.xml

测试

logger.info("调用成功");

如果出现这种的日志则说明ok了
Logback+kafka+ELK搭建微服务日志_第2张图片

kibana使用

新建一下index patterns 就行了 索引就是logstash配置文件里面配置的。
Logback+kafka+ELK搭建微服务日志_第3张图片
Logback+kafka+ELK搭建微服务日志_第4张图片

你可能感兴趣的:(cloud)