如何在influxdb中编写(nodejs)具有相同时间戳的多个点?

在我的nodejs应用程序中,我使用influxdb (时间序列数据库)来保存我的日志数据。 我使用node- influx在influxdb中写入点。 但在我的情况下,有多个具有相同时间戳的日志数据。 在这种情况下,只有最后的数据被保存在数据库中。

我debugging脚本,发现JavaScriptdate只包含毫秒所以在我的情况下,多个数据具有相同的时间戳,因为他们在几微秒的变化。 所以我需要一个date格式,给我当前的date时间微秒。 或者是否有任何适当的方法来写在influxdb具有相同的时间戳多个点?

当条件(时间戳,测量,标签)相同时,Influxdb被devise为只保留一个点,所以您可以通过两种不同的方式来完成这一点:

  1. 在js中用微秒插入不同的时间戳点( stackoverflow )

  2. 尝试在添加具有相同时间戳( influxdata_writing_data )的多点时使用不同的标记,例如

    api_info,tag = tag1 elapse = 0.234 1467085047286(时间戳是可选的)
    api_info,tag = tag2 elapse = 0.478 1467085047286(时间戳是可选的)

根据InfluxDB文档 ,点数据时间戳可以像纳秒一样细粒度。

使用HTTP API编写数据

HTTP API是将数据放入InfluxDB的主要手段。 要写数据发送一个POST请求到/写端点。 下面的例子将一个点写入mydb数据库。 数据由测量cpu_load_short,标记键主机和标记值为server01和us-west的区域,字段值为0.64的字段键值和时间戳1434055562000000000组成。

注意timestamp 1434055562000000000

对于使用npm节点stream入模块以纳秒为单位写入点,可以使用“ns”(纳秒)设置精度。 也就是说, precision: 'ns' 。 要通过influx节点模块写点,它不需要你有date对象,所以如果你知道自epoch以来的确切的date时间戳值,你可以传入64位整数值来写入涌入。

在这里看到示例代码。

 var influx = require('influx'); var databaseWriter = influx({ host: 'XXX', port: 'XXX', protocol: 'XXX', username: 'XXX', password: 'XXX', database: 'XXX' }); this.databaseWriter.writePoints( 'influx_stackoverflow_solution', [ // point #1 [ { "value": 999, "time" : 1422568543702900257 }, { 'tag1' : 'value_in_nanoseconds' } ], // point #2 [ { "value": 8888, "time" : 1422568543702900600 }, { 'tag1' : 'value_in_nanoseconds' } ] ], { precision: 'ns' }, function(errmsg, returnValue) { if (errmsg) return callback(new Error(errmsg)); callback(null, returnValue); } ); 

输出:
在这里输入图像说明