API接收地址

  1. https://tsdb.qiniu.com

API返回内容

响应报文

  • 如果请求成功,返回HTTP状态码200:
  1. HTTP/1.1 200 OK
  • 如果请求失败,返回包含如下内容的JSON字符串(已格式化,便于阅读):
  1. {
  2. "error": "<errMsg string>"
  3. }
  • 如果请求包含数据获取,则返回相应数据的JSON字符串;

创建数据仓库

请求语法

  1. POST /v4/repos/<RepoName>
  2. Content-Type: application/json
  3. Authorization: Pandora <auth>
  4. {
  5. "region": <Region>,
  6. "metadata":{
  7. "key1":"value1",
  8. ...
  9. }
  10. }

请求内容

参数 类型 必填 说明
RepoName string 数据仓库名称,用来标识该数据仓库的唯一性;
命名规则: ^[a-zA-Z_][a-zA-Z0-9_]{0,127}$
region string 所属区域,计算与存储所使用的物理资源所在区域,目前支持华东(代号nb);
此参数是为了降低用户传输数据的成本,应当尽量选择离自己数据源较近的区域
metadata map 备注信息
metadata.key string 备注信息标题;
命名规则:^[a-zA-Z_][a-zA-Z0-9_]{0,127}$
metadata.value string 备注信息内容,1-500个字符长度

示例

  1. curl -X POST https://tsdb.qiniu.com/v4/repos/test_repo \
  2. -H 'Content-Type: application/json' \
  3. -H 'Authorization: Pandora 2J1e7iG13J66GA8vWBzZdF-UR_d1MF-kacOdUUS4:NTi3wH_WlGxYOnXsvgUrO4XMD6Y=' \
  4. -d '{
  5. "region": "nb",
  6. "metadata":{
  7. "info":"this repo is be for the use of test"
  8. }
  9. }'

创建序列

请求语法

  1. POST /v4/repos/<RepoName>/series/<SeriesName>
  2. Content-Type: application/json
  3. Authorization: Pandora <auth>
  4. {
  5. "retention": <Retention>,
  6. "metadata": {
  7. "key": "value",
  8. ...
  9. }
  10. }

请求内容

参数 类型 必填 说明
RepoName string 所属数据仓库名称
SeriesName string 序列名称,用来标识该序列的唯一性;
命名规则: ^[a-zA-Z_][a-zA-Z0-9_]{0,127}$
retention string 数据存储时限,目前支持:1d - 30d,1-30天
metadata string 备注信息

示例

  1. curl -X POST https://tsdb.qiniu.com/v4/repos/test_repo/series/test_series \
  2. -H 'Content-Type: application/json' \
  3. -H 'Authorization: Pandora 2J1e7iG13J66GA8vWBzZdF-UR_d1MF-kacOdUUS4:NTi3wH_WlGxYOnXsvgUrO4XMD6Y=' \
  4. {
  5. "retention": "1d",
  6. "metadata": {
  7. "author": "Lynk Lee"
  8. }
  9. }

数据查询

请求语法

  1. GET /v4/repos/<RepoName>/query?q=<Sql>[&timezone=<TimeZone>]
  2. Authorization: Pandora <auth>

or

  1. POST /v4/repos/<RepoName>/query[?timezone=<TimeZone>]
  2. Content-Type: application/json
  3. Authorization: Pandora <auth>
  4. {
  5. "sql" : <Sql>
  6. }

or

  1. POST /v4/repos/<RepoName>/query[?timezone=<TimeZone>]
  2. Content-Type: text/plain
  3. Authorization: Pandora <auth>
  4. <Sql>

请求内容

  • 查询默认时区为+00或者-00,即utc

  • 存储在tsdb中的数据的时间戳都是UTC时间,timezone参数用于指定查询者所在的时区相对UTC时间的偏移量

  • TimeZone取值范围为[-12, +14],表示与utc时区的偏移量,如东八区(中国)应写成+08,会将查询范围整体加上8小时,西五区应该写成-05,查询范围的时间则被减去5小时。

举例说明:

1466510400000000000是UTC时间2016-06-21 12:00:00,和东八区时间2016-06-21 20:00:00unixnano表示

  1. select value from cpu where time > '2016-06-21T12:00:00Z'

当以上查询语句的timezone参数为+08的时候,该sql语句能够检索的数据的时间范围为

(2016-06-21 04:00:00 UTC,当前时间)

当以上查询语句的timezone参数为+00的时候,该sql语句能够检索的数据的时间范围为

('2016-06-21 12:00:00 UTC', 当前时间]

当写入的数据点的时间戳为1466510400000000000的时候,如果想要查到该点,可以

  1. select value from cpu where time = '2016-06-21T12:00:00Z' //timezone=0

或者

  1. select value from cpu where time = '2016-06-21T20:00:00Z' //timezone=8

响应报文

  1. 200OK
  2. type QueryRet struct {
  3. Results []Result `json:"results,omitempty"`
  4. }
  5. type Result struct {
  6. Series []Serie `json:"series,omitempty"`
  7. }
  8. type Serie struct {
  9. Name string `json:"name,omitempty"`
  10. Tags map[string]string `json:"tags,omitempty"`
  11. Columns []string `json:"columns,omitempty"`
  12. Values [][]interface{} `json:"values,omitempty"`
  13. }

以上是tsdb返回的结果序列化之前的结构体

  • 每个QueryRet对应的是一个请求返回的结果
  • QueryRet中每个Result对应一条sql的查询结果
  • Result中的每个Series对应一个tagSet的结果,即Result每有一个不同的tags组合,就会有一个Serie的结果添加到Result.Seires这个slice

一个简单的查询,如SELECT value FROM cpu_load_short WHERE region='us-west'结果类似如下json字符串:

  1. {
  2. "results": [
  3. {
  4. "series": [
  5. {
  6. "name": "cpu_load_short",
  7. "columns": [
  8. "time",
  9. "value"
  10. ],
  11. "values": [
  12. [
  13. "2015-01-29T21:55:43.702900257Z",
  14. 0.55
  15. ],
  16. [
  17. "2015-01-29T21:55:43.702900257Z",
  18. 23422
  19. ],
  20. [
  21. "2015-06-11T20:46:02Z",
  22. 0.64
  23. ]
  24. ]
  25. }
  26. ]
  27. }
  28. ]
  29. }

根据名称查询数据仓库信息

请求语法

  1. GET /v4/repos/<RepoName>
  2. Authorization: Pandora <auth>

响应报文

  1. 200 OK
  2. Content-Type: application/json
  3. {
  4. "name": <RepoName>,
  5. "region": <Region>,
  6. "metadata": <Metadata>,
  7. "createTime": <CreateTime>,
  8. "deleting": <"true"|"false">
  9. }
  • 如果请求成功,且没有数据,则返回一个空列表:
  1. 200 OK
  2. Content-Type: application/json
  3. [ ]

响应内容

参数 类型 必填 说明
createTime string - 创建时间
deleting string - 该repo是否处在删除中状态,返回true or false

查询所有数据仓库信息

请求语法

  1. GET /v4/repos
  2. Authorization: Pandora <auth>

响应报文

  1. 200 OK
  2. Content-Type: application/json
  3. [
  4. {
  5. "name": <RepoName>,
  6. "region": <Region>,
  7. "metadata": <Metadata>,
  8. "createTime": <CreateTime>,
  9. "deleting": <"true"|"false">
  10. },
  11. ...
  12. ]
  • 如果请求成功,且没有数据,则返回一个空列表:
  1. 200 OK
  2. Content-Type: application/json
  3. [ ]

查询某个数据仓库下所有序列信息

请求语法

  1. GET /v4/repos/<RepoName>/series[?showMeta=<true|false>]
  2. Authorization: Pandora <auth>

请求内容

参数 类型 必填 说明
RepoName string 数据仓库名称
showMeta bool 是否显示备注信息,true or false

响应报文

  1. 200 OK
  2. Content-Type: application/json
  3. [
  4. {
  5. "name": <SeriesName>,
  6. "retention": <Retention>,
  7. "metadata": <Metadata>,
  8. "createTime": <CreateTime>,
  9. "type":<Type>,
  10. "deleting": <"true"|"false">
  11. },
  12. ...
  13. ]
  • 如果请求成功,且没有数据,则返回一个空列表:
  1. 200 OK
  2. Content-Type: application/json
  3. [ ]

