使用数学函数

edit

前面两节您学会了如何创建和自定义 Timelion 可视化控件。这一节带您领略 Timelion 数学函数的风采。我们继续使用 Metricbeat 数据来创建基于网络上下行链路数据的新的 Timelion 可视化控件。您可以先添加一个新的 Timelion 可视化控件。

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

timelion math01

 

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

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

 

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

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

 

针对上行数据,您需要添加类似的指标 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

 

为了使该可视化控件可读性更强,可以将数据单位从 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)
timelion math05

 

我们可以利用前面章节学过的样式定制函数 .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

 

保存所有的修改继续学习下一节关于条件逻辑和趋势跟踪的内容。