内容来源: 2018 年 06 月 30 日,Elastic工程师与布道师曾勇在“Elastic Meetup 南京交流会”进行的《Elastic探秘之遗落的珍珠》演讲分享。IT 大咖说(微信id:itdakashuo)作为独家视频合作方,经主办方和讲者审阅授权发布。
阅读字数: 2250 | 5分钟阅读
获取嘉宾演讲视频及PPT: suo.im/4E278t
摘要
Elastic Stack 功能越来越丰富了,有很多功能可能你只听说过名字,有很多功能也许没有机会尝试过,其实你可能错过了很多宝贝,所以让我们来探究探究。本次分享主要介绍 Elastic Stack 技术栈里面,一些可能看起来不太起眼但却非常有意思的功能,定义为非干货,尽量轻拍,不过相信对于刚接触 Elastic 的同学来说,也会有所收获。
ElasticSearch里的几个不起眼的小功能
备注
在创建数据库表的时候,我们可能会面临为表中的字段添加备注的需求,对于业务复杂环境下的开发者来说这通常非常有帮助。
一般开发人员会为此编写详细的开发文档,标注各个字段的用处,不过文档的问题在于难以保持更新,很少有人查阅。
最好的方式是将备注和数据绑定在一起,恰好ES拥有这个功能,它通过Mate字段实现(如上图)。Meta中所有的信息都能够自定义,类似于元数据存储仓库,比如库表信息、表中字段、字段备注、版本、创建者等。
排序
排序是查询中比较常见的操作,一些限定范围的操作也会依赖于它。一般 排序 的步骤是先查询数据获取到文档,然后再使用特定字段进行排序。这种方式的性能开销较大,文档越多排序越慢。
理想的情况是在建索引的时候就排好序,这样可以一次性获取到结果,避免不必要的性能消耗。利用ES的Index Sorting能够完美的实现这一效果,另外它还带来了更好的压缩比和更小的磁盘空间。
使用方法也很简单,先指定排序字段,可以是一个或多个(上图为date),然后指定排序方式,倒序或正序,最后新建成的字段在创建索引的时候会依据它来排序。
Adaptive ReplicaSelection
在ES中请求发送到任意节点之后,若索引主分片不在请求所在节点,请求就会被转发到主分片所在的服务器节点上,之后由主分片创建索引并写入副本。相对写入,查询过程会简单些,请求达到节点后,该节点会拿到副本集合,然后依次轮询。
索引数据的大小和热度会使得集群中不同服务器IO压力不一致,从而造成轮询的时候,第一次访问的可能是空闲的服务器,很快就有返回,而第二次可能是压力大的服务器,较长时间后才有返回。
从用户体验角度来说,这种效果是非常不理想的。所以ES推出了Adaptive Replica Selection功能,它会以服务器的响应时间和请求队列作为参考指标,智能的选择副本进行查询,尽可能的缩短请求响应时间。
Kibana里面几个值得留意的新功能
Kuery + Autocomplete
Kuery是数据分析搜索的可视化平台kibana的新查询语法,通过在输入框中键入特定字段来检索信息,可以说是相对原生的搜索方式,即没有候选项也没有模糊查询。
Kibana新版中可以通过在options中打开新feature来启动智能检索功能,键入一部分字段后,搜索框下方马上会列出补全后的候选字段,字段中的可能值也会被枚举出来。虽说是个小功能,不过也大大提高了检索效率。
Chained Input Control
Chained Input Control是一种链式查询的功能,所有的索引数据都以控件的形式存放在一个列表中,用户可以先从列表中选择一个控件作为要查询的范围,之后列表中的控件会更新为上一个控件所限定的范围内,范围更新的同时页面展示数据也会随之更新。
比如要查询某个城市的相关数据,就可以先选择国家然后选中目标城市,之后所有数据都会同步更新。如果想要更详细的数据,还可以进一步选择控件。其实本质上这是通过前一个控件过滤下一个控件的值。
最后介绍一个小功能,大家都知道在智能化运维方面通过API来完成任务是非常有必要的,所以我们也提供了使用API创建Index Pattern的功能。
Logstash/Beats里面几个值得留意的新功能
Dissect Filter
Dissect filter可以应用于有一定规则的结构化数据上。比如将一个文本字段拆分成多个字段,通过逗号或空格进行切割。如上图所示,使用逗号分割字段,大括号中是字段的名称。
之所以不使用正则表达式,是因为它规则过于复杂,CPU消耗非常高,而目前所用的方式仅通过符号就可以切分,能够直观的预测到所获取的数据。不过该方式也存在限制,所有的数据都要遵循统一规则。
Munin
Munin不是Elastic,不过它出现的比较早,2002年的时候就诞生了,用的是 PerL 语言编写的,可以运行在各个平台上,跨平台能力很强。
Munin主要用来监控服务器的性能指标,比如CPU性能、磁盘占用、内存占用等。由于有着非常久的历史,所有插件非常丰富,基本上涵盖了能找的所有平台和应用。
刚好Elastic现在也在做监控和性能指标分析,我们就在想能不能直接接入Munin。最终的方案是通过beats将Munin拉入到Elastic里进行分析,由beats汇总Munin上传上来的数据,Elastic接收这些数据并交由Kibana分析,这样Elastic就能应对各种不同的平台。
Beats – Spoolingto Disk
如上图所示是一个和beats相关的基于磁盘的队列,可以理解为磁盘的一个缓冲区。当用beats进行处理数据时,如果数据时高时低内存占用就会比较高,而在基于磁盘的场景下得以避免这种问题。我们还可以用磁盘做一个缓冲区,让数据先落地。
X-Pack不容错过的免费功能
X-Pack虽然是我们的商业产品,但是有很多免费功能,这些都默认包含在下载版本中。如上图所示,大部分功能都是开源的,但有一部分要PAID,另一部分是免费的。
Monitoring是其中的一个免费功能,主要用来监控K8S和ES的内部运行信息,包含从监控到收集再到可视化的一整套流程。
第二个是 SQL 相关的功能,我们现在可以用SQL的语法来构建查询,目前来说还很简单,只提供select 基本功能,不能完全的写数据、修改数据。主要还是用于让数据科学家和运维分析人员方便的查询数据,毕竟他们对SQL语句更熟悉些。
Rolling up功能可以对数据进行上卷,按照指定的时间戳范围对数据进行聚合得到新的结果,这样数据量会少很多,很大程度上节省了磁盘空间,也比较适用于对历史数据和经营数据的进行业务分析。
还一个功能是Grok Debugger,它是一个用来调试 python 的工具。很多场景会用到Grok,像日志的每一行可能不一样,就可以用Grok把它们做成一个事件。
以上所述就是小编给大家介绍的《Elastic 探秘之遗落的珍珠》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
High Performance Python
Andrew Lewis / O'Reilly Media, Inc. / 2010-09-15 / USD 34.99
Chapter 1. Introduction Section 1.1. The High Performance Buzz-word Chapter 2. The Theory of Computation Section 2.1. Introduction Section 2.2. Problems Section 2.3. Models of Computati......一起来看看 《High Performance Python》 这本书的介绍吧!