TICKscript 模板

导航至

Kapacitor 是 InfluxData 平台不可或缺的一部分,事实上,随着平台的持续发展,我们期望 Kapacitor 在数据处理和工作负载方面发挥越来越大的作用。这些工作负载的核心是警报和降采样或聚合。客户经常问我,为这两种类型的工作负载创建 TICKscript 的最佳方法是什么。因此,我想在这里花一点时间为您提供一些 TICKscript 模板,您可以将它们用作警报和降采样的起点。

警报

警报是 Kapacitor 的核心功能,也是 Kapacitor 在实际应用中最常见的工作负载类型。我要告诉您一个创建出色警报脚本的秘诀:使用 Chronograf 来初步构建它们。Chronograf 具有可视化创建警报的功能。

在上图中,我创建了一个关于 CPU 使用率的警报,并将阈值设置为 80%。当警报触发时,我希望它发出一个 HTTP POST 请求。非常简单的警报。

创建警报后,您可以查看和复制实际的 TICKscript。返回“警报规则”页面,然后为您创建的警报选择“编辑 TICKscript”按钮。

之前的版本只会显示脚本内容,但如果您使用的是最新版本的 Chronograf(至少 1.3.10),这将打开新的 TICKscript 编辑器,您可以使用它开始编写更多 TICK 代码。

降采样

Kapacitor 的第二大常见工作负载是使用它来降采样或聚合数据。在 Kapacitor 文档中,有一个关于使用 Kapacitor 作为连续查询引擎的 指南,但不太清楚这是否与聚合和降采样相同。因此,让我们在这里也讨论一下。一般来说,我们建议将聚合或降采样 TICK 脚本作为 BATCH 脚本运行。下面的脚本代码段将每五分钟运行一次查询,并从我们的 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 用例创建 TICKscript:警报和降采样。当然,您可以使用 Kapacitor 做更多的事情。作为最佳实践,在开发大量 TICKscript 时,我强烈建议您设置一个 Github 仓库和/或 Wiki,供人们使用这些模板并将其用作不同脚本的指南。它对于仪表板定义也很有帮助,但那是另一篇文章的主题了。

现在去编写一些代码吧。