引言
kibana是elasticsearch(以下简称ES)的可视化平台,笔者平时使用kibana的dev tools
比较多,在这里可以更便捷的使用ES的各种命令,DSL查询语句等。
但是kibana的可视化功能远不止于次。Kibana可以用来搜索,查看ES索引中的数据,可以轻松地进行高级数据分析,并可在各种图表,表格和地图中显示数据。并且可以基于浏览器的界面快速创建和共享动态仪表板,实时反馈ES中数据的更改。
由于kibana可视化的很多组件其实都是基于ES聚合的结果,所以看本篇文章建议对ES的聚合有所了解。
本文使用的示例全部都是基于kibana自带的示例数据,读者自己有兴趣也可以实际操作一下。
本文操作使用的ES和kibana都是基于7.1.0版本。
正文
新建索引模式(index pattern)
index pattern是kibana可视化的前提。它相当于告诉kibana要使用哪些索引作为数据进行可视化展示。索引我们第一步就来创建一个index pattern。
如上图所示,先在左侧菜单找到management
,然后点击index patterns
-- create index pattern
。新建一个index pattern,这里拿kibana自带的电商的索引举例。
在上图中通过输入index pattern的名称,kibana会自动显示匹配的索引,然后点击next
。
选择索引中的时间维度的字段,如果有多个的话根据具体的业务场景选择。比如这里我选择的是订单的创建时间字段。
需要说明的是,这个时间字段是用来方便基于时间过滤数据用的。如果你的业务上不需要基于时间范围筛选,也可以不选择这一步。
到这里我们的index pattern就建好了。读者自己可以参考上面的流程,为航班数据索引新建一个index pattern。
使用discovery搜索数据
discovery在日志搜索用的比较多,现在很多公司都会把服务的日志搜集到ES然后通过kibana的discovery功能查找日志。这样比以前登陆到线上服务器一台台grep
方便很多。
如上图所示,在菜单中选择discovery
,然后就能看到我们前面章节新建的index pattern。
在上图的1的位置,我选择了电商的index pattern,然后在2的位置选择时间进行过滤,这里我选择是的1年前的所有数据。时间过来的维度很多,大家可以一一尝试下。1的旁边有个搜索框,可以输入任意信息对索引进行搜索。除了一般的直接输入字符串进行搜索之外,这里还支持指定搜索某个字段,只需要在搜索框里输入类似下面:
user:"youssef"
就可以搜索user
字段值满足youssef
的数据。
在图中3的位置以直方图的形式汇总了数据的分布情况,可以看到我们的数据主要都集中在2019年12月到2020年1月这段时间内。
图中4的位置就是数据本身了,可以支持table和json两种方式显示。左侧的菜单里支持过滤指定的字段显示,这里不展开来讲了。
可视化数据
kibana自带了很多可视化的组件,方便我们对聚合后的结果进行可视化的展示。下面来看一个例子。
在左侧菜单选择visualize
,然后点击右边的+
号,如下图所示:
这里有很多可视化组件,我这里以pie
饼图为例子说明。
如上图所示,我们在左边选择分桶聚合模式,然后分桶的字段是用户性别字段,度量单位是count
,然后点击上方的三角按钮运行,结果就是上图中展示的效果。在这个图中可以看到男女的比例。
假如我们还想看下男女各自的城市分布情况,可以添加一个子分桶,在左侧下方点击add sub buckets
。
如上图,在子分桶里我们同样选择了terms
分桶,然后分桶的字段是用户所在的城市。运行之后就是上图中的效果。点击左上角的save
按钮,还可以把当前的可视化结果保存。保存了之后我们就可以在dashboard上展示了。
在dashboard展示数据
dashboard可以理解为一个展示各种可视化组件的面板,我们可以把之前保存的可视化结果添加到面板中进行展示。
点击左侧菜单中的dashboard
,然后点击create new dashboard
,然后点击add
,选择我们前面保存的可视化组件。
下图是一个基于我们前面讲的电商的index制作的面板展示示例
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。