Kibana【从无到有从有到无】【搜索引擎】【K6】时序控件

目录

1.时序控件

1.1.基础入门

1.1.1.创建基于时间序列的可视化控件

1.1.2.自定义格式化控件

1.1.3.使用数学函数

1.1.4.使用条件逻辑和趋势追踪

1.1.5.添加至仪表板

1.2.内嵌的帮助文档


1.时序控件

时序控件(Timelion)是一款时间序列数据可视化工具,它可以将多种独立的数据源合并呈现到一张视图上。它是由一个简单的表达式语言驱动的,用来检索时间序列数据,执行计算得出复杂问题的答案,并可视化结果。

例如,Timelion 可以让您轻松获得如下问题的答案:

  • 过去某段时间页面的 UV 量是多少?
  • 本周五和上周五的流量有多少差异?
  • 本站今天来自日本的访客占多少百分比?
  • 标普500指数过去10天的移动平均值是多少?
  • 过去两年所有的搜索请求总量有多少?  

 

1.1.基础入门

准备好体验 Timelion 了吗?以下教程将为您揭开其神秘面纱:

 

1.1.1.创建基于时间序列的可视化控件

本教程会使用来自 Metricbeat 的时间序列数据为您演示 Timelion 所能提供的功能。您可以先下载 Metricbeat 并根据这个说明在本地抽取数据。

第一个可视化控件将会对比系统用户空间 CPU 实时使用百分比和其每小时的平均偏移量。为了创建这个控件,我们需要创建两个 Timelion 表达式。第一个是实时的 system.cpu.user.pct 平均值,第二个是每小时的平均偏移量。

您需要在第一个表达式中定义 index 、 timefield 和 metric 。然后紧接着在 Timelion 查询框中输入如下表达式:

.es(index=metricbeat-*, timefield='@timestamp', metric='avg:system.cpu.user.pct')

images/timelion-create01.png

现在您需要添加前一个小时的数据用来对比。您需要添加一个 offset 参数到 .es() 函数。 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')

images/timelion-create02.png

图形上有点难区分上述两个序列表达式。我们可以通过给每个序列自定义标签来区分它们。您可以在任何一个序列后面添加 .label() 表达式来自定义标签。我们来看看如下自定义标签的例子:

.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')

images/timelion-create03.png

保存整个 Timelion 表格为 Metricbeat Example 。Timelion 是一个非常强大的基于时间序列的控件,您可以对本教程中的一些关键点多加练习来熟悉 Timelion。

 

1.1.2.自定义格式化控件

Timelion 有大量的自定义选项。您可以利用这些功能根据自己的喜好定义几乎每个图表的所有细节部分。在本节教程中,您将会进行以下修改:

  • 添加一个标题
  • 修改一个序列图表的类型
  • 修改序列图表的颜色和透明度
  • 调整布局

在进行任何修改之前,我们可以利用 title() 函数在表达式结尾添加一个有意义的标题。这将会使不熟悉的用户更容易理解这个可视化控件的目的。如下示例添加了 title('CPU usage over time') 到原始的序列表达式中。

.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')

images/timelion-customize01.png

为了区分前一个小时数据的序列图,您可以修改图表的类型为一个填充的区域图表。为了实现这个目的,您需要使用 .lines() 函数来自定义原有的图表。可以设置 fill 和 width 参数来定义填充级别和线宽。如下示例通过 .lines(fill=1,width=0.5) 定义了填充级别为1,线宽为0.5的样式:

.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')

images/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)

images/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)

images/timelion-customize04.png

 

1.1.3.使用数学函数

在菜单的顶层,点击 Add 添加第二个控件。添加到当前工作表的时候,您可以注意到查询输入框会被替换成默认的 .es(*) 表达式。因为这个查询是和您当前选中的控件相关联的。

images/timelion-math01.png

为了便于追踪网络上下行流量,您的第一个表达式将会计算 system.network.in.bytes 下行数据的最大值。在 Timelion 查询框输入如下表达式:

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

images/timelion-math02.png

监控网络流量对于评估网络速率来说是非常有价值的。derivative() 函数就可以用来做这种随着时间而变化的数据。我们可以简单的将该函数添加至表达式的末尾。使用如下表达式来更新您的控件:

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

images/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)

images/timelion-math04.png

为了使该可视化控件可读性更强,可以将数据单位从 bytes 转换为 megabytes(MB)。Timelion 有一个 .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)

images/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)

images/timelion-math06.png

 

1.1.4.使用条件逻辑和趋势追踪

您将学会如何使用条件逻辑修改时间序列数据和创建移动平均趋势。这样可以非常方便的发现随着时间推移的异常数据。

我们可以基于 Metricbeat 数据利用可视化控件监控内存消耗情况。可以使用如下表达式在图表中呈现 system.memory.actual.used.bytes 的最大值。

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

images/timelion-conditional01.png

我们为内存使用总量创建两个阈值。例如您的告警阈值是12.5GB,严重告警阈值是15GB。当内存使用总量超过其中任何一个,序列图将会在阈值点后用不同的颜色展示。

 

如果上述阈值相对您的机器过高或过低,可以自行调节。

您可以使用 Timelion 的条件逻辑配置这两个阈值。可以使用 if() 去比较每个点的值和某个数值的大小,如果数值超过阈值则使用不同的样式,如果未超过阈值,则使用默认样式。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')

images/timelion-conditional02.png

参考 I have but one .condition() 博文查看更多关于 Timelion 的用法。

现在我们有阈值控制可以轻松的识别错误数据,接下我们创建一个新的时序图来呈现真正的趋势。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)

images/timelion-conditional03.png

现在我们有了阈值控制和移动平均,我们来利用上一节描述过的 .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)

images/timelion-conditional04.png

 

1.1.5.添加至仪表板

将新的可视化控件添加到一个仪表板上。如何保存一个可视化控件至 Timelion 表单并添加至已经存在的仪表板。

按照如下步骤来保存一个 Timelion 控件至仪表板:

选择需要添加至仪表板的一个或多个可视化控件。点击上面菜单中的 Save 选项。选择 Save current expression as Kibana dashboard panel 。定义控件的名称并点击 Save 来保存成一个仪表板可视化控件。

images/timelion-save01.png

现在您可以添加这个仪表板控件到任何一个您喜欢的仪表板上。这个控件将会在控件列表中呈现。继续按照相同的步骤来处理您创建的剩下的可视化控件。

创建一个新的仪表板或者打开一个已经存在的,然后添加您喜欢的其它 Timelion 控件。

images/timelion-save02.png

您也可以在可视化控件列表 Timeseries 中用 Timelion 表达式直接创建时间序列控件。

 

1.2.内嵌的帮助文档

记不住一些函数或者搜索方法?随时可以参考 Timelion 内嵌的帮助文档。

Timelion 表达式语言是嵌入式的。点击页面顶部的 Docs 菜单查看可用函数和详细内嵌手册。在查询命令行中输入函数, Timelion 就会实时显示参数提示。

Timelion inline help

 

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
【优质项目推荐】 1、项目代码均经过严格本地测试,运行OK,确保功能稳定后才上传平台。可放心下载并立即投入使用,若遇到任何使用问题,随时欢迎私信反馈与沟通,博主会第一时间回复。 2、项目适用于计算机相关专业(如计科、信息安全、数据科学、人工智能、通信、物联网、自动化、电子信息等)的在校学生、专业教师,或企业员工,小白入门等都适用。 3、该项目不仅具有很高的学习借鉴价值,对于初学者来说,也是入门进阶的绝佳选择;当然也可以直接用于 毕设、课设、期末大作业或项目初期立项演示等。 3、开放创新:如果您有一定基础,且热爱探索钻研,可以在此代码基础上二次开发,进行修改、扩展,创造出属于自己的独特应用。 欢迎下载使用优质资源!欢迎借鉴使用,并欢迎学习交流,共同探索编程的无穷魅力! 基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip 基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip 基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip
提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值