ELK专题:Day4——Kibana日志分析可视化

1. 前言

经过前面Day1搭建集群,Day2实现日志内容识别,Day3配置补充,我们从业务机器采集回来了大量易于分析的日志。在日常的运维工作中,我们要的并不只会是一堆索引数据,我们搭建ELK集群进行日志分析,也不会止步于简单的索引。我们前面做了那么多铺垫,为的就是要对我们的日志分析结果进行可视化输出。

毕竟,人类是视觉动物。

example

2. 场景分析

Understanding a question is half an answer.

via Socrates

在我们进行数据可视化之前,首先要问的并不是我们需要什么图表,而应该是我们想要知道什么。

在不同的业务场景或者是不同的岗位里面,我们关注的问题往往也不一样。比方说,我一个做运维的就不会关注玩家的年龄分布,但往往产品经理就会很在意。运维会关注服务器的并发连接数变化,产品经理就未必感兴趣了。

在接下来的内容中,我们将继续以我们的Hexo网站作为分析对象,通过网站产生的Nginx访问日志,进行一些基本的分析。

2.1 网站访问量统计

当我们运营一个网站的时候,首先最直观的运营数据就是网站的点击率。得到这个数据之后,就可以根据访问量制定服务器的扩缩容计划。

2.2 网站访问量随时间分布

结合上一点,我们可以再深入一点,我们可以考虑做一个折线图,反应网站访问量随着时间的变化。在一定程度上,也可以说是网站的“行情”,也有助于我们去预测网站访问量的变化,从容地安排扩缩容计划。

2.3 Http返回码统计

在正常情况下,http返回码主要都是集中在200、304、301等,我们可以通过http各种返回码的占比判断网站流量是否正常。比如说,如果突然出现大量的5xx、4xx返回码,可能意味着后台出了故障,或者是网站正在遭受攻击,所以http返回码也是我们的关注点之一。

2.4 网站热点数据

分析Web日志中记录的URI访问数量排名,可以知道网站的热点数据,一方面可以知道哪些内容最受欢迎,另一方面可以把热点URI作为压测的测试样本。

2.5 网站访问来源统计

我们可以根据访问源IP地址分析出访客所在的地区,同样可以作为一个运营指标,知道网页的内容比较多受到哪些地区的网友的欢迎。如果业务内容是游戏或者是营销号,那这个指标就显得很重要了。

3. 操作步骤

结合上一节提到的各种想法,我们可以开始去创建图表了。

3.1 创建dashboard

进入Kibana主菜单 -> Dashboard -> 点击“Create dashboard”,即可新建一个dashboard,并进入到编辑页面。

create_dashboard

3.2 创建可视化图表

正如前文提到的,图表是围绕着业务性质和需求进行的,并不会有通用的方案,我在这里只会简单说明方法,抛砖引玉。除了我下面会介绍的之外,Kibana自带的图表方案相当丰富,可以展示更多复杂的场景。

3.2.1 创建Metric显示网站首页点击数

create_metric

3.2.2 创建条形图统计热点URI

create_stack

3.2.3 创建饼图展示HTTP返回码分布

需要着重说明的是,在这个例子中,我使用了filter功能,只统计Live环境的。

create_donut

3.3 样例展示

最后,我给我的这个网站做了这样的看板,内容不多,但已经可以直观地展示我的小网站的访问情况了。

dashboard-example

4. 总结

笔者在工作中使用的Kibana还停留在6.x版本,在创作这篇文章的过程中,惊讶于现在这个7.14版本的使用体验已经有了很大的改进。而最值得夸赞的是,系统会根据你的操作和数据揣摩你的需求,自动提供一个最符合你预期的设置方案,省却了很多的步骤。

而正如我前文所说,我这里介绍到的操作方法更多的是演示性质的,其实里面的配置还可以有很多的细节,甚至还可以制作聚合图形,只是囿于篇幅无法一一讲述。

但说到最后,还是想重复一次:比起可视化输出,更重要的是我们要清楚知道自己的需求,才能有的放矢。

我会在接下来的内容里面继续研究Kibana的可视化设置,探寻其他的可能性。

5. 参考文档

kibana看板