响应内容

参数 类型 必填 说明
seriesName string - 序列名称
retention string - 存储时限
createTime string - 创建时间
type string - 创建类型,为1是表示这个序列由用户直接创建,默认为1
deleting string - 是否在删除中
metadata string - 备注信息

更新数据仓库的meta data

请求语法

  1. POST /v4/repos/<RepoName>/meta
  2. Content-Type: application/json
  3. Authorization: Pandora <auth>
  4. {
  5. "metadata": {
  6. "key1":"value1",
  7. ...
  8. }
  9. }

请求内容

参数 类型 必填 说明
RepoName string 数据仓库名称
metadata string 备注信息
key string 备注信息标题
value string 备注信息内容

示例

  1. curl -X POST https://tsdb.qiniu.com/v4/repos/test_repo/meta \
  2. -H 'Content-Type: application/json \
  3. -H 'Authorization: Pandora 2J1e7iG13J66GA8vWBzZdF-UR_d1MF-kacOdUUS4:NTi3wH_WlGxYOnXsvgUrO4XMD6Y=' \
  4. -d '{
  5. "metadata": {
  6. "author":"Lynk Lee"
  7. }
  8. }'

删除数据仓库的meta data

请求语法

  1. DELETE /v4/repos/<RepoName>/meta
  2. Authorization: Pandora <auth>

删除数据仓库

请求语法

  1. DELETE /v4/repos/<RepoName>
  2. Authorization: Pandora <auth>

更新序列的meta data

请求语法

  1. POST /v4/repos/<RepoName>/series/<SeriesName>/meta
  2. Content-Type: application/json
  3. Authorization: Pandora <auth>
  4. {
  5. "metadata": <Metadata>
  6. }

请求内容

参数 类型 必填 说明
RepoName string 所属数据仓库名称
SeriesName string 序列名称
metadata string 备注信息

删除序列的meta data

请求语法

  1. DELETE /v4/repos/<RepoName>/series/<SeriesName>/meta
  2. Authorization: Pandora <auth>

删除序列

请求语法

  1. DELETE /v4/repos/<RepoName>/series/<SeriesName>
  2. Authorization: Pandora <auth>

错误代码及相关说明

创建、管理相关接口报错

http code error message 说明
500 E9001: server internal error 服务器内部错误,请联系管理员解决
400 E6000: Request data format not supplied as expected 传入的body格式不对
404 E6004: The request resource not found 请求的资源不存在。
401 bad token 鉴权不通过 、token已过期、机器时间未同步

仓库(Repo)层错误

http code error message 说明
400 E6100: RepoName is limited between 1 and 128 characters, which the first charactor must be a letter and the others are letters, numbers and underlines! 数据仓库名称格式错误
400 E6101: Region should not be empty! 创建数据仓库时需要加上所属区域字段。
400 E6102: RepoName already exists, please use a new RepoName! 该数据仓库已经存在。
400 E6103: Region does not exist! 所属区域参数错误。
400 E6106: Resouce of the RepoName is in process of deleting, please wait a moment 该数据仓库正在被删除中。
409 E6110: Repo is currently modifying, please wait a moment 该数据仓库正在被修改,需要等待。

序列(Series)层错误

http code error message 说明
404 E6205: Retention does not exists 存储时限参数错误
400 E6300: Series name is limited between 1 and 128 characters, which the first character must be a letter and the others are letters, numbers and underlines! 序列名字格式错误
400 E6301: Series name contains key words, please rename! 序列命名时用到了关键字,请重新创建。
409 E6302: Series already exists 该序列已经存在
404 E6303 Series does not exist 该序列不存在
400 E6305: Series is in process of deleting, please wait a moment 该序列正在删除中
409 E6307: Series is currently modifying, please wait a moment 该序列正在被修改
400 E6308: Max Series number exceeded 序列创建已达上限

查询语句相关

http code error message 说明
400 E7200: Invalid sql sql语句不合法,出错原因: \
400 E7202: Invalid time zone 时区设置错误
400 E7204: Query execution was interrupted, max execute time exceeded 查询时间执行过长。
400 E7212: Execute Sql error 执行sql出错,出错原因: \
500 E9002: executor query chan closed without result error 查询语句被中断