目录
一、什么是elk
通俗来讲,ELK是由Elasticsearch(日志的存储、创建和建立索引(搜索))、Logstash(日志收集、输出以及格式化)、Kibana(查看日志)三个开源软件的组成的一个组合体,ELK是elastic公司研发的一套完整的日志收集、分析和展示的企业级解决方案。
二、什么是Elasticsearch
一个高度可扩展的开源全文搜索和分析引擎,它可实现数据的实时全文搜索、支持分布式可实现高可用、提供API接口,可以处理大规模日志数据,比如Nginx、Tomcat、系统日志等功能。
Elasticsearch使用Java语言开发,是建立在全文搜索引擎ApacheLucene基础之上的搜索引擎。
1、Elasticsearch的基础核心概念:
①接近实时(NRT)
Elasticsearch是一个接近实时的搜索平台,这也意味着从索引一个文档直到这个文档能够被搜索到有一个轻微的延迟(通常是1秒)
②集群化(cluster)
集群他有唯一身份的标识,来去标识自身在同一个集群中,同时自身还会有一个唯一id,来去标识自己在集群中的定位,同时集群化的特点是一加一的能力大于2,就比如分布式。
③节点(node)
简单来说就是指这个集群中的统一部分,节点就是一台单个服务器,是集群的一部分
④索引(index)
一个索引就是一个拥有几分相似特征的文档的集合。与mysql对应,索引相当于关系型数据库的库。
⑤类型(type)
在一个索引中,你可以定义一个或多种类型。而类型就有点相当于关系型数据库的表。
⑥文档)(documet)
一个文档是一个可被索引的基础信息单元。这里文档就相对于关系型数据库的列。
⑦分片和副本(shards & replicas)
在实际情况下,索引存储的数据可能超过单个节点的硬件限制,如一个10亿文档需1TB空间可能不适合存储在单个节点的磁盘上,或者从单个节点搜索请求太慢了。为了解决这个问题,elasticsearch提供将索引分成多个分片的功能。当在创建索引时,可以定义想要分片的数量。每一个分片就是一个全功能的独立的索引,可以位于集群中任何节点上。
●分片的两个最主要原因:
a.水平分割扩展,增大存储量
b.分布式并行跨分片操作,提高性能和吞吐量
分布式分片的机制和搜索请求的文档如何汇总完全是有elasticsearch控制的,这些对用户而言是透明的。
网络问题等等其它问题可以在任何时候不期而至,为了健壮性,强烈建议要有一个故障切换机制,无论何种故障以防止分片或者节点不可用。
为此,elasticsearch让我们将索引分片复制一份或多份,称之为分片副本或副本。
副本也有两个最主要原因:
a.高可用性,以应对分片或者节点故障。出于这个原因,分片副本要在不同的节点上。
b.xxx能,增大吞吐量,搜索可以并行在所有副本上执行。
总之,每个索引可以被分成多个分片。一个索引也可以被复制0次(意思是没有复制)或多次。一旦复制了,每个索引就有了主分片
(作为复制源的原来的分片)和复制分片(主分片的拷贝)之别。分片和副本的数量可以在索引创建的时候指定。在索引创建之后,你可以在任何时候动态地改变副本的数量,但是你事后不能改变分片的数量。
默认情况下,Elasticsearch中的每个索引被分片5个主分片和1个副本,这意味着,如果你的集群中至少有两个节点,你的索引将会有5个主分片
和另外5个副本分片(1个完全拷贝),这样的话每个索引总共就有10个分片。
三、什么是 Logstash
Logstash由JRuby语言编写,基于消息(message-based)的简单架构,并运行在Java虚拟机(JVM)上。不同于分离的代理端(agent)或主机端(server) ,LogStash可配置单一的代理端(agent)与其它开源软件结合,以实现不同的功能。
四、什么是 kibana
Kibana 为 elasticsearch 提供一个查看数据的 web 界面,其主要是通过elasticsearch 的 API 接口进行数据查找,并进行前端数据可视化的展现,另外还可以针对特定格式的数据生成相应的表格、柱状图、饼图等。
主要功能: