前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Elastic探秘:技术海洋里遗落的珍珠

Elastic探秘:技术海洋里遗落的珍珠

作者头像
IT大咖说
发布2018-10-23 14:46:11
4370
发布2018-10-23 14:46:11
举报
文章被收录于专栏:IT大咖说IT大咖说IT大咖说

内容来源:2018 年 06 月 30 日,Elastic工程师与布道师曾勇在“Elastic Meetup 南京交流会”进行的《Elastic探秘之遗落的珍珠》演讲分享。IT 大咖说(微信id:itdakashuo)作为独家视频合作方,经主办方和讲者审阅授权发布。

阅读字数:2250 | 5分钟阅读

摘要

Elastic Stack 功能越来越丰富了,有很多功能可能你只听说过名字,有很多功能也许没有机会尝试过,其实你可能错过了很多宝贝,所以让我们来探究探究。本次分享主要介绍 Elastic Stack 技术栈里面,一些可能看起来不太起眼但却非常有意思的功能,定义为非干货,尽量轻拍,不过相信对于刚接触 Elastic 的同学来说,也会有所收获。

获取嘉宾演讲视频及PPT,扫一扫下方二维码即可。

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把它们做成一个事件。

以上为全部分享内容,谢谢大家!

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-09-19,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 IT大咖说 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
数据保险箱
数据保险箱(Cloud Data Coffer Service,CDCS)为您提供更高安全系数的企业核心数据存储服务。您可以通过自定义过期天数的方法删除数据,避免误删带来的损害,还可以将数据跨地域存储,防止一些不可抗因素导致的数据丢失。数据保险箱支持通过控制台、API 等多样化方式快速简单接入,实现海量数据的存储管理。您可以使用数据保险箱对文件数据进行上传、下载,最终实现数据的安全存储和提取。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档