一开始看到Kibana中自带了个叫timelion的东西,感觉很神奇,为什么有了kibana之前的一些展现数据的图了(如柱状图,折线图等)还需要timelion嘞?
Timelion is a time series data visualizer that enables you to combine totally independent data sources within a single visualization. It’s driven by a simple expression language you use to retrieve time series data, perform calculations to tease out the answers to complex questions, and visualize the results.
timelion可以聚合完全独立的完全不同的数据源的数据,糅合到同一个图里边,进行一些展示以及分析。(kibana一般都只展现es的某一个index的)
如下一些问题是kibana不能处理,而timelion可以的
- 在一张图里边看这个月每天爬取量与上个月每天爬取量
- 这个月爬取数量的累积和
- 相比较上个月爬取量而言,这个月增长的幅度
- 展现股票的30分均线图
- ...
timelion表达式以.开头,中间会跟上一堆参数。timelion表达式支持链式调用,如es(q=site:yd).lable(yd)
也可以在一个图中画多条曲线,用来对比,用逗号分隔。这个博客主要记录下一些常用的方法以及他们的参数。
.es (.elasticsearc相同)
一般都会从.es开始,会从es中拉取需要展示的数据
- q query参数,lucene语法
- index 可以指定索引,如logstash-*
- timefield 可以指定时间轴采用的字段,默认@timestamp
- split 按某字段分隔 如 split=source:4 按source字段进行划分,取数量前四的展现。一个表达式可以有多个split
- metric 聚类,如metric=sum:bytes,y轴即为bytes的和。一个表达式可以有多个metric
- offset偏移值 如-1w即为显示一个礼拜之前的数据。
.static
一条水平的直线
- value y轴值
- label 标签
.lines
一个表达式默认展现出来会是一条线
- width 线条的粗细
- fill 取值0-10 会填充曲线与x轴之间的区域,fill值代表类似透明度的东西
- show boolean 是否显示
- step boolean 是否显示为一种类似阶梯的形式
- stack 如果有fill的,当两条线拥有共同填充区域时,是否选择堆叠。默认true
.bars
展现为柱状图
- width 柱状图的粗细
- stack 当有两个曲线都是bars,拥有共同的区域时,是否选择堆叠。
.points
展现为一个个点
- radius 点的半径
- weight 点的线的粗细
- fill 取值0-10 填充区域的填充度
- fillColor 填充颜色
- symbol 形状,默认为圆形,可取值为cross(叉叉),circle,triangle,square,diamond(菱形)
.color
颜色,可填red,blue这种,也可以是#c6c6c6这样的
.label
修改标签,如.es(*).label(test)
.range
y轴取值,如range(0,10)代表着y轴按比例缩小到0-10的范围内
.yaxis
对y轴的一些设置
- min y轴最小值
- max y轴最大值
- position 取值left right,y轴显示位置
- label y轴标签
- color 标签的颜色
.scale_interval
有时候需要画多条线,但是对x轴精度要求不同,可以使用scale_interval来改变统计的间隔。
.abs
取绝对值
.cusum
累加和
.divide .multiply .add .subtract
显示的值除/乘...以某个值,也可以除以某个表达式(即两次查询结果做相应操作)
.min .max
最大值最小值操作,可以比较两个不同的表达式
这边官网提供了一个很有意思的用法 .es().bars(stack=false).color(#F44336), .min(.es(), 25).bars(stack=false).color(#8BC34A)
会把一个柱状图中 超过25的区域都改为另一种颜色
.derivative
求导
.mvavg
move avg 顾名思义,移动平均值。类似K线图中的五分钟均价
- window 取均值的窗口范围
- position 取值的位置。可为left right center(默认)
.if (.condition相同)
if表达式
- operator 有lt,lte,eq,gt,gte五种,分别代表小于 小于等于...
- if 比较的值。可以是一个值或者是一个新的es搜索表达式。
- then 如果上边的if匹配到了,则取值为then的值。可以是一个值或者是一个表达式。如.es().if(lt, 500, null),即为如果小于500,则不显示
- else 如果不满足if则会为else。.es().if(lt, 500, 0,1)表示如果小于500,显示0,否则显示1
网友评论