本文内容参考了田雪松老师编著的《Elastic Stack应用宝典》
从ELK到Elastic Stack
ELK是三个单词的首字母缩写,即Elasticsearch、Logstash和Kibana。
- Elasticsearch用于数据存储与检索
- Logstash用于数据传输与清洗
- Kibana则用于数据可视化等领域
Elasticsearch的第一个版本叫Compass,是Elastic创始人Shay Banon在2004年创建的一个搜索引擎。
第二个版本基于Apache Lucene开发,并在2010年以Elasticsearch为名开源。
Shay Banon在2012年创办了Elasticsearch公司,并于2015年更名为Elastic。
由于Elasticsearch的影响不断扩大,催生了两个与其相关的开源项目,它们就是Logstash和Kibana。由于这两个项目填补了Elasticsearch在数据传输、数据可视化等方面的欠缺,所以不久之后这两个项目也加入了Elastic公司,于是ELK就这样诞生了。
在2015年,一个名为Packetbeat(以一种轻量级方式将网络数据发送到Elasticsearch)的开源项目引起了Elastic公司的重视。它是由一对德国夫妻设计的。Elastic开发团队由此引申,计划开发出一组专门用于数据传送的轻量级组件,可以将网络、日志、指标、审计等各种数据从不同的数据源头发送到Logstash或Elasticsearch。Elastic公司给这种组件起了一个统一的名字,这就是Beats组件。
Beats组件的加入,使得ELK这个名称不能再概括Elastic的所有开源项目了,于是ELK就自然而然地更名为ELK Stack。但ELK这个名称本身又有一定的缩写含义,依然容易引起误会,所以最终它们被统一称为Elastic Stack。
2018年10月6日,Elastic公司在纽约证券交易所挂牌上市。
版本演变
早期,每个项目都有一套自己管理版本的办法。Kibana使用betas, Logstash使用里程碑,Elasticsearch则使用数字,这使得Elastic Stack家族成员的版本异常混乱。不仅如此,由于这些开源项目的不同版本之间又无法自动处理兼容问题,使得用户必须要了解并处理不同版本之间的兼容问题。
2015年ELK 2.0作为一个整体同时发布,解决了版本协调同步与兼容问题。
到2016年,ELK 5.0发布时,ELK整体变得更加友好、更加稳定,同时还提供了丰富的文档,使用户在入门时更加容易掌握。
许可授权
在ELK 5.0版本以后,Elastic将所有的商用插件捆绑到一个名为X-Pack的扩展中,它包含了类似安全、监控、报警等扩展功能,这应该是Elastic Stack商业化的一次尝试。
在2018年2月,Elastic将这些商用X-Pack开放了源代码,但依然需要商用授权许可。在Elastic Stack文档中也有多处提及X-Pack,读者可以将它们理解为Elastic Stack的扩展组件。
至2017年,Elastic发布了名为ECE(Elastic Cloud Enterprise)的云服务平台,这应该是Elastic在商业化道路上的又一次尝试。
从Elastic Stack 6.8和7.1版本开始,Elasticsearch的核心安全功能(TLS加密、原生和基于文件的身份验证,以及基于角色的访问控制)已经可以免费使用了。
应用场景
Beats组件从分布式环境中的主机节点上采集数据发送给Logstash,而Logstash根据配置将数据过滤、清洗后再发送给Elasticsearch并编入索引,最后在Kibana中配置仪表盘、画布等并从Elasticsearch中读取数据将它们可视化。最典型的应用场景就是使用Elastic Stack从文件中收集日志。
除了组合在一起使用,Elastic Stack中的每一种组件又可以独立使用,或者是与第三方应用结合在一起使用。一种典型的应用场景是与Kafka等第三方MQ组件结合使用,以防止瞬间流量爆发导致的系统崩溃。
Logstash也可以脱离Beats和Elasticsearch作为一个数据传输管道单独使用,比如可以使用Logstash从关系型数据库中收集表格中的数据,然后将它们传输到类似MogonDB这样的NoSQL数据库中,这其实就是结构化数据实现全文检索的典型应用场景。与此同时,还可以将这些结构化数据存储到S3、HDFS等分布式文件系统中,这其实就实现了海量结构化数据的备份功能。