vlambda博客
学习文章列表

关于kibana的可视化可能都在这篇文章里了

引言

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自带的电商的索引举例。

关于kibana的可视化可能都在这篇文章里了

在上图中通过输入index pattern的名称,kibana会自动显示匹配的索引,然后点击next

关于kibana的可视化可能都在这篇文章里了

选择索引中的时间维度的字段,如果有多个的话根据具体的业务场景选择。比如这里我选择的是订单的创建时间字段。
需要说明的是,这个时间字段是用来方便基于时间过滤数据用的。如果你的业务上不需要基于时间范围筛选,也可以不选择这一步。

到这里我们的index pattern就建好了。读者自己可以参考上面的流程,为航班数据索引新建一个index pattern。

使用discovery搜索数据

discovery在日志搜索用的比较多,现在很多公司都会把服务的日志搜集到ES然后通过kibana的discovery功能查找日志。这样比以前登陆到线上服务器一台台grep方便很多。

关于kibana的可视化可能都在这篇文章里了

如上图所示,在菜单中选择discovery,然后就能看到我们前面章节新建的index pattern。

关于kibana的可视化可能都在这篇文章里了

在上图的1的位置,我选择了电商的index pattern,然后在2的位置选择时间进行过滤,这里我选择是的1年前的所有数据。时间过来的维度很多,大家可以一一尝试下。1的旁边有个搜索框,可以输入任意信息对索引进行搜索。除了一般的直接输入字符串进行搜索之外,这里还支持指定搜索某个字段,只需要在搜索框里输入类似下面:

user:"youssef"

就可以搜索user字段值满足youssef的数据。

在图中3的位置以直方图的形式汇总了数据的分布情况,可以看到我们的数据主要都集中在2019年12月到2020年1月这段时间内。

图中4的位置就是数据本身了,可以支持table和json两种方式显示。左侧的菜单里支持过滤指定的字段显示,这里不展开来讲了。

可视化数据

kibana自带了很多可视化的组件,方便我们对聚合后的结果进行可视化的展示。下面来看一个例子。

在左侧菜单选择visualize,然后点击右边的+号,如下图所示:

关于kibana的可视化可能都在这篇文章里了

这里有很多可视化组件,我这里以pie饼图为例子说明。

关于kibana的可视化可能都在这篇文章里了

假如我们还想看下男女各自的城市分布情况,可以添加一个子分桶,在左侧下方点击add sub buckets

关于kibana的可视化可能都在这篇文章里了

如上图,在子分桶里我们同样选择了terms分桶,然后分桶的字段是用户所在的城市。运行之后就是上图中的效果。点击左上角的save按钮,还可以把当前的可视化结果保存。保存了之后我们就可以在dashboard上展示了。

关于kibana的可视化可能都在这篇文章里了

在dashboard展示数据

dashboard可以理解为一个展示各种可视化组件的面板,我们可以把之前保存的可视化结果添加到面板中进行展示。

点击左侧菜单中的dashboard,然后点击create new dashboard,然后点击add,选择我们前面保存的可视化组件。

下图是一个基于我们前面讲的电商的index制作的面板展示示例