ELK日志分析平台快速搭建与使用
简介
基于 docker-compose自动编排ElasticSearch + Logstash + Kibana 实现日志分析平台的快速搭建。除此之外也可网上下载对应资源,通过配置完成离线环境搭建。
本次使用了一台2c4g的云服务作为搭建基础
-
ElasticSearch
主要用来日志存储
es是一个基于Lucene的搜索服务器。提供搜集、分析、存储数据三大功能。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java开发的,并作为Apache许可条款下的开放源码发布,是当前流行的企业级搜索引擎。设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。
-
Kibana
主要用于日志的展示
kibana是一个优秀的前端日志展示框架,它可以非常详细的将日志转化为各种图表,为用户提供强大的数据可视化支持,它能够搜索、展示存储在 Elasticsearch 中索引数据。使用它可以很方便的用图表、表格、地图展示和分析数据。
-
Logstash
主要用来日志的搜集
主要是用来日志的搜集、分析、过滤日志的工具。用于管理日志和事件的工具,你可以用它去收集日志、转换日志、解析日志并将他们作为数据提供给其它模块调用,例如搜索、存储等。
搭建
docker-compose 文件
基于docker-compose编排ELK所需三个基本应用,编排文件内容如下:
version: '3.7'
services:
elasticsearch:
image: elasticsearch:7.6.2
container_name: elasticsearch
privileged: true
user: root
environment:
#设置集群名称为elasticsearch
- cluster.name=elasticsearch
#以单一节点模式启动
- discovery.type=single-node
#设置使用jvm内存大小
- ES_JAVA_OPTS=-Xms1024m -Xmx1024m
volumes:
- /opt/docker_elk/elasticsearch/plugins:/usr/share/elasticsearch/plugins
- /opt/docker_elk/elasticsearch/data:/usr/share/elasticsearch/data
ports:
- 9200:9200
- 9300:9300
logstash:
image: logstash:7.6.2
container_name: logstash
ports:
- 4560:4560
privileged: true
environment:
- TZ=Asia/Shanghai
volumes:
#挂载logstash的配置文件
- /opt/docker_elk/logstash/logstash.conf:/usr/share/logstash/pipeline/logstash.conf
depends_on:
- elasticsearch
links:
#可以用es这个域名访问elasticsearch服务
- elasticsearch:es
kibana:
image: kibana:7.6.2
container_name: kibana
ports:
- 5601:5601
privileged: true
links:
#可以用es这个域名访问elasticsearch服务
- elasticsearch:es
depends_on:
- elasticsearch
environment:
#设置访问elasticsearch的地址
- elasticsearch.hosts=http://es:9200
logstash 配置文件
logstash配置文件在外部,通过docker挂载配置文件的方式实现
input {
tcp {
port => 4560
codec => json_lines
}
}
output {
elasticsearch {
hosts => "http://172.20.0.2:9200"
index => "logstash-%{+YYYY.MM.dd}"
}
}
启动
当两个配置文件准备好,同时服务器具有docker-compose环境,可通过命令直接启动:
我们可通过docker-compose命令直接启动:
docker-compose start -d
如图:

验证
-
docker ps 验证

-
通过访问对应端口验证(使用云服务器搭建,需开通对应端口安全策略,也可只开通80端口,配置相应规则,通过nginx转发):

应用
当我们日志分析平台搭建完成,且正常之后,就到具体应用的时候了,Java SpringBoot项目默认日志框架下默认集成了 logstash,我们可直接通过日志配置,将日志共享到ELK中:

ELK创建索引:



日志查看:


主要根据时间戳筛选,同时,可以根据左侧配置规则进行具体筛选,而我们在排查错误时最常用的也就是 level_value也就是日志级别进行筛选,然后在进行进一步的分析。