阿里云TimeStream系列--TimeStream influxDB写协议接口

TimeStream增加了对influxDB写协议接口的支持。

influxDB写协议是一种在时序场景比较通用的写入文本协议。通过该协议,可以很方便的将时序数据导入时序引擎。

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

TimeStream也支持了这种协议。写入接口如下:

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

一个curl的写入示例如下:

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

influxDB写入的数据内容,存储在Elasticsearch中,measurement会放入维度字段。

写入内容:

testInflux,lable1=lable_value1 metric1=0.5

存储在ES中的内容如下:

{
  "@timestamp": 1669972652000,
  "labels": {
    "measurement": "testInflux",
    "lable1": "lable_value1"
  },
  "metrics": {
    "metric1": 0.5
  }
}

TimeStream实现influxDB写协议的方式,使用了antlr4j,antlr4j配置借鉴了druid,配置内容如下:https://github.com/apache/druid/blob/master/extensions-contrib/influx-extensions/src/main/antlr4/org/apache/druid/data/input/influx/InfluxLineProtocol.g4

然后TimeStream将解析的内容,按照TimeStream的数据组装成bulk请求,写入ES TimeStream索引即可。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容