你必须知道的容器日志 (2) 开源日志管理方案 ELK/EFK
- Elasticsearch是实时全文搜索和分析引擎,提供搜集、分析、存储数据三大功能
- Logstash是一个用来搜集、分析、过滤日志的工具
- Kibana是一个基于Web的图形界面,用于搜索、分析和可视化存储在 Elasticsearch指标中的日志数据
1.2 ELK日志处理流程
上图展示了在Docker环境下,一个典型的ELK方案下的日志收集处理流程:
- Logstash从各个Docker容器中提取日志信息
- Logstash将日志转发到ElasticSearch进行索引和保存
- Kibana负责分析和可视化日志信息
由于Logstash在数据收集上并不出色,而且作为Agent,其性能并不达标。基于此,Elastic发布了beats系列轻量级采集组件。
这里我们要实践的Beat组件是Filebeat,Filebeat是构建于beats之上的,应用于日志收集场景的实现,用来替代 Logstash Forwarder 的下一代 Logstash 收集器,是为了更快速稳定轻量低耗地进行收集工作,它可以很方便地与 Logstash 还有直接与 Elasticsearch 进行对接。
本次实验直接使用Filebeat作为Agent,它会收集我们在第一篇《
二、ELK套件的安装
本次实验我们采用Docker方式部署一个最小规模的ELK运行环境,当然,实际环境中我们或许需要考虑高可用和负载均衡。
首先拉取一下sebp/elk这个集成镜像,这里选择的tag版本是640(最新版本已经是7XX了):
docker pull sebp/elk:640
注:由于其包含了整个ELK方案,所以需要耐心等待一会。
通过以下命令使用sebp/elk这个集成镜像启动运行ELK:
docker run -it -d --name elk \ -p 5601:5601 \ -p 9200:9200 \ -p 5044:5044 \ sebp/elk:640
运行完成之后就可以先访问一下 http://[Your-HostIP]:5601 看看Kibana的效果:
Kibana管理界面
Kibana Index Patterns界面
当然,目前没有任何可以显示的ES的索引和数据,再访问一下http://[Your-HostIP]:9200 看看ElasticSearch的API接口是否可用:
ElasticSearch API
Note:如果启动过程中发现一些错误,导致ELK容器无法启动,可以参考《Docker启动ElasticSearch报错》及《ElasticSearch启动常见错误》一文。如果你的主机内存低于4G,建议增加配置设置ES内存使用大小,以免启动不了。例如下面增加的配置,限制ES内存使用最大为1G:
docker run -it -d --name elk \ -p 5601:5601 \ -p 9200: