如何在 influxdb 中写入(nodejs)具有相同时间戳的多个点?
How to write(nodejs) multiple points having same timestamp in influxdb?
在我的 nodejs 应用程序中,我使用 influxdb (time series database) to save my log data. I used node-influx 在 influxdb 中写入点。但就我而言,有多个具有相同时间戳的日志数据。在这种情况下,只有最后的数据保存在数据库中。
我调试了脚本并发现 javascript 日期只包含毫秒所以在我的例子中,多个数据具有相同的时间戳,因为它们在微秒上有所不同。所以我需要一种日期格式,它以微秒为单位提供当前日期时间。或者是否有任何正确的方法可以在 influxdb 中写入具有相同时间戳的多个点?
Influxdb 被设计为当条件(时间戳、测量、标签)相同时只保存一个点,
这样你就可以
以两种不同的方式完成此操作:
在js中通过不同的时间戳插入点
微秒(Whosebug)
添加多标签时尽量使用不同的标签
具有相同时间戳(influxdata_writing_data)的点,例如
api_info,tag=tag1 elapse=0.234 1467085047286(时间戳可选)
api_info,tag=tag2 elapse=0.478 1467085047286(时间戳可选)
根据InfluxDB documentation,点数据时间戳可以像纳秒.[=16=一样细粒度]
Writing data using the HTTP API
The HTTP API is the primary means of putting data into InfluxDB. To
write data send a POST request to the /write endpoint. The example
below writes a single point to the mydb database. The data consist of
the measurement cpu_load_short, the tag keys host and region with the
tag values server01 and us-west, the field key value with a field
value of 0.64, and the timestamp 1434055562000000000.
注: timestamp 1434055562000000000
.
关于使用 npm node-influx 模块以纳秒为单位的写入点,您可以将精度设置为 'ns'(纳秒)。即precision: 'ns'
。要通过流入节点模块写入点,它不需要你有日期对象,所以如果你知道自纪元以来的确切日期时间戳值,你可以将其作为 64 位整数值传入以写入流入。
请参阅此处的示例代码。
var influx = require('influx');
var databaseWriter = influx({
host: 'XXX',
port: 'XXX',
protocol: 'XXX',
username: 'XXX',
password: 'XXX',
database: 'XXX'
});
this.databaseWriter.writePoints(
'influx_Whosebug_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);
}
);
输出:
在我的 nodejs 应用程序中,我使用 influxdb (time series database) to save my log data. I used node-influx 在 influxdb 中写入点。但就我而言,有多个具有相同时间戳的日志数据。在这种情况下,只有最后的数据保存在数据库中。
我调试了脚本并发现 javascript 日期只包含毫秒所以在我的例子中,多个数据具有相同的时间戳,因为它们在微秒上有所不同。所以我需要一种日期格式,它以微秒为单位提供当前日期时间。或者是否有任何正确的方法可以在 influxdb 中写入具有相同时间戳的多个点?
Influxdb 被设计为当条件(时间戳、测量、标签)相同时只保存一个点, 这样你就可以 以两种不同的方式完成此操作:
在js中通过不同的时间戳插入点 微秒(Whosebug)
添加多标签时尽量使用不同的标签 具有相同时间戳(influxdata_writing_data)的点,例如
api_info,tag=tag1 elapse=0.234 1467085047286(时间戳可选)
api_info,tag=tag2 elapse=0.478 1467085047286(时间戳可选)
根据InfluxDB documentation,点数据时间戳可以像纳秒.[=16=一样细粒度]
Writing data using the HTTP API
The HTTP API is the primary means of putting data into InfluxDB. To write data send a POST request to the /write endpoint. The example below writes a single point to the mydb database. The data consist of the measurement cpu_load_short, the tag keys host and region with the tag values server01 and us-west, the field key value with a field value of 0.64, and the timestamp 1434055562000000000.
注: timestamp 1434055562000000000
.
关于使用 npm node-influx 模块以纳秒为单位的写入点,您可以将精度设置为 'ns'(纳秒)。即precision: 'ns'
。要通过流入节点模块写入点,它不需要你有日期对象,所以如果你知道自纪元以来的确切日期时间戳值,你可以将其作为 64 位整数值传入以写入流入。
请参阅此处的示例代码。
var influx = require('influx');
var databaseWriter = influx({
host: 'XXX',
port: 'XXX',
protocol: 'XXX',
username: 'XXX',
password: 'XXX',
database: 'XXX'
});
this.databaseWriter.writePoints(
'influx_Whosebug_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);
}
);
输出: