ELK介绍
ELK
是Elasticsearch,Logstash,Kibana的缩写,是我们在处理日志时最常用到的方案。其中Logstash
负责日志采集, Elasticsearch
负责日志存储,Kibana
负责日志展示。三款开源项目分工合作,提供了完整的解决方案。 此外也有使用Fluentd替换Logstash
组成的EFK
方案,同样也非常受欢迎。
针对不同的环境,已经有大量的文档详细介绍了安装和配置的方法。在Kubernetes环境中,管理员甚至可以使用一键部署脚本完成安装。 这些总结下来的经验极大的降低了ELK
的上手门槛,运维人员可以很方便的开始将所有服务器产出日志统一的搜集起来。
但在使用了一段时间之后,随着数据量的增加以及集群规模的扩大,维护一套高效运转的ELK
系统所需要付出的运维成本在逐渐增大。 管理员将面临以下几个挑战:
- 多种不同应用的日志格式不同,需要为不同的应用配置专门的日志解析器
- 在所有服务器上更新组件版本以及配置带来的运维工作量的增加
- 单机版本的
Elasticsearch
的性能跟不上日志产出的速度,需要集群化部署ES
-
ES
集群的搭建和管理过程中的复杂度对运维人员的能力要求较高。过度依赖脚本和教程的工程师可能无法顺利完成 -
ES
消耗的IO,CPU,内存资源均较高。为了能够提供足够的日志处理能力,ELK
所需要的计算资源投入对于小型团队来说是不小的负担 -
ELK
方案中缺少日志归档,持久保存的功能。而ES
的存储能力受集群规模的限制无法无限扩张。管理员需要面临删除老数据或是研发数据导出存档功能的选择
在Kubernetes环境中,使用k8s所提供的调度功能和ConfigMap
所提倡的配置管理最佳实践,再配合上elasticsearch-operator这样的工具, 可以大大降低日常的运维负担,但在算力消耗以及成本增加的问题上,能够带来的改善有限。
对于小型项目,我们需要更加轻量更加经济的解决方案,将日志管理SaaS化,交给合适的供应商来提供,用户按需付费可能是更适合的解决方案。
https://jishu.io/kubernetes/goodbye-elk-hello-fluent-bit-aliyun/
相关资料
环境搭建 https://blog.csdn.net/f59130/article/details/74014514
ELK 指南|小土刀 https://wdxtub.com/2016/07/26/elk-guide/
ELKstack 中文指南(图书) https://elkguide.elasticsearch.cn/
ELK 手册(gitbook)不全 https://anbc.gitbooks.io/elk-handbook/content/
https://www.ibm.com/developerworks/community/blogs/132cfa78-44b0-4376-85d0-d3096cd30d3f/search?lang=en&t=entry&f=all&q=ELK