前言
大家好,我是小郭,最近在玩 ELK 日志平台,它是 Elastic 公司推出的一整套日志收集、分析和展示的解决方案。
只有学习了,操作了才能算真正的学会使用了,虽然看起来简单,但是里面的流程步骤还是很多的,将步骤和遇到的问
题记录和总结下,今天主要分享下在Docker环境下部署完成ELK日志平台的搭建。
目的:一步一步完成搭建操作与踩坑记录、与开发环境的日志结合,反映真实的日志场景。
什么是 ELK ?
ELK 指的是⼀套完整的⽇志集中处理解决⽅案,将Elasticsearch + Logstash + Kibana 三个开源⼯具配合使⽤,以满足用户对⽇志的查询、排序、统计需求。
ELK常见架构:
Elasticsearch + Logstash + Kibana
这是一种最简单的架构。通过 Logstash 来收集日志,通过 Elasticsearch 对日志进行分析,将所得结果展示用 Kibana展示。
这种架构也是官网介绍的方式,但是在实际生产中很少使用。
filebeat + Elasticsearch + Logstash + Kibana
相比第一种架构,此架构增加了一个 filebeat 模块。filebeat 是一个轻量的日志收集代理,部署在客户端。
优点: 相较于logstash消耗更少的资源
缺点: 当 logstash 出现故障时,日志会出现丢失。
filebeat + kafka + Elasticsearch + Logstash + Kibana
这种架构是对于第二种架构的完善,通过增加中间件,来避免数据的丢失。
当 Logstash 出现故障,日志还存留在中间件中,当Logstash 再次启动,则会读取中间件中积压的日志。
工作流程
今天我们主要来说一说第二种架构方式
- Filebeat收集数据
- 将收集数据汇总给Logstash,Logstash进行数据清洗
- 将数据写入Elasticsearch
- 用Kibana进行可视化展示
搭建部署 Elasticsearch 数据库
# 从零到一搭建ELK日志,在Docker环境下部署 Elasticsearch 数据库
部署 Kibana 可视化工具
# 从零到一搭建ELK日志,在Docker环境下部署 Kibana 可视化工具
部署 Filebeat 日志收集工具
# 从零到一搭建ELK日志,在Docker环境下部署 Filebeat 日志收集工具
部署 logstash 转换工具
# 从零到一搭建ELK日志,在Docker环境下部署 logstash 工具
踩坑记录
- Filebeat 数据未上报成功,导致一直显示30秒内无更新数据
解决方法:修改配置,将配置修改为正确的地址,我们需要设置 filebeat 的配置文件路径为容器内的路径。
filebeat.inputs: - type: log enabled: true paths: - /usr/share/filebeat/logs/*
- 验证是否有生成es的索引,有生成才算成功
curl <http://localhost:9200/_cat/indices?v>
总结
今天主要完成Filebeat 收集数据写入 logstash处理,再将数据写入 Elasticsearch 后 Kibana 进行可视化展示的全过程。
后续我们将集成我们的springBoot应用,以及加上 Kafka 和 Grafana 监控完来完善整个日志平台。