HTTP API是查询InfluxDB中数据的主要手段(命令行界面和客户端库及其他方法也可查询)
使用HTTP API 查询InfluxDB
使用HTTP API在InfluxDB进行查询主要是发送 GET 请求到 InfluxDB的 /query 端,调用示例如下所示:
curl -GET 'http://localhost:8086/query?pretty=true' --data-urlencode "db=——internal"
--data-urlencode "q=show measurements"
其中:
- pretty=true 格式化输出结果
- db=mydb 指定了查询的数据库
- q 代表了需执行的查询语句。
你也可以在浏览器中直接输入
http://localhost:8086/query?pretty=true&db=_internal&q=show%20measurements
返回json如下
{
"results": [
{
"statement_id": 0,
"series": [
{
"name": "measurements",
"columns": [
"name"
],
"values": [
[
"cq"
],
[
"database"
],
[
"httpd"
],
[
"queryExecutor"
],
[
"runtime"
],
[
"shard"
],
[
"subscriber"
],
[
"tsm1_cache"
],
[
"tsm1_engine"
],
[
"tsm1_filestore"
],
[
"tsm1_wal"
],
[
"write"
]
]
}
]
}
]
}
在页面中也提供了生成HTTP 请求URL的方法,如下所示:
HTTP API查询多条数据
在单个API调用中向InfluxDB发送多个查询。简单地用 ; 分隔每个查询,便可以同时查询多条数据。例如:
curl -GET 'http://localhost:8086/query?db=_internal'
--data-urlencode "q=show databases;show measurements"
返回json
{"results":[{"statement_id":0,"series":[{"name":"databases","columns":["name"],"values":[["_internal"],["testDB"],["test"],["telegraf"]]}]},{"statement_id":1,"series":[{"name":"measurements","columns":["name"],"values":[["cq"],["database"],["httpd"],["queryExecutor"],["runtime"],["shard"],["subscriber"],["tsm1_cache"],["tsm1_engine"],["tsm1_filestore"],["tsm1_wal"],["write"]]}]}]}
HTTP API 查询其他选项
1)时间格式
在使用HTTP查询时可以使用 epoch 参数指定输出的时间格式。可选值有 epoch=[h,m,s,ms,u,ns]。
例如:
curl -G 'http://localhost:8086/query' --data-urlencode "db=mydb"
--data-urlencode "epoch=s" --data-urlencode "q=SELECT value FROM cpu_load_short WHERE region='us-west'"
这样会获取到以秒为单位的时间数据。
2)指定每次查询数据大小
可以使用 chunk_size 参数来指定每次结果的大小。比如,我要结果每次返回200个点的数据,则如下所示:
curl -G 'http://localhost:8086/query' --data-urlencode "db=mydb" --data-urlencode "chunk_size=200" --data-urlencode "q=SELECT value FROM cpu_load_short WHERE region='us-west'"
这样查询结果就会返回200个点的数据。
网友评论