influxDB写入数据找不到的原因


前言

由于influxDB使用UTC记录时间,而在国区内会有大约8个小时的时间差。再加上系统的使用关系,可能会导致初次使用influxDB写入数据产生一些问题。

问题1,使用webui手工导入line protocol查询不到数据

原因

手工导入line protocol数据时需要手工指定导入数据的时间戳精度,否自会导致导入数据丢失

解决办法

根据数据的时间戳精度选择手工导入的数据精度

问题2,导入数据后当期时间段查询不到数据

原因

由于influxDB使用UTC记录时间,而在国区内会有大约8个小时的时间差。录入数据后,需要基于这8个小时的时间差做偏移计算

解决办法

录入数据后,需要基于这8个小时的时间差做偏移计算。
示例:

import "timezone"
option location = timezone.fixed(offset: 8h)
from(bucket: "mydb")
  |> range(start: v.timeRangeStart, stop: v.timeRangeStop)
  |> filter(fn: (r) => r["_measurement"] == "home")
  |> filter(fn: (r) => r["_field"] == "co" or r["_field"] == "hum" or r["_field"] == "temp")
  |> filter(fn: (r) => r["room"] == "Living Room")
  |> aggregateWindow(every: v.windowPeriod, fn: mean, createEmpty: false)
  |> yield(name: "mean")

依赖文档:
https://docs.influxdata.com/flux/v0/stdlib/timezone/#Copyright
官方解释:
https://www.influxdata.com/blog/time-zones-in-flux/

其他资料

InfluxDb 时间范围查询踩坑
问题:最近查询influxdb数据的时候,数据查不出来,分析发现查询数据少了 8 小时。
查询语句:

SELECT cpu_used FROM host.host where time >= '2019-10-18T00:00:00Z' and time < '2019-10-23T00:00:00Z' group by time(1d)

原因分析:因为influxdb查询的时候默认使用UTC时间查询(零时区),而我们想要查询的时间应该是使用东八区时间(比零时区时间快了8个小时)。
解决方法:查询语句的最后加TZ('Asia/Shanghai'),即可解决。
查询语句更改为:

SELECT cpu_used FROM user_day where time >= '2019-10-18T00:00:00Z' and time < '2019-10-23T00:00:00Z' group by time(1d) TZ('Asia/Shanghai')。

备注:如果这里的时间查询使用的是时间戳查询,则不存在时区的问题。所以能用时间戳查询就尽量用时间戳查询。

声明:一代明君的小屋|版权所有,违者必究|如未注明,均为原创|本网站采用BY-NC-SA协议进行授权

转载:转载请注明原文链接 - influxDB写入数据找不到的原因


欢迎来到我的小屋