Gao Conghui

好好学习,天天向上

爬虫,视频处理


timelion一些基本表达式

一开始看到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
最近的文章

python随笔 Mock vs MagicMock

首先,从现象上看,Mock有的MagicMock都有,而MagicMock多了一些magic方法。_mock = mock.Mock()_magicmock = mock.MagicMock()mock.__iter__ # error_magicmock.__iter__ #<MagicMock name='mock.__iter__' id='4458398224'>而且MagicMock是懒加载的,在没调用magic方法的时候,是不存在这个方法的。>>>...…

python mock继续阅读
更早的文章

chrome抓包websocket frame为空

尝试抓websocket的包,遇上一个奇葩的问题,分享下。测试网站如下http://websocket.org/echo.htmlchrome抓websocket的包很简单 打开http://websocket.org/echo.html connect ,send,可以在前端看到输出 打开chrome开发者工具,可以看到已经有websocket的连接然而…啥都没有…很迷,看了许久,搜了很多地方,换了电脑,升级了最新版本,依旧啥都没有…终于,在StackOverflow 上找到了靠谱...…

websocket继续阅读