Timelion编辑

要使用 Timelion,您需要使用 Timelion 特定的语法将函数链接在一起,从而定义图形。该语法支持经典点系列图表不具备的一些功能,例如将来自不同索引或数据源的数据拉取到一个图形中。

Timelion 由一种简单的表达式语言驱动,您可以使用该语言来

  • 从一个或多个索引中检索时间序列数据
  • 对两个或多个时间序列执行数学运算
  • 可视化结果

Timelion

Timelion 表达式编辑

Timelion 函数始终以点开头,后跟函数名称,再后跟包含函数所有参数的括号。

.es(或者如果您喜欢输入长单词,则为 .elasticsearch)函数从 Elasticsearch 收集数据并随时间绘制数据。默认情况下,.es 函数只会计算文档数量,从而生成一个显示文档随时间变化量的图形。

函数参数编辑

函数可以有多个参数,.es 函数也是如此。每个参数都有一个名称,您可以在括号内使用该名称来设置其值。参数也有顺序,这由自动完成或文档(使用顶部菜单中的“文档”按钮)显示。

如果您未指定参数名称,则 Timelion 会按文档中列出的顺序将值分配给参数。

.es 函数的第一个参数是参数 q(代表查询),它是一个查询字符串,用于过滤此系列的数据。您也可以通过名称显式引用此参数,并且我始终建议您在向函数传递多个参数时这样做。因此,以下两个表达式是等效的

es(q=*)多个参数用逗号分隔。.es 函数还有另一个名为 index 的参数,可用于为此系列指定数据视图,因此查询不会针对所有索引(或您更改设置后的任何内容)执行。

es(q=, index=logstash-)如果参数的值包含空格或逗号,则必须将该值放在单引号或双引号中。否则,您可以省略这些引号。

.yaxis() 函数编辑

Kibana 支持数据系列的许多 y 轴刻度和范围。

.yaxis() 函数支持以下参数

  • yaxis — 用于绘制系列的编号 y 轴。例如,使用 .yaxis(2) 显示第二个 y 轴。
  • min — y 轴范围的最小值。
  • max — y 轴范围的最大值。
  • position — 单位的位置。值包括 leftright
  • label — 轴的标签。
  • color — 轴标签的颜色。
  • units — 用于格式化 y 轴标签的函数。值包括 bitsbits/sbytesbytes/scurrency(:ISO 4217 货币代码)percentcustom(:前缀:后缀)
  • tickDecimals — 刻度小数精度。

示例

.es(index= kibana_sample_data_logs,
    timefield='@timestamp',
    metric='avg:bytes')
  .label('Average Bytes for request')
  .title('Memory consumption over time in bytes').yaxis(1,units=bytes,position=left), 
.es(index= kibana_sample_data_logs,
    timefield='@timestamp',
    metric=avg:machine.ram)
  .label('Average Machine RAM amount').yaxis(2,units=bytes,position=right) 

.yaxis(1,units=bytes,position=left) — 指定第一个数据系列的第一个 y 轴,并更改左侧的单位。

.yaxis(2,units=bytes,position=left) — 指定第二个数据系列的第二个 y 轴,并更改右侧的单位。

教程:使用 Timelion 创建可视化编辑

您使用 Metricbeat 从操作系统收集了数据,并且希望在仪表板上可视化和分析数据。要创建数据面板,请使用 Timelion 创建时间序列可视化,

添加数据并创建仪表板编辑

设置 Metricbeat,然后创建仪表板。

  1. 要设置 Metricbeat,请转到 Metricbeat 快速入门:安装和配置
  2. 在 Kibana 中,打开主菜单,然后单击 仪表板
  3. 仪表板 页面上,单击 创建仪表板

打开并设置 Timelion编辑

打开 Timelion 并更改时间范围。

  1. 在仪表板上,单击 所有类型 > 基于聚合的,然后选择 Timelion
  2. 确保 时间过滤器过去 7 天

创建时间序列可视化编辑

要将用户空间中花费的 CPU 时间的实时百分比与偏移一小时的结果进行比较,请创建一个时间序列可视化。

定义函数编辑

要跟踪 CPU 的实时百分比,请在 Timelion 表达式 字段中输入以下内容,然后单击 更新

.es(index=metricbeat-*,
    timefield='@timestamp',
    metric='avg:system.cpu.user.pct')
比较数据编辑

要比较两个数据集,请添加另一个系列,并将数据偏移一小时,然后单击 更新

.es(index=metricbeat-*,
    timefield='@timestamp',
    metric='avg:system.cpu.user.pct'),
.es(offset=-1h,
    index=metricbeat-*,
    timefield='@timestamp',
    metric='avg:system.cpu.user.pct')
添加标签名称编辑

为了轻松区分这两个数据集,请添加标签名称,然后单击 更新

.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')
添加标题编辑

为了让不熟悉的用户更容易理解可视化的目的,请添加标题,然后单击 更新

.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')
更改图表线的显示编辑

要区分当前小时和上一小时,请更改图表线的显示,然后单击 更新

