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 — 单位的位置。值包括
left
或right
。 - label — 轴的标签。
- color — 轴标签的颜色。
-
units — 用于格式化 y 轴标签的函数。值包括
bits
、bits/s
、bytes
、bytes/s
、currency(:ISO 4217 货币代码)
、percent
和custom(:前缀:后缀)
。 - 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)
|
|
|
教程:使用 Timelion 创建可视化编辑
您使用 Metricbeat 从操作系统收集了数据,并且希望在仪表板上可视化和分析数据。要创建数据面板,请使用 Timelion 创建时间序列可视化,
添加数据并创建仪表板编辑
设置 Metricbeat,然后创建仪表板。
- 要设置 Metricbeat,请转到 Metricbeat 快速入门:安装和配置
- 在 Kibana 中,打开主菜单,然后单击 仪表板。
- 在 仪表板 页面上,单击 创建仪表板。
打开并设置 Timelion编辑
打开 Timelion 并更改时间范围。
- 在仪表板上,单击 所有类型 > 基于聚合的,然后选择 Timelion。
- 确保 时间过滤器 为 过去 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)
保存并添加面板编辑
将面板保存到 可视化库 并将其添加到仪表板,或者在不保存的情况下将其添加到仪表板。
要将面板保存到 可视化库
- 单击 保存到库。
- 输入 标题 并添加任何适用的 标签。
- 确保选中了 保存后添加到仪表板。
- 单击 保存并返回。
要将面板保存到仪表板
- 单击 保存并返回。
-
为面板添加可选标题。
- 在面板标题中,单击 无标题。
- 在 面板设置 窗口中,选择 显示标题。
- 输入 标题,然后单击 保存。
可视化入站和出站网络流量编辑
要为入站和出站网络流量创建可视化,请使用数学函数。
定义函数编辑
要开始跟踪入站和出站网络流量,请在 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)
更改数据指标编辑
为了更容易分析数据,请将数据指标从 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)
自定义和格式化可视化编辑
使用以下函数自定义和格式化可视化,然后点击 更新
.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 条件逻辑,您可以使用以下运算符值来比较您的数据
|
equal(等于) |
|
not equal(不等于) |
|
less than(小于) |
|
less than or equal to(小于或等于) |
|
greater than(大于) |
|
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')
|
|
Timelion 用于“大于”运算符的条件逻辑。在本例中,警告阈值为 11.3GB ( |
确定趋势编辑
要确定趋势,请创建一个新的数据序列,然后点击 更新
.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)
自定义和格式化可视化编辑
使用以下函数自定义和格式化可视化,然后点击 更新
.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)
保存并添加面板编辑
将面板保存到 可视化库 并将其添加到仪表板,或者在不保存的情况下将其添加到仪表板。
要将面板保存到 可视化库
- 单击 保存到库。
- 输入 标题 并添加任何适用的 标签。
- 确保选中了 保存后添加到仪表板。
- 单击 保存并返回。
要将面板保存到仪表板
- 单击 保存并返回。
-
为面板添加可选标题。
- 在面板标题中,单击 无标题。
- 在 面板设置 窗口中,选择 显示标题。
- 输入 标题,然后单击 保存。
有关 Timelion 条件的更多信息,请参阅 我只有一个 .condition()。