TL;DR InfluxDB 技术提示 - Kapacitor 执行查询

导航至

在这篇文章中,我们回顾了本周最有趣的 InfluxDB 和 TICK-stack 相关问题、Kapacitor 执行查询的解决方法、操作指南以及来自 GitHub、IRC 和 InfluxDB Google Group 的问答,您可能错过了这些内容。

使用 Kapacitor 自动化连续聚合

问:我想每分钟自动执行一个查询,该查询聚合过去 24 小时的数据,并且还将查询的 24 小时时间范围递增一分钟。我尝试使用连续查询,但我不认为它可以做到我想要的 - CQ 每分钟执行一次,但它总是查询相同的 24 小时时间段。我想要做的事情可以用 CQ 实现吗?还有其他方法可以做到这一点吗?

以下是我想要自动化的一些示例查询

SELECT mean(water_pressure) INTO mean_pressures FROM sea WHERE time >= '2016-06-29T00:00:00Z' AND time <= '2016-06-30T00:00:00Z'

SELECT mean(water_pressure) INTO mean_pressures FROM sea WHERE time >= '2016-06-29T00:01:00Z' AND time <= '2016-06-30T00:01:00Z'

答:您是对的,连续查询目前无法做到您想要它们做的事情。我们建议使用 Kapacitor 自动执行查询并将结果写回 InfluxDB。示例 TICKscript

batch
   |query('SELECT mean(water_pressure) FROM science."autogen".sea')
        .period(1d)
        .every(1m)
        .align()
   |influxDBOut()
      .database('science')
      .retentionPolicy('autogen')
      .measurement('mean_pressures')
      .precision('s')

将整数写入 InfluxDB

问:我正在将我认为是整数的数据写入数据库,但 SHOW FIELD KEYS 查询说它们是浮点数。我该如何将整数写入数据库?

> INSERT cheese gouda=1
> SHOW FIELD KEYS
name: cheese
------------
fieldKey    fieldType
gouda       float

答:默认情况下,InfluxDB 假定所有数值字段值都是浮点数。要将整数写入数据库,请在您的 Line Protocol 中,在字段值后附加一个 i

> INSERT cheese gouda=1i
> SHOW FIELD KEYS
name: cheese
------------
fieldKey    fieldType
gouda       integer

使用双引号写入与查询标识符

问:我可以成功地将数据写入 InfluxDB,但我的查询返回空结果。我哪里做错了?

> INSERT "roses" "crepuscule"=8
> SHOW MEASUREMENTS
name: measurements
------------------
name
"roses"

> SELECT crepuscule FROM roses
> SELECT "crepuscule" FROM "roses"
>

答:如果您在 标识符 中用双引号引起来 Line Protocol,InfluxDB 会假定这些引号是标识符名称的一部分。要查询名称中带有双引号的标识符,您必须同时转义其双引号并用双引号引起来名称:以下查询应该更快

> SELECT "\"crepuscule\"" FROM "\"roses\""
name: "roses"
-------------
Time                             "crepuscule"
2016-06-29T20:54:46.926056779Z   8

一般来说,我们建议您不要在 Line Protocol 中使用双引号标识符。

有关更多 InfluxDB 提示,请查看我们的 常见问题解答页面,并随时在 InfluxDB 用户组中发布您的问题。

下一步是什么?