使用 CURL 在 InfluxDB 中插入行
Insert line in InfluxDB using CURL
我有以下 POST 从 C# 完成的请求:
POST http://192.168.123.27:8086/write?db=HWDB HTTP/1.1
Content-Type: text/plain; charset=utf-8
Host: 192.168.123.27:8086
Content-Length: 97
Expect: 100-continue
Connection: Keep-Alive
HARDWARE,CPU=1 count=91i 1456298998307783936
HARDWARE,CPU=2 count=92i 1456298998307783936
我想使用 CURL 执行相同的请求。我正在使用以下命令:
curl -i -XPOST http://192.168.123.27:8086/write?db=HWDB --data-binary "HARDWARE,CPU="1" value=91, CPU="2" value=92 1422568543702900257"
这将 return 错误:
{"error":"unable to parse 'HARDWARE,CPU=1 value=91i, CPU=2 value=92i 1422568543702900257': invalid field format"}
我应该如何更改 CURL 命令才能工作?我是 运行 来自 Windows 的 CURL,如果我使用:
curl -i -XPOST http://192.168.123.27:8086/write?db=HWDB --data-binary "HARDWARE,CPU=1 value=91"
数据已正确插入数据库。还尝试使用 InfluxDB 文档中的示例从文件中插入:
curl -i -XPOST http://192.168.123.27:8086/write?db=HDWB --data-binary @data.txt
这将 return:
{"error":"partial write:\nunable to parse 'cpu_load_short,host=server02 value=0.
67\r': invalid number\nunable to parse 'cpu_load_short,host=server02,region=us-w
est value=0.55 1422568543702900257\r': bad timestamp"}
data.txt的内容:
cpu_load_short,host=server02 value=0.67
cpu_load_short,host=server02,region=us-west value=0.55 1422568543702900257
cpu_load_short,direction=in,host=server01,region=us-west value=2.0 1422568543702900257
关于data.txt
文件,Windows是这里的关键因素。它几乎肯定会在行尾引入 CRLF 而不仅仅是换行符。有关更多信息,请参阅 InfluxDB docs。
至于您 post 顶部的直接示例:
curl -i -XPOST http://192.168.123.27:8086/write?db=HWDB --data-binary "HARDWARE,CPU="1" value=91, CPU="2" value=92 1422568543702900257"
内容不是 valid line protocol format,永远无法工作。每个点都必须在新的一行上,并且点之间不能共享值。剥离 curl
语法,这是尝试写入:
HARDWARE,CPU="1" value=91, CPU="2" value=92 1422568543702900257
这是实际有效的语法:
HARDWARE,CPU="1" value=91 1422568543702900257
HARDWARE,CPU="2" value=92 1422568543702900257
https://docs.influxdata.com/influxdb/v1.6/write_protocols/line_protocol_reference/
<measurement>[,<tag_key>=<tag_value>[,<tag_key>=<tag_value>]] <field_key>=<field_value>[,<field_key>=<field_value>] [<timestamp>]
我有以下 POST 从 C# 完成的请求:
POST http://192.168.123.27:8086/write?db=HWDB HTTP/1.1
Content-Type: text/plain; charset=utf-8
Host: 192.168.123.27:8086
Content-Length: 97
Expect: 100-continue
Connection: Keep-Alive
HARDWARE,CPU=1 count=91i 1456298998307783936
HARDWARE,CPU=2 count=92i 1456298998307783936
我想使用 CURL 执行相同的请求。我正在使用以下命令:
curl -i -XPOST http://192.168.123.27:8086/write?db=HWDB --data-binary "HARDWARE,CPU="1" value=91, CPU="2" value=92 1422568543702900257"
这将 return 错误:
{"error":"unable to parse 'HARDWARE,CPU=1 value=91i, CPU=2 value=92i 1422568543702900257': invalid field format"}
我应该如何更改 CURL 命令才能工作?我是 运行 来自 Windows 的 CURL,如果我使用:
curl -i -XPOST http://192.168.123.27:8086/write?db=HWDB --data-binary "HARDWARE,CPU=1 value=91"
数据已正确插入数据库。还尝试使用 InfluxDB 文档中的示例从文件中插入:
curl -i -XPOST http://192.168.123.27:8086/write?db=HDWB --data-binary @data.txt
这将 return:
{"error":"partial write:\nunable to parse 'cpu_load_short,host=server02 value=0.
67\r': invalid number\nunable to parse 'cpu_load_short,host=server02,region=us-w
est value=0.55 1422568543702900257\r': bad timestamp"}
data.txt的内容:
cpu_load_short,host=server02 value=0.67
cpu_load_short,host=server02,region=us-west value=0.55 1422568543702900257
cpu_load_short,direction=in,host=server01,region=us-west value=2.0 1422568543702900257
关于data.txt
文件,Windows是这里的关键因素。它几乎肯定会在行尾引入 CRLF 而不仅仅是换行符。有关更多信息,请参阅 InfluxDB docs。
至于您 post 顶部的直接示例:
curl -i -XPOST http://192.168.123.27:8086/write?db=HWDB --data-binary "HARDWARE,CPU="1" value=91, CPU="2" value=92 1422568543702900257"
内容不是 valid line protocol format,永远无法工作。每个点都必须在新的一行上,并且点之间不能共享值。剥离 curl
语法,这是尝试写入:
HARDWARE,CPU="1" value=91, CPU="2" value=92 1422568543702900257
这是实际有效的语法:
HARDWARE,CPU="1" value=91 1422568543702900257
HARDWARE,CPU="2" value=92 1422568543702900257
https://docs.influxdata.com/influxdb/v1.6/write_protocols/line_protocol_reference/
<measurement>[,<tag_key>=<tag_value>[,<tag_key>=<tag_value>]] <field_key>=<field_value>[,<field_key>=<field_value>] [<timestamp>]