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