用ELK分析支付宝账单(二)
上一篇文章介绍了Logstash的配置,当我们将数据导入到ES后,就可以使用Kibana来分析和展示数据了。
一、设置索引
第一次登录Kibana,先设置索引样式(index pattern)。Kibana使用index pattern从ElasticSearch中提取数据。
下面选择一个表示时间的字段,Kibana会按照这个字段来对数据进行过滤和排序,这里的@timestamp默认是数据导入到es的时间,但此时这里的@timestamp是我们在logstash的配置文件里使用date plugin转换成的CreationTime.
二、Kibana Discover面板
1.调整Time picker
打开Discover面板,发现没有数据,原来是因为时间选择了今天。所以我们需要利用time picker选择@timestamp的值,展示历史数据。
选择了Last 2 years后,数据就出现在面板上了
2.利用Lucene Query来查找数据
例如此时我要查找账单数额在100到200之间的,我用的query是Amount:[100 TO 200]
这里的记录包含支出和收入,如果我只查找收入的记录呢?用的query应该是Amount:[100 TO 200] AND inOut:收入
通过Save选项可以保存这个search的query.
通过Open选项可以找到保存的query
3.Filter
在左侧的栏目中有所有的field,可以对记录进行过滤。下面以ProductName为例,点开ProductName,栏目中会显示这个field中top 5的value。
每个value旁边有个加号和减号,加号表示只保留这部分的记录,减号表示排除这部分的记录。
此时我只想看我在万宁的购买记录,所以我点击了Mannings后面的加号,此时只选择了ProductName=Mannings的记录了。
可以add a filter
还可以Edit Query DSL
三、Kibana Visualize
我觉得在Kibana,Visualization才是重头戏,我们可以创建很多个图表来展示和分析数据。
例如此时我想展示2017.04到2018.03每个月的平均支出
首先filter出inOut为支出的记录,设置Y轴为费用的平均数
设置X轴为Date Histogram(日期柱状图),field为timestamp, 间隔为以月为单位。
这里好像只能选择@timestamp作为field
得到的图表如下:
这里可以看出很明显2017年9月份的支出是最多的。
2.根据商品名称创建了词云,过滤掉了收款和转账的记录,可见我有多爱华辉拉肠了。。。
3.饼图
把数量当做度量标准,按照费用分range
最后得到如下饼图