大数据搜索与日志挖掘及可视化方案:ELK Stack:Elasticsearch、Logstash、Kibana (第2版)
上QQ阅读APP看书,第一时间看更新

第1章 概述

“Elastic provides a growing platform of open source projects and commercial products designed to search,analyze,and visualize your data,allowing you to get actionable insight in real time.Our products are architected to seamlessly work together as a standalone solution or easily integrate into your existing infrastructure.

At the heart of it all are Elasticsearch,Kibana,Beats,and Logstash,four open source projects that,when combined,are known as the Elastic Stack.Our commercial extensions,Shield,Watcher,and Marvel,add even more value to our open source solutions,offering a growing list of capabilities,including security,alerting,and monitoring.”——https://www.elastic.co/products

随着大数据、大型电商网站以及Web 2.0技术的普及应用,越来越多的软件开发者需处理海量异构信息的实时索引、检索、日志挖掘、可视化等和信息检索与大数据搜索、挖掘相关的业务。虽然Lucene是许多互联网公司的标准信息检索工具之一,但它无法在一个合理的时间内索引和检索海量的大数据,不提供实时检索,不具备良好的可扩展性,一般也不适合针对大数据的搜索、挖掘和云计算环境。

ELK Stack是以Elasticsearch、Logstash、Kibana、Beats等几个开源软件为主的大数据处理工具集,也是目前开源的最流行的大数据分析解决方案之一。根据国际权威的数据库产品评测机构DB-Engines统计(http://db-engines.com/en),在2016年1月,Elasticsearch已超过Solr等,成为排名第一的搜索引擎类应用。

以Elasticsearch、Logstash、Kibana三个开源软件为主的数据处理工具链——即ELK Stack——为编程人员提供了一个分布式的可扩展的信息存储和基于Lucene的信息检索机制、基于Logstash的日志处理机制、基于Kibana的挖掘结果可视化架构。在一个典型的使用场景中,可以由Logstash处理日志等信息,并由它充当“数据搬运工”的角色;用Elasticsearch作为后台数据的分布式存储和全文检索,并由它充当类似“数据库管理系统”的角色;用Kibana作为前端的可视化展示。ELK Stack为数据分布式存储、可视化查询和日志解析创建了一个功能强大的管道链,它们互相配合、取长补短,共同完成大数据分析处理工作。ELK Stack相关软件产品可以从https://www.elastic.co下载,在https://github.com/elastic上也有第三方插件等供下载。

下面我们先来认识一下本书的主角:Elasticsearch、Logstash、Kibana。

首先,Elasticsearch来源于Shay Bannon的第一个开源项目Compass,Compass是一个基于事务的对象/搜索引擎映射与一个Java持久层框架,但Elasticsearch目前已经不再仅局限于单纯的搜索业务。作为开源分布式搜索与数据处理平台,Elasticsearch不仅是一个数据库,它还是一个基于Lucene构建的开源的、分布的、基于RESTful的信息检索框架,能够实时搜索,检索性能高效;并采用JSON数据格式以及Ruby DSL设计模式,提供基于Aggregations的统计功能,同时提供便捷的部署和设置,集群可方便地进行扩展(可以扩展到上百台服务器,处理PB级别的结构化或非结构化数据,当然它也可以运行在单台PC上)。它能对海量规模数据完成分布式索引与近似实时的信息检索,并提供多种管理工具,各种相关插件也可方便地集成到Elasticsearch中。它对外提供一系列基于Java和HTTP的API,可用于分布式索引、检索、日志分析与数据挖掘等,且大多数配置是可以修改的。因此,很多国际知名企业都在使用Elasticsearch完成数据处理工作。例如,Github已升级了其代码搜索程序,并将核心架构由Solr转向Elasticsearch;Wikimedia也启用了由Elasticsearch为基础的全新搜索框架。值得一提的是,在使用Elasticsearch时,有很多基础服务可以用插件的方式来提供。这也是很多Lucene用户在面对大数据时转而使用Elasticsearch的原因之一,如和MongoDB、CouchDB同步的River插件、中文分词插件、Hadoop插件、脚本支持插件等。另外,Elasticsearch对分布式数据处理提供支持,其索引能分拆为多个分片,每个分片可有零或多个副本,集群中的每个数据节点都可承载一个或多个分片,并且能协调和处理各种操作;负载再平衡(Rebalancing)和路由(Routing)在大多数情况下都是自动完成的。

:REST(REpresentational State Transfer)意即“表现层状态转化”,RESTful是目前流行的一种互联网软件架构,具有结构清晰、符合标准、易于理解、扩展方便等特点,这种架构下的每一个URI代表一种资源,客户端通过GET(获取资源)、POST(新建或更新资源)、PUT(更新资源)、DELETE(删除资源)等方式来对服务器端的资源进行操作。

其次,Logstash可以对相关的网络日志进行收集、分析、转换等处理工作,并将其存储供以后使用,可以存储到Elasticsearch中,也可以转换/存储到其他目的地中。Logstash本身并不产生日志,它仅是一个可接收多种多样的日志输入、经处理后转发到多个不同目的地的管道。

最后,Kibana可以帮助汇总、分析和搜索重要数据日志,并提供友好的可视化界面。

需要说明的是,ELK Stack家族也有一些辅助成员,如Shield(安全和管理插件,如权限管理等)、Watcher(性能监控平台)等,图1.1列出一些软件产品。除此之外,还有Beats(可将其理解为一个代理,官方提供了用来收集日志的Filebeat、用来收集系统基础设置数据的Topbeat、统计收集网络信息的Packetbeat;这些收集到的信息经过处理后可以输入到Elasticsearch中进行后续处理)等。

图1.1 ELK Stack相关软件产品

学习ELK Stack,对于大数据处理、信息检索及搜索引擎研发、日志处理与分析、挖掘信息可视化等,具有重要的现实意义。

本章主要简介Elasticsearch的背景和简单使用,并通过一个例子介绍Elasticsearch的索引、检索流程和实现方法。有关Logstash和Kibana的相关内容,在本书后续章节中进行介绍,本章暂不涉及。