通过docker-compose部署elk日志系统,并使用springboot整合

ELK是一种强大的分布式日志管理解决方案,它由三个核心组件组成:

  1. Elasticsearch:作为分布式搜索和分析引擎,Elasticsearch能够快速地存储、搜索和分析大量的日志数据,帮助用户轻松地找到所需的信息。

  2. Logstash:作为数据处理管道,Logstash能够从各种来源收集日志数据,并进行过滤、转换和发送到Elasticsearch等目标存储中。

  3. Kibana:作为Web界面,Kibana能够帮助用户可视化和分析日志数据,创建仪表板和报表,以便更好地理解和监控业务中的日志信息。

ELK能够帮助业务实现日志数据的集中管理、快速搜索和分析,从而提高故障排查的效率,优化系统性能,以及发现潜在的安全威胁。通过ELK,业务可以更好地利用日志数据来支持决策和监控业务运营。

下面,本文会介绍ELK的安装以及使用

 搭建ELK

准备docker-compose.yml

version: '3'
services:
  elasticsearch:
    image: elasticsearch:6.4.0
    container_name: elasticsearch
    environment:
      - "cluster.name=elasticsearch" #设置集群名称为elasticsearch
      - "discovery.type=single-node" #以单一节点模式启动
      - "ES_JAVA_OPTS=-Xms2048m -Xmx2048m" #设置使用jvm内存大小
    volumes:
      - /mnt/data3/dockerfiles/elk2/elk_stanrd/elasticsearch/plugins:/usr/share/elasticsearch/plugins #插件文件挂载
      - /mnt/data3/dockerfiles/elk2/elk_stanrd/elasticsearch/data:/usr/share/elasticsearch/data #数据文件挂载
    ports:
      - 9200:9200
      - 9300:9300
  kibana:
    image: kibana:6.4.0
    container_name: kibana
    links:
      - elasticsearch:es #可以用es这个域名访问elasticsearch服务
    depends_on:
      - elasticsearch #kibana在elasticsearch启动之后再启动
    environment:
      - "elasticsearch.hosts=http://es:9200" #设置访问elasticsearch的地址
    ports:
      - 5601:5601
  logstash:
    image: logstash:6.4.0
    container_name: logstash
    volumes:
      - /mnt/data3/dockerfiles/elk2/elk_stanrd/logstash/logstash.conf:/usr/share/logstash/pipeline/logstash.conf #挂载logstash的配置文件
    depends_on:
      - elasticsearch #kibana在elasticsearch启动之后再启动
    links:
      - elasticsearch:es #可以用es这个域名访问elasticsearch服务
    ports:
      - 4560:4560

logstash.conf

input {
  tcp {
    mode => "server"
    host => "0.0.0.0"
    port => 4560
    codec => json_lines
  }
}

output {

  if "java" in [tags] {
    elasticsearch {
      hosts => "es:9200"
      index => "java-logs-%{+YYYY.MM.dd}"
    }
  }


  if "python" in [tags] {
    elasticsearch {
      hosts => "es:9200"
      index => "python-logs-%{+YYYY.MM.dd}"
    }
  }
}

启动 

docker-compose up -d

开启kibana的端口

centos开启防火墙

 访问

ip:{你的端口:5601}

通过docker-compose部署elk日志系统,并使用springboot整合_第1张图片

看到这样的界面,代表运行成功

配置索引

点击management--->kibana--->index patterns

通过docker-compose部署elk日志系统,并使用springboot整合_第2张图片

 通过docker-compose部署elk日志系统,并使用springboot整合_第3张图片

通过docker-compose部署elk日志系统,并使用springboot整合_第4张图片 这里我会选择这一个,点击create index pattern创建

springboot整合ELK

配置maven

需要加入


    net.logstash.logback
    logstash-logback-encoder
    5.3

打印日志的时候可以使用lombok或其他框架,但是注意一下之前使用log攻击的bug,尽量跳过这些版本,注意,低版本的springboot默认的日志库有问题。

配置文件

logging:
  config: ./config/logback-spring.xml

日志配置文件模板


    
    
    
    
        
            %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
        
    
    
    
    
    
    
    




    
    
        
        ip:4560
        
        
            
                
                    UTC
                
                
                    
			    {
			            "tags": "java",
                        "thread": "%thread",
                        "logLevel": "%level",
                        "message": "%message",
                        "class": "%logger{40}",
                        "serviceName": "asr_hot_word",
                        "trace": "%X{X-B3-TraceId:-}",
                        "span": "%X{X-B3-SpanId:-}",
                        "exportable": "%X{X-Span-Export:-}",
                        "pid": "${PID:-}"

                        }
                    
                
            
        
    

    
    
        
        
    


配置好启动,点击discovery即可查看日志信息

你可能感兴趣的:(springboot,docker,docker,elk,spring,boot)