TimeStream集成InfluxDB写协议接口

TimeStream支持按InfluxDB的行协议写数据,实现将InfluxDB的数据导入TimeStream。本文介绍将InfluxDB数据导入TimeStream的API、使用说明和示例。

前提条件

已创建阿里云Elasticsearch实例,且实例版本为通用商业版7.10、内核版本为1.8.0及以上。具体操作请参见创建阿里云Elasticsearch实例

请求语法

POST /_time_stream/influx/write?db={index}&precision=ns
{infludb lines data}

请求参数

参数说明
dbTimeStream索引名称,必选。
precision精度参数,可选。不传该参数则默认为ns,参数取值范围为:[n,ns,u,ms,s,m,h]。

使用说明

InfluxDB写协议格式如下,详细信息请参见InfluxDB官方文档
// Syntax
<measurement>[,<tag_key>=<tag_value>[,<tag_key>=<tag_value>]] <field_key>=<field_value>[,<field_key>=<field_value>] [<timestamp>]

// Example
myMeasurement,tag1=value1,tag2=value2 fieldKey="fieldValue" 1556813561098000000
说明 InfluxDB行协议写入的数据,measurement会转换为一个名为measurement的label字段,如果label中有同名字段,会覆盖该值。
InfluxDB写入的数据内容,存储在Elasticsearch中的示例如下:
  • 写入内容
    testInflux,label1=label_value1 metric1=0.5
  • 对应Elasticsearch source内容
    {
      "@timestamp": 1669972652000,
      "labels": {
        "measurement": "testInflux",
        "label1": "label_value1"
      },
      "metrics": {
        "metric1": 0.5
      }
    }

    通过InfluxDBx写协议接口写入的数据,可以通过Elasticsearch search或者TimeStream Prometheus接口查询。

示例

请求示例

curl -i --user "user:password" "http://xxx:9200/_time_stream/influx/write?db=test_stream" -d "testInflux,label1=label_value1 metric1=0.5"

返回示例

HTTP/1.1 204 No Content

写入成功时,Response的body为空,http code为204。写入失败时,返回结果与InfluxDB write接口一致。