介绍
ELK是Elasticsearch、Logstash和Kibana三个开源项目的项目名称首字母缩写。这三个开源项目一起为我们提供了一个成熟且强大的实时日志集中处理解决方案。其中,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的大体流程如下图所示:
说明:
- Spring Boot应用产生日志数据,使用
Logback日志框架记录日志。 Logstash作为日志收集器,接收Spring Boot应用发送的日志数据。Logstash解析和过滤日志数据,可能会对其进行格式化和处理。- 处理后的日志数据被发送到
Elasticsearch,Elasticsearch将日志数据存储在分布式索引中。 Kibana连接到Elasticsearch,可以查看存储在Elasticsearch中的日志数据。