编辑推荐
集中式日志分析平台Elastic Stack7.0全方位应用指南;
经典ELK Stack的全新版本;
70万字,Elasticsearch、Logstash、Kibana、Beats四大组件全收录;
370余段实例展示,循序渐进教你搭建自己的数据分析平台;
开发人员必备!
内容简介
计算机书籍
《Elastic Stack应用宝典》而系统地介绍了Elastic Stack应用与开发。Elastic Stack由一组处理和分析全文数据的组件构成,在日志、监控等领域中都有着广泛应用。本书在分析了Elastic Stack体系结构的基础之上,对Elastic Stack中的Elasticsearch、Logstash、Kibana和Beats组件分章节做了详细介绍。在讲解这些组件时,还列举了大量的应用实例,使读者可以在实践操作中迅速掌握这些组件的使用方法。
本书以Elastic Stack*新发布的版本7为基础编写,介绍了Elastic Stack中引入的新技术和新变化。本书适于有一定开发基础的软件编程人员,也可以做为架构师和运维人员的参考资料。
作译者
目录
第1章 初识Elastic Stack
1.1 从ELK到Elastic Stack
1.1.1 历史
1.1.2 版本演变
1.1.3 许可授权
1.1.4 应用场景
1.2 Elasticsearch概览
1.2.1 安装与配置
1.2.2 体验Elasticsearch
1.3 Kibana概览
1.3.1 安装与配置
1.3.2 连接Elasticsearch
1.3.3 体验Kibana
1.3.4 导入样例数据
1.4 Logstash概览
1.4.1 安装Logstash
1.4.2 启动Logstash
1.4.3 连接Elasticsearch
1.5 Beats概览
前言
2015年我在为公司做技术选型时就觉得有必要写一本全面介绍ELK的图书,因为彼时在国内图书市场上几乎连一本全面介绍ELK的书籍都找不到。但由于那时我正在创业,而后又加入了阿里巴巴,繁忙的工作使我根本没法腾出时间编写此书。但在此期间ELK却一直在以惊人的迅速成长着,从Beats组件的加入到ELK更名为Elastic Stack,ELK在国内外的应用变得越来越广泛。与此形成鲜明对比的是,许多从事传统软件研发的编程人员和架构师对于大数据处理、全文检索等领域的知识还缺乏最基本的认识。2018年Elastic公司挂牌上市让更多的人知道了ELK,许多在软件行业工作的朋友纷纷向我问询ELK的相关知识。此时,我刚刚好有了一些空闲时间,所以最终下定决心开始编写此书。我希望能借此书让更多的研发人员了解ELK及其背后的原理,让人们在大数据处理与应用中少走一些弯路。
由于ELK也是刚刚更名为Elastic Stack,中间还曾经叫过ELK Stack,所以ELK这个名称在国内的接受程度要远高于Elastic Stack。虽然使用ELK可能更利于本书在读者群中的传播,但为了与官方称谓保持一致,我最终还是决定以Elastic Stack称呼这一套组件。不仅如此,为了保证本书的权威性,书中所述内容均与Elastic官方叙述保持一致。书中所有示例也都经过实际验证,以保证它们可以在相应的环境中无误地运行起来。
无论以何种名称称呼这套组件,它们现在主要都是指代Elasticsearch、Logstash、Kibana和Beats等四大组件。它们是本书介绍的主要内容,并且天然地将本书划分为五大部分。
第一部分是本书第1章,主要从整体上介绍Elastic Stack家族成员,并且讲解了这些组件的安装和基本使用方法。虽然第一部分只有一章,但这一章是后续章节的基础。在这一部分中介绍了Elastic Stack的几种应用场景,并根据其中一个场景搭建了一套分布式的日志收集和存储系统。这套系统从整体上展示了Elastic Stack组件之间的协作,同时本书后续章节所有示例也都是基于这套系统。所以,读者最好按照该章介绍将这个系统完整地搭建起来,以保证后续章节的学习可以顺利展开。
第二部分是本书第2~8章,主要介绍Elasticsearch的原理和应用。如果读者对Elasticsearch没有任何了解,建议一定要好好研读一下第2章。这一章将Elasticsearch的基本原理和重要概念做了非常详细的讲解,这包括全文检索与倒排索引的理论知识,以及在Elasticsearch中非常重要的索引、映射和文档等基本概念。除此之外还有Elasticsearch支持大数据存储与容错的分片、副本等技术,它们是Elasticsearch能够高效且可靠运行的重要基石。第3~4章主要介绍Elasticsearch对外提供的REST接口,其中第3章介绍的主要是操作索引和文档的接口,而第4章介绍的则都是与文档检索相关的接口。第5~6章介绍的是在文档检索中使用的查询语言DSL,而第7章介绍的则是可以用于统计分析的聚集查询。此外,Elasticsearch还定义了一些比较特殊的数据类型,这些数据类型的DSL与聚集查询都有专门的用法,所以第8章将它们集中在一起讲解。Elasticsearch是Elastic Stack中的核心成员,在应用上相对于其它组件也更复杂一些,希望读者能够按照书中给出的示例耐心研习。
第三部分是本书第9~11章,主要介绍Kibana的文档发现、可视化、仪表盘和画布等功能。Kibana就像是Elasticsearch的图形化界面一样,可通过它操作Elasticsearch中的数据。第9章介绍的文档发现对应于Elasticsearch中的DSL,而第10章介绍的文档可视化则基于聚集查询。在第11章介绍的综合展示中,仪表盘由文档发现和文档可视化自由组合而成,而画布等功能则提供了更为丰富多彩的数据展示形式。Kibana使用起来并不难,但它却可以通过三两下的配置将数据直观地展示出来。通过这些直观的展示,用户可以挖掘出深藏在数据之后的信息。
第四部分是本书第12~14章,主要介绍Logstash体系结构及四种插件。第12章介绍了Logstash的整体结构,同时还介绍了其中的编解码器插件。由于Logstash输入插件与输出插件有许多相似之处,所以在第13章中按类型对它们做了统一介绍。而由于过滤器插件种类繁多且完全独立于输入输出插件,所以在第14章中单独介绍。Logstash插件种类繁多,掌握好这些插件可以解决很多数据处理中的棘手问题。
第五部分是本书第15~16章,主要介绍Beats组件的共同框架Libbeat以及不同Beats类型的输入组件。第15章除了介绍Beats体系结构以外,还介绍了在Libbeat框架中实现的共有组件,这主要是处理器组件和输出组件。第16章则对Beats主要类型的输入组件做了介绍,包括Packetbeat、Filebeat、Metricbeat、Heartbeat、Auditbeat、Winlogbeat和Journalbeat等。Beats组件使用起来也不复杂,但它们的出现极大地扩充了Elastic Stack的应用领域。
由于本书涉及的内容非常庞杂,其中的每一个组件其实都可以独立成书。所以要想在一本书中将它们全部讲解清楚,对我来说也是一个非常巨大的挑战。为了减少篇幅并方便读者学习,我在编写本书时将各种组件的知识做了合理的归纳和总结,将具有相似性的知识放在一起讲解以方便读者比较和记忆。此外,我还希望本书能够成为开发人员的一本参考手册,可以放在手边随时查看。所以在编写此书时我尽可能将所有涉及内容都讲解到,并以表格和示例的形式将它们罗列出来。但毕竟内容太过庞杂,有些内容因此也就没办法展开详细讲解,希望读者能够体谅。
为了节省篇幅,书中一些示例只展示了核心内容。比如在讲解Elasticsearch时,多数REST请求的示例都没有展示它们的返回结果,这需要读者自己动手在Kibana开发工具中执行查看。还有在Logstash、Beat等章节中讲解的配置文件也只列出了关键内容,需要读者自行补充完整。比如在讲解Logstash管道配置时,有相当一部分示例只列出了所要讲解插件的配置,读者在试验时要根据已经讲解的内容将其他必要插件补充完整。不过相信只要读者认真研读了章节的内容,这些补充工作就不会太复杂。总之,实践出真知,希望读者在研读的过程中一定要亲自动手操作,这样才能真正掌握所学内容。
另外需要说明的一点是,由于查询、检索和搜索这三个词在汉语中的含义基本相同,所以我在编写本书时做了一些区分。简单来说就是检索对应全文检索,查询对应关系型数据库,而搜索一般只在搜索引擎一词中出现。为了与人们的习惯保持一致,在全文检索的一些名词中也会使用查询,比如查询语句、查询条件等等。尽管我在编写本书时已经尽可能做了区分,但由于本书篇幅巨大而不可避免地会出现一些混乱。如果确有让读者感到困惑的地方,可以将这三个词视为相同的含义。
最后要感谢我的父亲、妻子和一对儿女,由于编写此书几乎占据了我所有业余时间,陪伴你们的时间少了很多。感谢你们在此期间给予我 的理解和照顾,最终才使本书得以顺利结稿。还要感谢为本书最终出版做了大量工作的吕瀟等编辑,是你们辛勤地付出让这本书提早问世。希望本书能够帮助正在学习或使用Elastic Stack的读者,让人们可以更轻松、更全面地掌握这一家族中的组件。Elastic Stack的大门已经开启,快开始你的神奇旅程吧!