TICKscript 模板
作者:Dave Patton / 产品,用例,开发者
2017 年 11 月 01 日
导航至
Kapacitor 是 InfluxData 平台的重要组成部分,事实上,随着平台的发展,我们希望 Kapacitor 在数据处理和工作负载方面发挥更大的作用。这些工作负载的核心是警报和降采样或聚合。客户经常问我,如何为这两种类型的工作负载创建最佳的 TICKscript。因此,我想在这里花点时间,提供一些可以作为警报和降采样起始点的 TICKscript 模板。
警报
警报是 Kapacitor 的核心功能,也是 Kapacitor 在野外的最常见的类型的工作负载。我将向你透露一个创建优秀警报脚本的秘诀:使用 Chronograf 来生成它们。Chronograf 具有可视创建警报的能力。
在上面的图片中,我创建了一个关于 CPU 使用情况的警报,并设置了阈值为 80%。当警报触发时,我希望它执行一个 HTTP POST。这是一个非常简单的警报。
创建警报后,您可以查看和复制实际的 TICK 脚本。返回警报规则页面,选择您警报的“编辑 TICK 脚本”按钮。
旧版本只会显示脚本内容,但如果您使用 Chronograf 的最新版本(至少为 1.3.10),这将打开新的 TICK 脚本编辑器,您可以使用它来编写更多 TICK 代码。
数据降采样
Kapacitor 的第二大常见工作负载是将其用作降采样或数据聚合的工具。在 Kapacitor 文档中,有一个指南介绍如何将 Kapacitor 用作连续查询引擎,但它并不明确指出这与聚合和降采样是同一件事。因此,我们在这里也进行讨论。一般来说,我们的建议是将聚合或降采样 TICK 脚本作为批处理脚本运行。以下脚本片段将每五分钟运行一次查询,并从我们的 Telegraf 数据库中获取最后 5 分钟的 CPU 数据。然后,它将取这些数据的平均值并将其存储回数据库。假设 Telegraf 每 30 秒报告一次,这基本上意味着我们将从 30 秒的分辨率降采样到 5 分钟的分辨率数据。
batch
|query('SELECT mean(usage_idle) as usage_idle FROM "telegraf"."autogen".cpu')
.period(5m)
.every(5m)
.groupBy(*)
|influxDBOut()
.database('telegraf')
.retentionPolicy('autogen')
.measurement('cpu_idle_5minute')
.precision('s')
如果我想将数据从 30 秒降采样到,比如说,一小时呢?在这种情况下,您的脚本应该如下所示
batch
|query('SELECT mean(usage_idle) as usage_idle FROM "telegraf"."autogen".cpu')
.period(1h)
.every(1h)
.groupBy(*)
|influxDBOut()
.database('telegraf')
.retentionPolicy('autogen')
.measurement('cpu_idle_1hour')
.precision('s')
您可以看到,降采样的通用规则是 period()
应等于 every()
。
结论
我们已经为您提供了用于创建两个最常见的 Kapacitor 用例(警报和降采样)的 TICK 脚本模板。当然,您还可以使用 Kapacitor 做更多的事情。作为一个最佳实践,当开发大量的 TICK 脚本时,我强烈建议您设置一个 Github 仓库和/或 Wiki,让用户可以获取这些模板,并用作不同脚本的指南。对于仪表板定义也很有帮助,但这将是另一篇文章的内容。
现在去编写一些代码。