.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 支持标准颜色名称、十六进制值或分组数据的颜色方案。

要突出显示第一个数据系列,请更改线条颜色,然后单击 更新

.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)
调整图例编辑

将图例移动到西北位置,并使用两列,然后单击 更新

.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) 
Final time series visualization

 

保存并添加面板编辑

将面板保存到 可视化库 并将其添加到仪表板,或者在不保存的情况下将其添加到仪表板。

要将面板保存到 可视化库

  1. 单击 保存到库
  2. 输入 标题 并添加任何适用的 标签
  3. 确保选中了 保存后添加到仪表板
  4. 单击 保存并返回

要将面板保存到仪表板

  1. 单击 保存并返回
  2. 为面板添加可选标题。

    1. 在面板标题中,单击 无标题
    2. 面板设置 窗口中,选择 显示标题
    3. 输入 标题,然后单击 保存

可视化入站和出站网络流量编辑

要为入站和出站网络流量创建可视化,请使用数学函数。

定义函数编辑

要开始跟踪入站和出站网络流量,请在 Timelion 表达式 字段中输入以下内容,然后单击 更新

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

绘制变化率编辑

为了轻松监控入站流量,请绘制值随时间变化的图表,然后单击 更新

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

为出站流量添加类似的计算,然后单击 更新

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

.multiply(-1) 将出站网络流量转换为负值,因为出站网络流量正在离开您的机器。.multiply() 将数据系列乘以一个数字、数据系列的结果或数据系列列表。

更改数据指标编辑

为了更容易分析数据,请将数据指标从 bytes 更改为 megabytes,然后点击 更新

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

.divide() 接受与 .multiply() 相同的输入,然后将数据序列除以定义的除数。

自定义和格式化可视化编辑

使用以下函数自定义和格式化可视化,然后点击 更新

.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)
Final visualization that displays inbound and outbound network traffic

 

保存并添加面板编辑

将面板保存到 可视化库 并将其添加到仪表板,或者在不保存的情况下将其添加到仪表板。

要将面板保存到 可视化库

  1. 单击 保存到库
  2. 输入 标题 并添加任何适用的 标签
  3. 确保选中了 保存后添加到仪表板
  4. 单击 保存并返回

要将面板保存到仪表板

  1. 单击 保存并返回
  2. 为面板添加可选标题。

    1. 在面板标题中,单击 无标题
    2. 面板设置 窗口中,选择 显示标题
    3. 输入 标题,然后单击 保存

检测异常值并发现随时间变化的模式编辑

为了轻松检测异常值并发现随时间变化的模式,请使用条件逻辑修改时间序列数据并使用移动平均线创建趋势。

使用 Timelion 条件逻辑,您可以使用以下运算符值来比较您的数据

eq(等于)

equal(等于)

ne(不等于)

not equal(不等于)

lt(小于)

less than(小于)

lte(小于或等于)

less than or equal to(小于或等于)

gt(大于)

greater than(大于)

gte(大于或等于)

greater than or equal to(大于或等于)

定义函数编辑

要绘制 system.memory.actual.used.bytes 的最大值,请在 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'),
.es(index=metricbeat-*,
    timefield='@timestamp',
    metric='max:system.memory.actual.used.bytes')
  .if(gt,                             
      11300000000,                    
      .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,
      11375000000,
      .es(index=metricbeat-*,
          timefield='@timestamp',
          metric='max:system.memory.actual.used.bytes'),
      null)
  .label('severe')
  .color('red')

if() 将每个点与一个数字进行比较。当条件为 true 时,调整样式。当条件为 false 时,使用默认样式。

Timelion 用于“大于”运算符的条件逻辑。在本例中,警告阈值为 11.3GB (11300000000),严重阈值为 11.375GB (11375000000)。如果阈值对您的机器来说太高或太低,请调整这些值。

确定趋势编辑

要确定趋势,请创建一个新的数据序列,然后点击 更新

.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,11300000000,
      .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,11375000000,
      .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) 

mvavg() 计算指定时间段内的移动平均线。在本例中,.mvavg(10) 创建一个窗口为 10 个数据点的移动平均线。

自定义和格式化可视化编辑

使用以下函数自定义和格式化可视化,然后点击 更新

.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,
      11300000000,
      .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,
      11375000000,
      .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)    
Final visualization that displays outliers and patterns over time

 

保存并添加面板编辑

将面板保存到 可视化库 并将其添加到仪表板,或者在不保存的情况下将其添加到仪表板。

要将面板保存到 可视化库

  1. 单击 保存到库
  2. 输入 标题 并添加任何适用的 标签
  3. 确保选中了 保存后添加到仪表板
  4. 单击 保存并返回

要将面板保存到仪表板

  1. 单击 保存并返回
  2. 为面板添加可选标题。

    1. 在面板标题中,单击 无标题
    2. 面板设置 窗口中,选择 显示标题
    3. 输入 标题,然后单击 保存

有关 Timelion 条件的更多信息,请参阅 我只有一个 .condition()