大数据搜索与可视化分析(13)kibana visualize的timelion

Posted 你丫才秃头

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了大数据搜索与可视化分析(13)kibana visualize的timelion相关的知识,希望对你有一定的参考价值。


Timelion是一个时间序列数据的可视化,可以结合在一个单一的可视化完全独立的数据源。它是由一个简单的表达式语言驱动的,用来检索时间序列数据,进行计算,然后可视化结果


可以解决如下问题:

  • 每个唯一用户在一段时间内查看多少页

  • 本周五和上周五之间的流量有什么不同

  • 日本百分之几的人口今天来到我的网站

  • 标准普尔500指数10日移动平均线是多少

  • 过去两年内收到的所有搜索请求累计总和是多少

为了方便大家在上手之前了解 timelion 能做到什么,我们将timelion 的请求语法所支持的函数分为几类,罗列如下:


  • 可视化效果类

  • .bars($width): 用柱状图展示数组

  • .lines($width, $fill, $show, $steps): 用折线图展示数组

  • .points(): 用散点图展示数组

  • .color("#c6c6c6"): 改变颜色

  • .hide(): 隐藏该数组

  • .label("change from %s"): 标签

  • .legend($position, $column): 图例位置

  • .static(value=1024, label="1k", offset="-1d", fit="scale"):在图形上绘制一个固定值

  • .value():.static() 的简写

  • .title(title="qps"):图表标题

  • .trend(mode="linear", start=0, end=-10):采用 linear 或 log 回归算法绘制趋势图

  • .yaxis($yaxis_number, $min, $max, $position): 设置 Y 轴属性,.yaxis(2) 表示第二根 Y 轴


  • 数据运算类

  • .abs(): 对整个数组元素求绝对值

  • .precision($number): 浮点数精度

  • .cusum($base): 数组元素之和,再加上 $base

  • .derivative(): 对数组求导数

  • .divide($divisor): 数组元素除法

  • .multiply($multiplier): 数组元素乘法

  • .subtract($term): 数组元素减法

  • .sum($term): 数组元素加法

  • .add(): 同 .sum()

  • .plus(): 同 .sum()

  • .first(): 返回第一个元素

  • .movingaverage($window): 用指定的窗口大小计算移动平均值

  • .mvavg(): .movingaverage() 的简写

  • .movingstd($window): 用指定的窗口大小计算移动标准差

  • .mvstd(): .movingstd() 的简写

  • .fit($mode):使用指定的 fit 函数填充空值。可选项有:average, carry, nearest, none, scale

  • .holt(alpha=0.5, beta=0.5, gamma=0.5, season="1w", sample=2):即 Elasticsearch 的 pipeline aggregation 所支持的 holt-winters 算法

  • .log(base=10):对数

  • .max():最大值

  • .min():最小值

  • .props():附加额外属性,比如 .props(label=bears!)

  • .range(max=10, min=1):保持形状的前提下修改最大值最小值

  • .scale_interval(interval="1s"):在新间隔下再次统计,比如把一个原本 5min 间隔的 date_histogram 改为每秒的结果

  • .trim(start=1, end=-1):裁剪序列值


  • 逻辑运算类

  • .condition(operator="eq", if=100, then=200):支持 eq、ne、lt、gt、lte、gte 等操作符,以及 if、else、then 赋值

  • .if():.condition() 的简写


  • 数据源设定类

  • .elasticsearch(): 从 ES 读取数据

  • .es(q="querystring", metric="cardinality:uid", index="logstash-*", offset="-1d"): .elasticsearch() 的简写

  • .graphite(metric="path.to.*.data", offset="-1d"): 从 graphite 读取数据

  • .quandl(): 从 quandl.com 读取 quandl 码

  • .worldbank_indicators(): 从 worldbank.org 读取国家数据

  • .wbi(): .worldbank_indicators() 的简写

  • .worldbank(): 从 worldbank.org 读取数据

  • .wb(): .worldbanck() 的简写


