查看原文
其他

Kibana交互使用实践—— Discover

沐自 日志服务 2022-08-25

前言


Kibana 是一款开源的数据分析和可视化平台,它是Elastic Stack 成员之一,旨在与 Elasticsearch 配合使用。在Kibana中 搜索、查看存储在 Elasticsearch 索引中的数据并与之交互,轻松地执行高级数据分析并在各种图表、表格和地图中可视化数据。系列文章将对Kibana的一些功能和交互进行拆解和分析,同时对比SLS中的类似功能,进行使用上的优化和探索。


基于Kibana 7.10.0



版图分解



首先,Kibana的几大功能模块如图所示,大块上来分为5个大类


  • Kibana —— 基础功能

  • Observability —— 可观测性

  • Security —— 安全

  • Enterprise search —— 企业级搜索

  • Management —— 管理设置


可以看出来整个Elastic生态和目前的使用情况,Kibana也在左上角提供了浮层导航来方便快速切换功能模块,本文作为系列文章的开篇,先就Kibana基础功能中最高频场景Discover进行拆解和分析



作为查询数据,快递定位和挖掘价值的入口,Discover扮演了Kibana中最重要的角色,一般情况下我们通过Discover得到一些特定问题的答案,了解当下的发了了什么情况,官方给出来的定位分为以下三个方面:


  • 选择(Select):通过对数据集和时间范围的选择,来过滤和查询结果

  • 探索(Explore):通过对数据的详细分析,快速得到数据内容的分析结果

  • 展示(Present):将数据结构可视化或者存储下来



整体Discover的交互体验在7.0之后没有太多的变化,可以简单总结为


  • 头部:输入模块,query输入、时间选择、保存查询、设置分享等

  • 左侧:目录切换、Field操作、快速分析

  • 核心区域:分布直方、文档详情


针对一些细节,可以进一步分析



头部


保存查询


Kibana支持将查询语句、查询时间返回、当前查询的Filter一起保存为一个SAVED QUERIES,这个和SLS的快速查询功能类似:



可以看到Kibana更多功能是让当下的保存更完备,支持保存当前的时间区间、语句以及Filter参数,对于SLS而言,由于查询时候并没有把过滤做成一个单独的功能来支持,所以并没有支持保存过滤配置,而是和查询语句集成在一起,而SLS主打的交互式查询分析,必然要支持过滤的增加和变量的设置,从而满足交互查询分析的场景,具体可以参考文档


产品保存语句保存过滤保存时间区间设置变量
Kibana支持支持支持不支持
SLS支持不支持不支持支持



查询分析语句输入

在7.0.0,Kibana将KQL(Kibana Query Language)作为默认的查询分析语言,从而替代了6.x版本中Lucene查询语法,不难看出语法这一块Kibana还是想降低用户使用的门槛,也在KQL的输入上做了很多autoComplete的工作:



与此同时Kibana还将Filter作为一个单独的功能提取出来,本质上来说是一个Filter Query Builder的功能,通过Filed + Operator + Value的形式来进行可视化配置,同时也支持转换为一个Query DSL。每一个Filter也支持加上对应的标签,并且可以对同类标签进行批量设置,方便快速变化分析维度,在7.x之后,Filter还支持了单独的下拉列表,可以对其进行Enable、Disabled、Pin、UnPin、Invert和Remove等操作。



SLS则选择了完整的SQL92标准,SQL作为从业人员的一项基础技能,对于门槛的要求相对较低,同时支持JDBC完整协议,支持Join,以及时序分析、机器学习于建模等,某种层度上来说是具备更强大的智能查询分析能力。SLS也存在独立的查询语法:[search query] | [sql query],利用管道事先过滤数据集合,这样也带来了简单过滤的易用性,也提升了查询分析计算的速度。


从查询分析框的autoComplete能力来看,目前KQL和SLS Query都具备一定的自动提示,KQL具备简单的语法解析能力,能根据前一个字段来动态改变提示内容,而SLS目前还是比较简单的关键词匹配,在自动提示上还有比较大的优化空间。


目前SLS已经开始了SQL Builder + SQL智能语法提示的工作



时间选择器

Kibana在7.x之后升级了其时间选择器,看起来十分强大,支持秒、分钟、小时、天、周、月、年等时间粒度,我们也可以将其分为两个大类:


  1. 快速设置


  • 快速选择(Quick select)
    支持过去时间、将来时间的配置,而且支持设置范围和粒度来动态选择时间,并且支持快速访问前一个时间窗口和后一个时间窗口,对于时间前后分析来说十分有用

  • 常见选择(Commonly used)
    提供一些常见的时间窗口配置,帮助快速查看一个大概的范围

  • 最近选择(Recently used date ranges)
    历史时间选择记录

  • 自动刷新(Refresh every)



  1. 自定义设置
    Kibana提供了时间描述的语言,可以自己通过编写去得到一个自定义的窗口,分类如下:


  • 绝对时间
    获取一个具体的时间点,不会因为时间而改变

  • 相对时间
    类似快速选择,提供就当前时间点之前,之后的粒度选择,自定义一个范围。同时支持了整点设置(Round),抹去选择粒度之后的时间毛刺,部分相对时间会随着时间流逝而动态变化。
    可以通过一个格式来定义具体的相对时间点,比如当前时间点3小时前可以描述为
    ~ 3 hours ago,当前时间点15分钟之后可以描述为~ in 15 minutes

  • 当前(Now)



SLS目前只支持相对时间、整点时间和自定义时间,总体的可选择性相对于Kibana还是偏少,需要进一步优化



左侧

Kibana的左侧主要提供的都是和Index Pattern相关的内容



1. 切换index pattern




2. 快速筛选index中的Filed信息




3. 操作可视区域Filed




4. 获取Filed快速预览



SLS也支持快速查询,会根据索引的类型动态变化top 10或者分桶操作,Kibana则是计算前500条数据的top 5



核心区域


核心区域作为主视觉中最关键的地方,支持了分布直方图和日志文档的展示,如果字段中没有@timestamp,则不会出现时间选择器和分布直方图。



分布直方图

分布直方图用于查看当前时间范围的日志分布概览,分析异常的波峰或波谷,Kibana在分布直方图上支持了手势事件,拖拽和点击都可快速缩小时间范围进行更精确的分析




日志主体

Kibana默认为Time字段(需要有@timeStamp)和_source字段进行展示,可以通过左侧来变换字段是否为一列进行展示。在日志主体上,Kibana并未添加太多的事件触发,更多的是提供日志的预览,Kibana把这个交互变成了单一document的预览



在单一日志上,纵向平铺了所有的字段,也可以将该条日志切换为JSON显示,非常直观方便。除此之外支持快速将这一字段的值变成一个Filter或者操作这个Filed为显示列



当然,不可缺少的Kibana也支持当前日志的上下文查询,到另外一个界面去预览前后的文档



相对于Kibana来说,SLS的核心显示区域的功能更加丰富:


  • 支持JSON类型显示配置

  • 支持升降序排列

  • 支持整行和换行排列

  • 支持表格和原始两种模式

  • 支持自定义事件配置




进一步参考

  • 论坛分享视频:https://developer.aliyun.com/live/246820

  • SLS(日志服务)云原生观测分析平台:https://www.aliyun.com/product/sls

  • SLS新版告警文档首页:https://help.aliyun.com/document_detail/207609.html

  • 欢迎钉钉扫群加入阿里云-日志服务(SLS)技术交流, 获得第一手资料与支持


  • 更多SLS的系列直播与培训视频会同步到微信公众号与B站,敬请留意

为您推荐(持续更新)

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存