ELK技术介绍与应用 ElasticSearch Logstach Kibana

ELK技术介绍与应用

  1. 简介 ELK
    a. ELK由三部分组成,分别是ElasticSearch(E),Logstach(L) 以及 Kibana(K) , 这里一个简单的理解方式,就是log可以是由Kubernetes, MySQL 等工具中stream过来的streaming component,也可以是json形式的文件。而ElasticSearch就是我们这里的分布式数据库,用来把logfile indexing进去。最后就是Kibana,这里Kabana用作User Interface 使得我们可以以自己需要的方式展示数据库中的data。
    b. ELK非常的方便便捷,如果我们有一个分布式系统有1000台设备,如果系统出故障,我希望看日志,需要一台一台登上去的看,十分的麻烦。然而有了ELK系统。如果日志接入了ELK系统,在运行过程中,突然出现异常,日志就会及时反馈,我们直接就可以再Kibana中看到日志情况,还可以在接入一些实时计算模块或者做一些实时报警功能。
  2. 介绍ElasticSearch
    a. 要了解elasticsearch,首先要了解里面的几个专有名词,索引,类型,文档。
    i. 首先是索引,最开始我理解ES的时候我理解索引为一个搜索引擎倒排索引key-value pair里面的一个key,但是后来发现这么理解其实是有偏差的,在elasticsearch里,索引是存放数据的地方,更像是mysql里的一个数据库。有了这个概念,那么后面的两个就好理解多了。
    ii. 类型就是用来定义数据结构的,相当于是mysql中的一张表
    iii. 而文档就是最终的数据了,可以理解为文档就是一条记录。
    b. 举例:比如我们有一首诗,有题目,作者,朝代,七律五律,内容等字段,那么首先,我们需要建立一个库,比如叫做诗歌合集,然后创建一个类型,叫诗。类型是通过Mapping来定义每个字段的类型。比如题目,作者,朝代,都是Keyword类型,内容是Text类型,字数可以是Integer类型。这里我们把数据组织成json作为案例。
    i. 索引:诗歌合集
    ii. 类型相当于表结构的描述,这里是poem,文档用json形式描述一行数据。
    iii. ELK技术介绍与应用 ElasticSearch Logstach Kibana

iv. ELK技术介绍与应用 ElasticSearch Logstach Kibana

v. 这里题目,作者,朝代,都是keyword类型,而内容是text类型,都是string 区别在哪儿呢。这个问题就涉及到反向索引中的分词问题,keyword类型是不会分词,会直接根据字符串内容建立反向索引,而Text类型在存入elasticsearch的时候,会先进行分词,在根据分词的结果,建立反向索引。
vi. 最后我们怎么建立一个索引呢,elasticsearch把操作都封装成了http的api,所以我么你给elasticsearch发送http请求即可。
c. ElasticSearch的分布式原理
i. ElasticSearch中的分布式存储和hdfs很类似,会进行备份,节点是对等的,节点间会通过自己的规则,选取机群的master。
Master会负责集群状态信息的改变,并同步给其他节点。
关于写入性能:只有建立索引和类型需要经过Master,数据的写入有一个简单的Routing规则,可以Route到急群中的任意节点,所以数据写入的压力是分散在整个集群的。
ELK技术介绍与应用 ElasticSearch Logstach Kibana

ii. 每一个分片会保存多个副本,为了保证分布式环境下的高可用。
iii. ELK技术介绍与应用 ElasticSearch Logstach Kibana

iv. 上图绿色的表示数据块,可以看到数据块在多个节点中都有备份储存。