先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前阿里P7
深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年最新软件测试全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上软件测试知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新
如果你需要这些资料,可以添加V获取:vip1024b (备注软件测试)
正文
让我们给这些系列涂上颜色,使当前的小时系列比过去一个小时系列流行一点,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)
最后但并非最不重要,调整图例,使其占用尽可能小的空间,你可以使用.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可视化,本节将探索Timelion提供的数学函数。你将继续使用Metricbeat数据为入站和出站网络流量创建新的Timelion可视化,首先,你需要在工作表中添加一个新的Timelion可视化。
在顶部菜单中,单击Add
添加第二个可视化,当添加到工作表中时,你会注意到查询栏已经被替换为默认的.es(*)
表达式,这是因为查询与你选择的Timelion工作表上的可视化相关联。
要开始跟踪入站/出站网络流量,你的第一个表达式将计算system.network.in.bytes
的最大值,将下面的表达式输入到你的Timelion查询栏:
.es(index=metricbeat*, timefield=@timestamp, metric=max:system.network.in.bytes)
在绘制变化率时,监视网络流量更有价值,derivative()
函数就是这样做的 - 绘制值随时间的变化,通过在表达式末尾添加.derivative()
可以很容易地做到这一点,使用以下表达式来更新你的可视化:
.es(index=metricbeat*, timefield=@timestamp, metric=max:system.network.in.bytes).derivative()
现在是出站流量,你需要为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有一个.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)
使用上一节中学习的格式化函数.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)
保存你的更改并继续到下一节学习条件逻辑和跟踪趋势。
使用条件逻辑和跟踪趋势
在本节中,你将学习如何使用条件逻辑修改时间序列数据,并使用移动平均值创建趋势,这有助于随着时间的推移很容易地发现异常值和模式。
对于本教程,你将继续使用Metricbeat数据添加另一个监控内存消耗的可视化,首先,使用以下表达式绘制system.memory.actual.used.bytes
的最大值。
.es(index=metricbeat-*, timefield=‘@timestamp’, metric=‘max:system.memory.actual.used.bytes’)
让我们创建两个阈值来监视使用的内存数量,在本教程中,警告阈值为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’)
有关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)
现在你已经有了阈值和移动平均值,让我们格式化可视化,以便更容易使用,和最后一部分一样,使用.color()
、.line()
、.title()
和.legend(
)函数相应地更新可视化:
.es(index=metricbeat-, timefield=‘@timestamp’, metric=‘max:system.memory.actual.used.bytes’).label(‘max memory’).title(‘Memory consumption over time’), .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’).lines(width=5), .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’).lines(width=5), .es(index=metricbeat-, timefield=‘@timestamp’, metric=‘max:system.memory.actual.used.bytes’).mvavg(10).label(‘mvavg’).lines(width=2).color(#5E5E5E).legend(columns=4, position=nw)
保存你的Timelion工作表并继续到下一节,将这些新的可视化添加到你的仪表盘。
添加到仪表盘
你已经正式利用了Timelion的功能来创建时间序列可视化,本教程的最后一步是向仪表盘添加你新的可视化,下面,本节将向你展示如何从Timelion工作表中保存可视化,并将其添加到现有的仪表盘中。
要将Timelion可视化保存为仪表盘面板,请执行以下步骤。
- 选择要添加到一个(或多个)仪表盘上的可视化视图。
- 点击顶部菜单中的
Save
选项。 - 选择
Save current expression as Kibana dashboard panel
。 - 命名你的面板并点击Save以作为仪表盘可视化。
现在你可以将这个仪表盘面板添加到任何你想要的仪表盘上,这个可视化现在将在可视化列表中列出,继续并按照你创建的其他可视化效果的相同过程进行操作。
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
需要这份系统化的资料的朋友,可以添加V获取:vip1024b (备注软件测试)
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。**
需要这份系统化的资料的朋友,可以添加V获取:vip1024b (备注软件测试)
[外链图片转存中…(img-AnH6OYTf-1713328935897)]
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!