• SpringBoot+ELK日志系统搭建


    一、ELK是什么

    “ELK”是三个开源项目的首字母缩写,这三个项目分别是:Elasticsearch、Logstash 和 Kibana。Elasticsearch 是一个搜索和分析引擎。Logstash 是服务器端数据处理管道,能够同时从多个来源采集数据,转换数据,然后将数据发送到诸如 Elasticsearch 等“存储库”中。Kibana 则可以让用户在 Elasticsearch 中使用图形和图表对数据进行可视化。

    SpringBoot可以通过集成logstash-logback-encoder插件收集日志并写入到ELK中。当然如果你使用的是log4j2或其他日志框架,只需要集成对应插件即可。

    87548-20191209214451158-518956500

    二、ELK搭建

    本文采用docker-compose方式部署ES+Logstash+Kibana

    新建项目目录

    $ mkdir elk-demo
    

    创建docker-compose文件,内容如下:

    version: '3.5'
    
    services: 
      elasticsearch:
        container_name: elk-es
        image: elasticsearch:6.5.0
        restart: always
        ports: 
          - 9200:9200
          - 9300:9300
        environment:
          - TZ=Asia/Shanghai
        volumes: 
          - ./es/data:/usr/share/elasticsearch/data
          - ./es/es-single.yml:/usr/share/elasticsearch/config/elasticsearch.yml
      kibana:
        container_name: elk-kibana
        image: kibana:6.5.0
        restart: always
        ports:
          - 5601:5601
        environment: 
          - elasticsearch.hosts=http://elasticsearch:9200
        depends_on: 
          - elasticsearch
      logstash:
        container_name: elk-logstash
        image: logstash:6.5.0
        restart: always
        ports: 
          - 5044:5044
          - 9600:9600
    

    新建elasticsearch目录

    $ mkdir -p es/data
    

    将elasticsearch配置文件放在es文件夹中,es-single.yml文件内容如下:

    cluster.name: elasticsearch-single
    node.name: es-single-node-1
    network.bind_host: 0.0.0.0
    http.port: 9200
    transport.tcp.port: 9300
    http.cors.enabled: true
    http.cors.allow-origin: "*"
    node.master: true
    node.data: true
    action.auto_create_index: true
    

    完成之后回到项目根目录启动ELK

    $ docker-compose up -d
    

    安装ik分词器

    $ docker exec -it elk-es /bin/bash
    $ cd plugins/
    # 根据elasticsearch选择插件版本,当前使用6.5.0版本
    $ wget http://github.com/medcl/elasticsearch-analysis-ik/releases/download/v6.5.0/elasticsearch-analysis-ik-6.5.0.zip
    

    安装过程由于网络原因可能会比较慢或者安装失败,可以参考手动安装文档,采用本地打包安装方式。如果无法正常克隆git仓库的话,可以选择使用码云极速下载

    下载完成之后,解压到指定目录

    $ mkdir elasticsearch-analysis-ik
    $ unzip elasticsearch-analysis-ik-6.5.0.zip -d elasticsearch-analysis-ik
    

    其他插件可以根据实际需要安装,然后重启容器,观察是否加载ik分词器

    $ docker restart elk-es
    $ docker logs elk-es | grep ik
    

    配置logstash

    $ docker exec -it elk-logstash /bin/bash
    $ cd /usr/share/logstash/config/
    # 修改xpack.monitoring.elasticsearch.url值为http://elasticsearch:9200
    $ vi logstash.yml
    # 修改logstash.conf
    $ cd /usr/share/logstash/pipeline/
    $ vi logstash.conf
    

    logstash.conf

    input {
        tcp {
            port => 5044
            codec => json_lines
        }
    }
    output {
        elasticsearch {
            hosts => ["http://elasticsearch:9200"]
            index => "log-%{+YYYY.MM.dd}"
        }
        stdout {
            codec => rubydebug
        }
    }
    

    重启logstash

    $ docker restart elk-logstash
    # 观察日志是否连接es正常
    $ docker logs -f elk-logstash
    

    elasticsearch启动可能较慢,kibana刚启动的时候连接不上,只需要等待几分钟,等elasticsearch完全启动之后即可。

    QQ20200415-174606@2x

    三、SpringBoot接入

    在pom文件中引入logstash-logback-encoder

    <dependency>
        <groupId>net.logstash.logback</groupId>
        <artifactId>logstash-logback-encoder</artifactId>
        <version>6.3</version>
    </dependency>
    

    添加日志配置文件logback-spring.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <configuration>
        <include resource="org/springframework/boot/logging/logback/base.xml" />
    
        <appender name="LOGSTASH" class="net.logstash.logback.appender.LogstashTcpSocketAppender">
            <destination>localhost:5044</destination>
            <encoder charset="UTF-8" class="net.logstash.logback.encoder.LogstashEncoder" />
        </appender>
    
        <root level="INFO">
            <appender-ref ref="LOGSTASH" />
            <appender-ref ref="CONSOLE" />
        </root>
    </configuration>
    

    配置文件中的destination值根据实际环境修改,然后启动SpringBoot项目,通过kibana查看日志。

    首先通过Management创建index pattern,通过logstash.conf文件知道,日志收集格式是log-%{+YYYY.MM.dd},index patter即为log-*,创建好之后通过Discover菜单查看日志。

    20200415223219

    20200415223618

    至此SpringBoot+ELK环境搭建完成。

  • 相关阅读:
    年龄大的普通程序员最后的出路是哪里?
    PHP7数组的底层实现
    MySQL mysqldump数据导出详解
    swoole高性能赛事直播平台(笔记)
    防止图片盗链和资源恶意下载
    由Response.Redirect引发的"Thread was being aborted. "异常
    关于前台调用后台事件__doPostBack函数
    页面拖拽效果
    bs和cs缩放图片
    hideFocus(小技巧)
  • 原文地址:https://www.cnblogs.com/thisismarc/p/12709269.html
Copyright © 2020-2023  润新知