RESTful 接口操作
插入及查询操作:
- # code from www.361way.com
- now=$(date '+%FT%T.000Z')
- tomorrow=$(date -v +1d '+%FT%T.000Z')
- echo "creating database"
- curl -G http://localhost:8086/query --data-urlencode "q=CREATE DATABASE foo"
- echo "creating retention policy"
- curl -G http://localhost:8086/query --data-urlencode "q=CREATE RETENTION POLICY bar ON foo DURATION INF REPLICATION 1 DEFAULT"
- echo "inserting data"
- curl -d "{\"database\" : \"foo\", \"retentionPolicy\" : \"bar\", \"points\": [{\"measurement\": \"cpu\", \"tags\": {\"region\":\"uswest\",\"host\": \"server01\"},\"time\": \"$now\",\"fields\": {\"value\": 100}}]}" -H "Content-Type: application/json" http://localhost:8086/write
- echo "inserting data"
- curl -d "{\"database\" : \"foo\", \"retentionPolicy\" : \"bar\", \"points\": [{\"measurement\": \"cpu\", \"tags\": {\"region\":\"uswest\",\"host\": \"server01\"},\"time\": \"$tomorrow\",\"fields\": {\"value\": 200}}]}" -H "Content-Type: application/json" http://localhost:8086/write
- sleep 1
- echo "querying data"
- curl -G http://localhost:8086/query --data-urlencode "db=foo" --data-urlencode "q=SELECT count(value) FROM \"foo\".\"bar\".cpu"
- echo "querying data"
- curl -G http://localhost:8086/query --data-urlencode "db=foo" --data-urlencode "q=SELECT count(value) FROM \"foo\".\"bar\".cpu where time < now() + 10d"
GZIP压缩数据插入及查询:
- # code from www.361way.com
- echo "inserting data"
- curl -v -i -H "Content-encoding: gzip" -H "Content-Type: application/json" -X POST -T foo.json.gz http://localhost:8086/write
- rm foo.json.gz
- echo "querying data with gzip encoding"
- curl -v -G --compressed http://localhost:8086/query --data-urlencode "db=foo" --data-urlencode "q=SELECT sum(value) FROM \"foo\".\"bar\".cpu GROUP BY time(1h)"
还可以指定数据保存策略及表的各关键值插入:
- echo "creating retention policy"
- curl -G http://localhost:8086/query --data-urlencode "q=CREATE RETENTION POLICY bar ON foo DURATION 300d REPLICATION 3 DEFAULT"
- curl -d '{"database" : "foo", "retentionPolicy" : "bar", "points": [{"measurement": "network", "tags": {"host": "server01","region":"uswest"},"time": "2015-02-26T22:01:11.703Z","fields": {"rx": 2342,"tx": 9804}}]}' -H "Content-Type: application/json" http://localhost:8086/write
- curl -d '{"database" : "foo", "retentionPolicy" : "bar", "points": [{"measurement": "network", "tags": {"host": "server01","region":"useast"},"time": "2015-02-27T22:01:11.703Z","fields": {"rx": 4324,"tx": 7930}}]}' -H "Content-Type: application/json" http://localhost:8086/write
更多可以参考github上的测试内容。
无论是influx还是通过RESETful 参数进行查询,其还有pertty参数可以使输出的json格式更加美观 。除此之外,influx命令还有column、CSV等格式输出,influx命令支持通过import参数输入类csv类格式的数据。
五、influxdb.conf配置web管理
当前版本的influxdb,默认情况下未开启web管理功能。可以通过修改influxdb.conf文件中admin项的配置开启web管理界面,具体如下:
- [admin]
- # Determines whether the admin service is enabled.
- enabled = true
- # The default bind address used by the admin service.
- bind-address = ":8083"