文章目录
ELK的概述
什么是ELK?
ELK是Elasticsearch
、Logstash
、Kibana
三大开源框架首字母大写简称。自从Elasticsearch5.x版本后市面上也被成为Elastic Stack
。其中Elasticsearch是中心,是一个基于Lucene、分布式、通过Restful方式进行交互的近实时搜索平台框架,简称Elasticsearch为ES。
Logstash
是ELK的中央数据流引擎,用于从不同目标(文件/数据存储/MQ)收集的不同格式数据,经过过滤后支持输出到不同目的地(文件/MQ/redis/elasticsearch/kafka等)。因为它比较耗资源,所以通常使用filebeat
代替logstash收集日志,再交给logstash处理
Kibana
可以将elasticsearch的数据通过友好的页面展示出来,提供实时分析的功能。
Elasticsearch开源分布式搜索引擎,它的特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制,restful 风格接口,多数据源,自动搜索负载等;ES官网地址:https://www.elastic.co
ELK的工作架构展示图
Logstash 收集 AppServer 产生的 Log,并存放到 ElasticSearch 集群中,而 Kibana 则从 ES 集
群中查询数据生成图表,再返回给 Browser。简单来说,进行日志处理分析,一般需要经过以下几
个步骤:
- 将日志进行集中化收集管理(filebeat)
- 将日志格式化并输出到Elasticsearch(Logstash)
- 对格式化后的数据进行索引和存储(elasticsearch)
- 前端数据的展示(kibana)
ES核心概念
cluster:群集
ES可以作为一个独立的单个搜索服务器。不过,为了处理大型的数据库集,实现容错
和高可用性
,ES可以运行在许多互相合作的服务器上,这些服务器的集合称为集群;
通过选举产生主节点
,并提供跨节点的联合索引和搜索的功能。每个群集都有一个唯一标示的名称, 默认是Elasticsearch,每个节点是基于群集名字加入到其群集中的。一个群集可以只有一个节点,为了具备更好的容错性,通常配置多个节点,在配置群集时,建议配置成群集模式。
Node:节点
形成集群的每个单服务器称为节点
Index:索引
在ES中,索引是一组文档的集合,类似于关系型数据库中的”库”,索引的作用相当于一本书的目录,可以根据目录中的页码快速的找到你想要看的内容;在index下面包含存储数据的类型(Type), Type类似于关系型数据库中的“表”,用来存放具体数据
shard: 分片
Elasticsearch 将索引分成若干个部分,每个部分称为一个分片,每个分片就是一个全功能的独立的索引。分片的数量一般在索引创建前指定, 且创建索引后不能更改
。默认情况下Elasticsearch中的每个索引被分片成5个主分片和一个索引
replcas:副本
一个好的数据存储方案要求无论何种故障(如节点不可用)下数据都可用,并且具有较高的存储效率。为此,Elasticsearch 将索引分片复制一份或多份,称为副本。副本是索引的另一个备份,用于数据冗余以及负载分担,创建索引后副本数还能再更改
,一般开启2-3个为宜
Logstash工作过程
在Logstash中,包括了三个阶段,分别是输入(Input )
、处理(Filter,非必需)
和输出(Output)
, 其关系如图所示。
在图中,整个流程为Input收集数据,Filter 处理数据,Output 输出数据。每个阶段也可以指定多种方式,如输出既可以输出到Elasticsearch中,也可以指定到stdout在控制台打印。
Logstash和filebeat的区别
-
logstash和filebeat都是可以作为日志采集的工具,logstash出现时间要比filebeat早许多。filebeat更轻量,占用资源更少,但logstash 具有filter功能,能过滤分析日志。一般结构都是filebeat采集日志,logstash过滤分析日志。
-
logstash是使用Java编写,插件是使用jruby编写,对机器的资源要求会比较高。在采集日志方面,对CPU,内存上都要比前者高很多。
-
总结,他俩关系就跟清洁工人和垃圾车一样,结合上边,你想一想,(注:在这里没有对任何人有偏见的意思,只是为了理解他俩的关系)