Kibana 用户指南(Timelion入门)(4)

img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上软件测试知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

需要这份系统化的资料的朋友,可以戳这里获取


![timelion-create01.png](https://image-static.segmentfault.com/387/639/3876398810-5bc33f0e2ca58_articlex "timelion-create01.png")


现在你需要添加另一个具有前一小时数据的系列,以便进行比较,为此,你必须向`.es()`函数添加一个`offset`参数,`offset`将用日期表达式偏移序列检索。对于本例,你希望将数据偏移一小时,并使用日期表达式`-1h`,使用逗号分隔这两个系列,在Timelion查询栏中输入以下表达式:



.es(index=metricbeat-, timefield=‘@timestamp’, metric=‘avg:system.cpu.user.pct’), .es(offset=-1h,index=metricbeat-, timefield=‘@timestamp’, metric=‘avg:system.cpu.user.pct’)


![timelion-create02.png](https://image-static.segmentfault.com/401/177/4011777193-5bc3400d45f82_articlex "timelion-create02.png")


很难区分这两个系列,自定义标签以便于区分它们,你总是可以将`.label()`函数附加到任何表达式以添加自定义标签,在Timelion查询栏中输入以下表达式来定制标签:



.es(offset=-1h,index=metricbeat-, timefield=‘@timestamp’, metric=‘avg:system.cpu.user.pct’).label(‘last hour’), .es(index=metricbeat-, timefield=‘@timestamp’, metric=‘avg:system.cpu.user.pct’).label(‘current hour’)


![timelion-create03.png](https://image-static.segmentfault.com/182/651/1826515032-5bc34621d9502_articlex "timelion-create03.png")


保存完整的Timelion工作表作为Metricbeat示例,作为一种最佳实践,你应该在完成本教程的过程中保存对本工作表所做的任何重要更改。


### 定制和格式化可视化


Timelion有很多定制选项,你几乎可以使用可用的函数对图表的每个方面进行个性化设置,对于本教程,你将执行以下修改。


* 添加一个标题
* 更改系列类型
* 改变一个系列的颜色和不透明度
* 修改图例


在上一节中,你用两个系列创建了一个时间轴图表,让我们继续定制这个可视化。


在进行任何其他修改之前,将`title()`函数附加到表达式的末尾,以添加具有有意义名称的标题,这将使不熟悉的用户更容易理解可视化目的。对于这个示例,将`title('CPU usage over time')`添加到原始系列中,在Timelion 查询栏中使用以下表达式:



.es(offset=-1h,index=metricbeat-, timefield=‘@timestamp’, metric=‘avg:system.cpu.user.pct’).label(‘last hour’), .es(index=metricbeat-, timefield=‘@timestamp’, metric=‘avg:system.cpu.user.pct’).label(‘current hour’).title(‘CPU usage over time’)


![timelion-customize01.png](https://image-static.segmentfault.com/820/333/820333134-5bc34daff06d1_articlex "timelion-customize01.png")


为了进一步区分过去一小时系列,你将把图表类型更改为区域图表,为了做到这一点,你需要使用`.lines()`函数来定制折线图,你将设置`fill`和`width`参数,分别设置折线图的填充和折线宽度。在本例中,你将通过添加`.lines(fill=1,width=0.5)`将填充级别设置为1,边框宽度设置为0.5,在Timelion查询栏中使用以下表达式:



.es(offset=-1h,index=metricbeat-, timefield=‘@timestamp’, metric=‘avg:system.cpu.user.pct’).label(‘last hour’).lines(fill=1,width=0.5), .es(index=metricbeat-, timefield=‘@timestamp’, metric=‘avg:system.cpu.user.pct’).label(‘current hour’).title(‘CPU usage over time’)


![timelion-customize02.png](https://image-static.segmentfault.com/378/527/3785275020-5bc355fa029f9_articlex "timelion-customize02.png")


让我们给这些系列涂上颜色,使当前的小时系列比过去一个小时系列流行一点,`color()`函数可用于更改任何系列的颜色,并接受标准颜色名称、十六进制值或分组系列的颜色模式。对于这个示例,你将在过去一个小时使用`.color(gray)`,而在当前小时使用`.color(#1E90FF)`,在Timelion查询栏中输入以下表达式进行调整:



.es(offset=-1h,index=metricbeat-, timefield=‘@timestamp’, metric=‘avg:system.cpu.user.pct’).label(‘last hour’).lines(fill=1,width=0.5).color(gray), .es(index=metricbeat-, timefield=‘@timestamp’, metric=‘avg:system.cpu.user.pct’).label(‘current hour’).title(‘CPU usage over time’).color(#1E90FF)


![timelion-customize03.png](https://image-static.segmentfault.com/135/418/1354189234-5bc356b451f81_articlex "timelion-customize03.png")


最后但并非最不重要,调整图例,使其占用尽可能小的空间,你可以使用`.legend()`函数来设置图例的位置和样式。在本例中,通过将`.legend(columns=2, position=nw)`两列追加到原始系列,将图例放置在可视化的西北位置,使用以下表达式进行调整:



.es(offset=-1h,index=metricbeat-, timefield=‘@timestamp’, metric=‘avg:system.cpu.user.pct’).label(‘last hour’).lines(fill=1,width=0.5).color(gray), .es(index=metricbeat-, timefield=‘@timestamp’, metric=‘avg:system.cpu.user.pct’).label(‘current hour’).title(‘CPU usage over time’).color(#1E90FF).legend(columns=2, position=nw)


![timelion-customize04.png](https://image-static.segmentfault.com/127/829/1278293982-5bc357c391c4b_articlex "timelion-customize04.png")


保存你的更改并继续到下一节学习数学函数。


### 使用数学函数


在前两部分中,你已经学习了如何创建和样式化Timelion可视化,本节将探索Timelion提供的数学函数。你将继续使用[Metricbeat数据]( )为入站和出站网络流量创建新的Timelion可视化,首先,你需要在工作表中添加一个新的Timelion可视化。


在顶部菜单中,单击`Add`添加第二个可视化,当添加到工作表中时,你会注意到查询栏已经被替换为默认的`.es(*)`表达式,这是因为查询与你选择的Timelion工作表上的可视化相关联。


![timelion-math01.png](https://image-static.segmentfault.com/331/328/3313284379-5bc358ecb7cee_articlex "timelion-math01.png")


要开始跟踪入站/出站网络流量,你的第一个表达式将计算`system.network.in.bytes`的最大值,将下面的表达式输入到你的Timelion查询栏:



.es(index=metricbeat*, timefield=@timestamp, metric=max:system.network.in.bytes)


![timelion-math02.png](https://image-static.segmentfault.com/365/491/3654919555-5bc3593c40a99_articlex "timelion-math02.png")


在绘制变化率时,监视网络流量更有价值,`derivative()`函数就是这样做的 - 绘制值随时间的变化,通过在表达式末尾添加`.derivative()`可以很容易地做到这一点,使用以下表达式来更新你的可视化:



.es(index=metricbeat*, timefield=@timestamp, metric=max:system.network.in.bytes).derivative()


![timelion-math03.png](https://image-static.segmentfault.com/322/394/3223941296-5bc359c0a5602_articlex "timelion-math03.png")


现在是出站流量,你需要为`system.network.out.bytes`添加类似的计算,由于出站流量将离开你的机器,因此将此指标表示为负数是有意义的,`.multiply()`函数将系列乘以一个数字,这个数字是系列或系列列表的结果。对于本例,你将使用`.multiply(-1)`将出站网络流量转换为负值,使用以下表达式来更新你的可视化:



.es(index=metricbeat*, timefield=@timestamp, metric=max:system.network.in.bytes).derivative(), .es(index=metricbeat*, timefield=@timestamp, metric=max:system.network.out.bytes).derivative().multiply(-1)


![timelion-math04.png](https://image-static.segmentfault.com/104/397/1043975415-5bc35ab374790_articlex "timelion-math04.png")


为了使这个可视化更容易使用,将这个系列从字节转换为兆字节,Timelion有一个`.divide()`函数可以使用,`.divide()`接受与`.multiply()`相同的输入,并将这个系列除以所定义的除数,使用以下表达式来更新你的可视化:



.es(index=metricbeat*, timefield=@timestamp, metric=max:system.network.in.bytes).derivative().divide(1048576), .es(index=metricbeat*, timefield=@timestamp, metric=max:system.network.out.bytes).derivative().multiply(-1).divide(1048576)


![timelion-math05.png](https://image-static.segmentfault.com/428/686/428686623-5bc35b3766f7f_articlex "timelion-math05.png")


使用上一节中学习的格式化函数`.title()`、`.label()`、`.color()`、`.lines()`和`.legend()`,让我们稍微整理一下这个可视化,使用以下表达式来更新你的可视化:



.es(index=metricbeat*, timefield=@timestamp, metric=max:system.network.in.bytes).derivative().divide(1048576).lines(fill=2, width=1).color(green).label(“Inbound traffic”).title(“Network traffic (MB/s)”), .es(index=metricbeat*, timefield=@timestamp, metric=max:system.network.out.bytes).derivative().multiply(-1).divide(1048576).lines(fill=2, width=1).color(blue).label(“Outbound traffic”).legend(columns=2, position=nw)


![timelion-math06.png](https://image-static.segmentfault.com/202/176/2021764224-5bc35bc1871d8_articlex "timelion-math06.png")


保存你的更改并继续到下一节学习条件逻辑和跟踪趋势。


### 使用条件逻辑和跟踪趋势


在本节中,你将学习如何使用条件逻辑修改时间序列数据,并使用移动平均值创建趋势,这有助于随着时间的推移很容易地发现异常值和模式。


对于本教程,你将继续使用[Metricbeat数据]( )添加另一个监控内存消耗的可视化,首先,使用以下表达式绘制`system.memory.actual.used.bytes`的最大值。



.es(index=metricbeat-*, timefield=‘@timestamp’, metric=‘max:system.memory.actual.used.bytes’)


![timelion-conditional01.png](https://image-static.segmentfault.com/356/227/3562276284-5bc35c94d64b6_articlex "timelion-conditional01.png")


让我们创建两个阈值来监视使用的内存数量,在本教程中,警告阈值为12.5GB,严重阈值为15GB,当使用内存的最大数量超过这些阈值中的任何一个时,将相应地对该系列进行着色。



> 
>  如果你的计算机的阈值过高或过低,请相应地进行调整。 
>  


要配置这两个阈值,可以使用Timelion的条件逻辑,在本教程中,你将使用`if()`将每个点与一个数字进行比较,如果条件的值为`true`,则调整样式,如果条件的值为`false`,则使用默认样式,Timelion提供了以下六个操作符值进行比较。




|  |  |
| --- | --- |
| `eq` | 相等 |
| `ne` | 不相等 |
| `lt` | 小于 |
| `lte` | 小于或等于 |
| `gt` | 大于 |
| `gte` | 大于或等于 |


由于有两个阈值,因此对它们进行不同的样式是有意义的,使用`gt`操作符将警告阈值用`.color('#FFCC11')`涂成黄色,将严重阈值用`.color('red')`涂成红色,在Timelion查询栏中输入以下表达式,以应用条件逻辑和阈值样式:



.es(index=metricbeat-, timefield=‘@timestamp’, metric=‘max:system.memory.actual.used.bytes’), .es(index=metricbeat-, timefield=‘@timestamp’, metric=‘max:system.memory.actual.used.bytes’).if(gt,12500000000,.es(index=metricbeat-, timefield=‘@timestamp’, metric=‘max:system.memory.actual.used.bytes’),null).label(‘warning’).color(‘#FFCC11’), .es(index=metricbeat-, timefield=‘@timestamp’, metric=‘max:system.memory.actual.used.bytes’).if(gt,15000000000,.es(index=metricbeat-*, timefield=‘@timestamp’, metric=‘max:system.memory.actual.used.bytes’),null).label(‘severe’).color(‘red’)


![timelion-conditional02.png](https://image-static.segmentfault.com/106/688/1066888572-5bc35defa0f4f_articlex "timelion-conditional02.png")


有关Timelions条件功能的更多信息,请参阅[I have but one .condition()]( )的博客文章。


现在你已经定义了阈值来轻松地识别异常值,让我们创建一个新的系列来确定真正的趋势是什么,Timelion的`mvavg()`函数允许计算给定窗口上的移动平均值,这对嘈杂的时间序列特别有用,对于本教程,你将使用`.mvavg(10)`来创建具有10个数据点窗口的移动平均线,使用以下表达式创建最大内存使用量的移动平均值:



.es(index=metricbeat-, timefield=‘@timestamp’, metric=‘max:system.memory.actual.used.bytes’), .es(index=metricbeat-, timefield=‘@timestamp’, metric=‘max:system.memory.actual.used.bytes’).if(gt,12500000000,.es(index=metricbeat-, timefield=‘@timestamp’, metric=‘max:system.memory.actual.used.bytes’),null).label(‘warning’).color(‘#FFCC11’), .es(index=metricbeat-, timefield=‘@timestamp’, metric=‘max:system.memory.actual.used.bytes’).if(gt,15000000000,.es(index=metricbeat-, timefield=‘@timestamp’, metric=‘max:system.memory.actual.used.bytes’),null).label(‘severe’).color(‘red’), .es(index=metricbeat-, timefield=‘@timestamp’, metric=‘max:system.memory.actual.used.bytes’).mvavg(10)


![外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传](https://img-home.csdnimg.cn/images/20230724024159.png?origin_url=https%3A%2F%2Fimage-static.segmentfault.com%2F132%2F344%2F1323443199-5bc35ed98f4e7_articlex%20%22timelion-conditional03.png%22&pos_id=img-f8FN94ua-1715804777269)


现在你已经有了阈值和移动平均值,让我们格式化可视化,以便更容易使用,和最后一部分一样,使用`.color()`、`.line()`、`.title()`和`.legend(`)函数相应地更新可视化:


![img](https://img-blog.csdnimg.cn/img_convert/046d8d361b9e780af3b15185e7cf2180.png)
![img](https://img-blog.csdnimg.cn/img_convert/9c65d4aadee7893d310819dd994d9a51.png)

**网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。**

**[需要这份系统化的资料的朋友,可以戳这里获取](https://bbs.csdn.net/topics/618631832)**

**一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**

04777270)]

**网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。**

**[需要这份系统化的资料的朋友,可以戳这里获取](https://bbs.csdn.net/topics/618631832)**

**一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**

  • 12
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值