接下来,我们开始学习timelion在kibana中绘图

数据源我们采用elasticsearch官网上的logstash数据

《 logs.jsonl.gz》https://download.elastic.co/demos/kibana/gettingstarted/logs.jsonl.gz

首先创建timelion

  • 对访问量进行计数绘图

.es(index=logstash*,metric=count)

默认的,如不写metric,也是count聚合方法

当前得到timelion图为

大数据搜索与可视化分析(13)kibana visualize的timelion

如不显示数据,则需要调整右上角时间选择器到2015年5月18日-2015年5月20日即可显示数据。


  • 对比数据

对比数据即当天访问量和前一天访问量进行对比,通过offset关键字进行指定

.es(index=logstash*,metric=count,offset=-1d),.es(index=logstash*,metric=count)

大数据搜索与可视化分析(13)kibana visualize的timelion

红色曲线为昨日访问量,绿色曲线为今日访问量。

如不好区分,可通过label标签进行标注。

.es(index=logstash*,metric=count,offset=-1d).label("昨日"),.es(index=logstash*,metric=count).label("今日")

大数据搜索与可视化分析(13)kibana visualize的timelion


为timelion图例添加一个标题

.es(index=logstash*,metric=count,offset=-1d).label("昨日"),.es(index=logstash*,metric=count).label("今日").title("访问统计")

大数据搜索与可视化分析(13)kibana visualize的timelion


  • 更改样式

对昨日曲线更改样式

.es(index=logstash*,metric=count,offset=-1d).label("昨日").lines(fill=1,width=0.5),.es(index=logstash*,metric=count).label("今日").title("访问统计")

大数据搜索与可视化分析(13)kibana visualize的timelion

更改曲线颜色

修改原红色曲线到蓝色曲线,原淡绿色曲线覆盖区域修改为灰色

.es(index=logstash*,metric=count,offset=-1d).label("昨日").lines(fill=1,width=0.5).color(gray),.es(index=logstash*,metric=count).label("今日").title("访问统计").color(#1E90FF)

大数据搜索与可视化分析(13)kibana visualize的timelion

  • 分组查询

我们可以对访问源进行分组,通过split关键字

.es(index=logstash*,metric=count,split=geo.src.keyword:3)

split后面的3,为只展示3个图例

大数据搜索与可视化分析(13)kibana visualize的timelion

  • 指定查询条件

通过关键字q指定查询条件,查询访问源为中国,对访问设备进行分组

.es(index=logstash*,q="geo.src.keyword:CN",metric=count,split=machine.os.keyword:3)

大数据搜索与可视化分析(13)kibana visualize的timelion

  • 添加告警线

对流量进行统计,并在1000000处添加告警线

.es(index=logstash*,metric=sum:bytes,offset=-1d).label("昨日"),.es(index=logstash*,metric=sum:bytes).label("今日"),.static(1000000).label("告警线").color("red")

大数据搜索与可视化分析(13)kibana visualize的timelion

访问量和流量的对比

(.es(index=logstash*).label("请求计数"),.es(index=logstash*,metric=sum:bytes).label("流量计数")).range(0,10000)

数据量很大无法匹配两个图例时,可通过range进行适配

缺点是对流量统计数值有影响,解决办法是通过增加一个Y轴进行展示

.es(index=logstash*).label("请求计数"),.es(index=logstash*,metric=sum:bytes).label("流量计数").yaxis(2)


更多大数据搜索与可视化分析讲解,可点击原文查看。

以上是关于大数据搜索与可视化分析(13)kibana visualize的timelion的主要内容,如果未能解决你的问题,请参考以下文章

如何开发自己的搜索帝国之ES图形化Kibana安装与使用

如何开发自己的搜索帝国之ES图形化Kibana安装与使用

Kibana可视化数据分析

Kibana-介绍

开源的分析与可视化平台Kibana的介绍以及源码搭建

企业运维之 ELK日志分析平台(Kibana)