Elk笔记

46 阅读2分钟

介绍

ELK是ElasticsearchLogstashKibana三个开源项目的项目名称首字母缩写。这三个开源项目一起为我们提供了一个成熟且强大的实时日志集中处理解决方案。其中,Logstash负责收集日志数据,Elasticsearch用于存储并索引数据,Kibana提供了一个可视化界面查看Elasticsearch中存储的日志数据。

安装

docker方式

docker-compose方式

version: '3'

# 网桥elk -> 方便相互通讯
networks:
  elk:

services:
  elasticsearch:
    image: registry.cn-hangzhou.aliyuncs.com/zhengqing/elasticsearch:7.14.1      # 原镜像`elasticsearch:7.14.1`
    container_name: elk_elasticsearch         # 容器名为'elk_elasticsearch'
    restart: unless-stopped                   # 指定容器退出后的重启策略为始终重启,但是不考虑在Docker守护进程启动时就已经停止了的容器
    volumes:                                  # 数据卷挂载路径设置,将本机目录映射到容器目录
      - "./elk/elasticsearch/data:/usr/share/elasticsearch/data"
      - "./elk/elasticsearch/logs:/usr/share/elasticsearch/logs"
      - "./elk/elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml"
#      - "./elk/elasticsearch/config/jvm.options:/usr/share/elasticsearch/config/jvm.options"
    environment:                              # 设置环境变量,相当于docker run命令中的-e
      TZ: Asia/Shanghai
      LANG: en_US.UTF-8
      TAKE_FILE_OWNERSHIP: "true"  # 权限
      discovery.type: single-node
      ES_JAVA_OPTS: "-Xmx512m -Xms512m"
      ELASTIC_PASSWORD: "123456" # elastic账号密码
    ports:
      - "9200:9200"
      - "9300:9300"
    networks:
      - elk

  kibana:
    image: registry.cn-hangzhou.aliyuncs.com/zhengqing/kibana:7.14.1       # 原镜像`kibana:7.14.1`
    container_name: elk_kibana
    restart: unless-stopped
    volumes:
      - "./elk/kibana/config/kibana.yml:/usr/share/kibana/config/kibana.yml"
    ports:
      - "5601:5601"
    depends_on:
      - elasticsearch
    links:
      - elasticsearch
    networks:
      - elk

  logstash:
    image: registry.cn-hangzhou.aliyuncs.com/zhengqing/logstash:7.14.1     # 原镜像`logstash:7.14.1`
    container_name: elk_logstash
    restart: unless-stopped
    environment:
      LS_JAVA_OPTS: "-Xmx512m -Xms512m"
    volumes:
      - "./elk/logstash/data:/usr/share/logstash/data"
      - "./elk/logstash/config/logstash.yml:/usr/share/logstash/config/logstash.yml"
#      - "./elk/logstash/config/logstash.conf:/usr/share/logstash/config/logstash.conf"
      - "./elk/logstash/config/small-tools:/usr/share/logstash/config/small-tools"
#    command: logstash -f /usr/share/logstash/config/logstash.conf    # 指定logstash启动时使用的配置文件 - 指定单个文件
    command: logstash -f /usr/share/logstash/config/small-tools       # 指定logstash启动时使用的配置文件 - 指定目录夹(系统会自动读取文件夹下所有配置文件,并在内存中整合)
    ports:
      - "9600:9600"
#      - "10001-10010:10001-10010"
      - "1218:1218"
      - "20010:20010"
      - "20030:20030"
      - "20040:20040"
    depends_on:
      - elasticsearch
    networks:
      - elk

SpringBoot接入ELK

SpringBoot日志接入ELK

Spring Boot应用输出日志到ELK的大体流程如下图所示: ELK

说明:

  1. Spring Boot应用产生日志数据,使用Logback日志框架记录日志。
  2. Logstash作为日志收集器,接收Spring Boot应用发送的日志数据。
  3. Logstash解析和过滤日志数据,可能会对其进行格式化和处理。
  4. 处理后的日志数据被发送到ElasticsearchElasticsearch将日志数据存储在分布式索引中。
  5. Kibana连接到Elasticsearch,可以查看存储在Elasticsearch中的日志数据。