使用 Kibana Timelion 进行时间序列分析

网友投稿 401 2022-11-01

使用 Kibana Timelion 进行时间序列分析

概念

先了解>一个概念:什么是同比和环比?

同比和环比的意思:(1)同比:本期与同期做对比。(2)环比:本期与上期做对比。简单点说,同比和环比用于表示某一事物在对比时期内发展变化的方向和程度。

同比:通常是指今年第n月与去年第n月比。同比发展速度主要是为了消除季节变动的影响,用以说明本期发展水平与去年同期发展水平对比而达到的相对发展速度。常用于分析数据的长期趋势。环比:通常是指表示连续2个单位周期(比如连续两月)内的量的变化比。环比包括两种:环比增长速度和环比发展速度。常用于分析数据的短期趋势。

统计周期两个相邻相同时间段比较(例如 6月和7月比较,8月和9月比较)----环比,多个统计周期之间同一位置时间段(每天中午12点)----同比两者区别是什么?(1)环比一般是用在月、日很少用在年上,主要是对比很短时间内涨幅程度,不过由于行业差异,比如旅游,会受到淡旺季影响。(2)同比一般用在相邻两年,相同时间段内,查看涨幅程度,一般用在两年相同月份,很少用在两月相同日期。

例子1:

例如,去年6月份,小王因为疫情原因缺乏运动而且经常呆在家里吃薯片,导致体重一度飙升到100公斤,今年,小王为了维护自己的阳光形象,开始锻炼身体,截止今年6月份,小王的体重下降到80公斤。由于公司业务的发展需要,小王天天加班熬夜,到7月份的时候体重就剩下了60公斤。那么这个时候,我们就可以说小王的体重同比下降了40%,环比下降了25%。同比:(100-60)/100;环比:(80-60)/80

2021 6月 100kg2022 6月 80kg2022 7月 60kg

(100-60)/100同比下降 40%,(80-60)/80 环比下降 25%

例子2:再例如,2020人均总收入2万元,2019人均总收入1万元,可以表达为2020年人均收入同比增长1万元,虽然2020和2019是相邻且长度相等的两个时间段,但是为两个统计周期,不是环比。先要确定统计周期,统计周期两个相邻相同时间段比较----环比,多个统计周期之间同一位置时间段----同比2020 2w2019 1w

结论:2020 同比增长 1w

了解了同比环比的概念就可以继续往下看了

什么是 Kibana Timelion?

Timelion 是 Kibana 中时间序列的可视化工具。时间序列可视化是按时间顺序分析数据的可视化。Timelion 可用于绘制二维图形,时间绘制在 x 轴上。与仅使用普通条形或线条可视化相比有什么优势?Timelion 采取了不同的方法。您无需使用可视化编辑器来创建图表,而是通过使用 timelion 特定语法将函数链接在一起来定义图形。此 sytnax 启用了一些经典点系列图表不提供的功能 - 例如将来自不同索引或数据源的数据绘制到一个图表中。timelion可以聚合完全独立的完全不同的数据源的数据,糅合到同一个图里边,进行一些展示以及分析。(kibana一般都只展现es的某一个index的)

如下一些问题是kibana不能处理,而timelion可以的:

在一张图里边看这个月每天爬取量与上个月每天爬取量 这个月爬取数量的累积和 相比较上个月爬取量而言,这个月增长的幅度 展现股票的30分均线图 ...

Timelion 表达式

timelion表达式以.开头,中间会跟上一堆参数。timelion表达式支持链式调用,如es(q=site:yd).lable(yd)也可以在一个图中画多条曲线,用来对比,用逗号分隔。这个博客主要记录下一些常用的方法以及他们的参数。

.es函数:

index 指明索引 .es(index=nginx-access-log-* q query string 查询 timefield 指定时间轴采用的字段,默认@timestamp timefield=@timestamp,可以在 Stack Management-->Advanced Settings-->timelion:es.timefield 更改默认值 metric 指明展示指标,默认是个数。metric aggregation:avg,sum,min,max,cardinality。后面接字段名,例"sum:bytes" split 按照某字段分组数据 offset 设置时间偏移值,比如-1d -1h offset=-1d

自定义和格式化可视化:

mvavg(移动平均法) 的个人理解

参考: 移动平均法百度百科移动加权平均法就是每次购入存货,都要把库存的总金额加上本次购入的总金额除以(库存数量+本次库存的数量)。

例如:A材料本月初余额100个,单价60元,金额为6000元5日购入200个 单价65元 金额13000平均单价=(6000+13000)/(100+200) =19000/常300=63.3310日购入150个 单价70元 金额10500平均单价=(19000+10500)/(300+150)=29500/450=65.56

简单移动平均法简单移动平均算法会计算特定期间数的平均值,然后将其用作该集后第一个期间的事后预测。然后,会将计算向未来推移一个期间,但仍会计算相同数量的期间的平均值。然后会再次将计算推移一个期间,为历史期间的每个集重复此步骤。到达最后一个集时,会计算其平均值,然后将此结果用作第一个未来期间的预测。

例如,如果您指定一个集应由 3 个月组成且计算应从 10 月份开始,则系统会计算 10 月份、11 月份和 12 月份的平均值,然后将结果用作 1 月份的事后预测。然后会计算 11 月份、12 月份和 1 月份的平均值,并将此结果用作 2 月份的事后预测。它会持续进行这种计算,直到到达当前月份(假设是 3 月份)。然后会将期间的最后一个集(12 月份、1 月份和 2 月份)的平均值用作三月份的预测(不是事后预测)。

实例

背景

在之前的一篇文章中实现了收集 jenkins load statistics 数据到 ELK,该 Dashboard 最终显示的是不同组的功率使用总和(SUM)值。领导又提需求了,需要实现过去三天的同一时间的功率对比,例如今天中午 12 点和昨天、前天中的12点的功率使用对比图,这样就用到了上边我们说的“同比”概念。

创建 Timelion 的 Visualiztion

Timelion expression```html/xml.es(q="Label_Group:CI_Test_Label",index=jenkins_executor,timefield=date,metric=avg:totalExecutors).mvavg(1h).label(current).lines(fill=0,width=1).scale_interval(interval=5m).title("CI Test totalExecutor Average"),.es(q="Label_Group:CI_Test_Label",index=jenkins_executor,timefield=date,metric=avg:totalExecutors,offset=-1d).mvavg(1h).label("Yesterday").lines(fill=0,width=1).scale_interval(interval=5m),.es(q="Label_Group:CI_Test_Label",index=jenkins_executor,timefield=date,metric=avg:totalExecutors,offset=-2d).mvavg(1h).label("Before Yesterday").lines(fill=0,width=1).scale_interval(interval=5m)

> 其中 q="Label_Group:CI_Test_Label" 表示 Label_Group 为 CI_Test_Label 的 filter 数据。类似下边的语句: ![image.png](https://s2./images/20220704/1656900590194213.png?x-oss-process=image/watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_30,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=) ## 参考博客 https://cnblogs.com/Forever-x/p/11325113.html Timelion 教程: https://cnblogs.com/benjiming/p/7416685.html Kibana 的 timelion 工具: https://cnblogs.com/xiaobaozi-95/p/9328389.html Kibana:使用 Kibana Timelion 进行时间序列分析: https://blog.csdn.net/ubuntutouch/article/details/109254566 Kibana 初步使用之 Timelion: https://juejin.cn/post/6844903768891326471 Kibana 深入-Timelion: https://cnblogs.com/Forever-x/p/11325113.html

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Java入门基础之抽象类与接口
下一篇:基于一种超高频无源射频标签的射频接口电路设计
相关文章

 发表评论

暂时没有评论,来抢沙发吧~