I have the following POST request which is done from 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
I want to do the same request using CURL. I'm using the following command:
curl -i -XPOST http://192.168.123.27:8086/write?db=HWDB --data-binary "HARDWARE,CPU="1" value=91, CPU="2" value=92 1422568543702900257"
This will return the error:
{"error":"unable to parse 'HARDWARE,CPU=1 value=91i, CPU=2 value=92i 1422568543702900257': invalid field format"}
How should I change the CURL command to work? I'm running CURL from Windows, if I use:
curl -i -XPOST http://192.168.123.27:8086/write?db=HWDB --data-binary "HARDWARE,CPU=1 value=91"
data is correctly inserted in DB. Also tried to insert from file using the example from InfluxDB documentation:
curl -i -XPOST http://192.168.123.27:8086/write?db=HDWB --data-binary @data.txt
This will 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"}
Content of 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
Regarding the data.txt
file, Windows is the key factor here. It is almost certainly introducing a CRLF rather than just a linefeed at the end of the lines. See the InfluxDB docs for more.
As for the direct example at the top of your 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"
the content is not valid line protocol format and can never work. Each point must be on a new line, and values cannot be shared between points. Stripping out the curl
syntax, this is the attempted write:
HARDWARE,CPU="1" value=91, CPU="2" value=92 1422568543702900257
And this is the actual valid syntax:
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>]
来源:https://stackoverflow.com/questions/35596542/insert-line-in-influxdb-using-curl