我有带有测量的influxdb数据库test:

name: mes1
time          Amount     Buy_order_id Price
----          ------     ------------ -----
1529832177822 0.02294    132868375    130117.83

我想在Grafana中绘制图形,但是所有数据都是在1970年。我还有其他度量:
name: cpu_load_short
time                Bool_value Float_value Int_value String_value host     region
----                ---------- ----------- --------- ------------ ----     ------
1257894000000000000 true       0.64        3         Text         server01 us-west

这次工作正常。我发现,测量cpu_load_short中的时间存储在ns中,但是测量mes1中的数据存储在ms中。

我从websocket接收mes1的时间。 cpu_load_short的时间是从python生成的:
datetime.utcnow().strftime('%Y-%m-%dT%H:%M:%SZ')

所有数据都通过influxdb-python发送到influxdb。我试图调整mes1的时间,并在数字末尾添加六个零:
'1529832177822' -> '1529832177822000000'

但我收到了:
OverflowError: signed integer is greater than maximum

如何将数据发送到influxdb并从中创建图形,以便数据具有正确的格式和正确的日期?也许我错过了一些东西,但是我不知道为什么我不能在ns中向我的数据库发送数据,但是我可以在datetime中发送它。谁能解释我,问题出在哪里?

最佳答案

我遇到了同样的问题,并且能够解决它,请让我尝试指导您。

使用influxdb-python客户端将点写入InfluxDB时,可以在write_points方法中指定时间精度。 (http://influxdb-python.readthedocs.io/en/latest/api-documentation.html#influxdb.DataFrameClient.write_points)

一个例子:

from influxdb import InfluxDBClient
client = InfluxDBClient(host=host, port=port, database=database)
client.write_points(value, time_precision='ms')

这将为您将ms转换为ns。希望这可以帮助。

关于python-3.x - 如何使用influxdb-python向influxdb发送适当的时间戳,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51014779/

10-16 08:48