http-api: api/query
code: class net.opentsdb.tsd.QueryRpc
document: HTTP API, Query
查询DEMO1
2
3
4
5
6
7/api/query?start=2018/03/27-16:30:02&m=sum:proc.net.bytes
/api/query?start=2018/03/27-16:20:02&m=sum:proc.net.bytes{direction=in}
/api/query?start=2018/03/27-16:20:02&m=none:1m-avg-none:proc.net.bytes{direction=in}
/api/query?start=2018/03/27-16:30:02&tsuid=sum:00015D00000100000100000A00007F00000B000081,00015D00000100000100000A00007F00000B000080
解析请求
解析请求参数,构造、填充到 net.opentsdb.core.TSQuery
对象中。
其中Metric & TSUID参数的核心解析代码位于:1
2net.opentsdb.tsd.QueryRpc::parseMTypeSubQuery
net.opentsdb.tsd.QueryRpc::parseTsuidTypeSubQuery
涉及的类:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16// 对应额一次 http/telnet 请求
net.opentsdb.core.TSQuery
// 对应一次请求中的一个 query
net.opentsdb.core.TSSubQuery
// A query to retrieve data from the TSDB.
// interface
net.opentsdb.core.Query
// Non-synchronized implementation of interface Query.
// 与 TSSubQuery 一一对应
net.opentsdb.core.TsdbQuery
//
net.opentsdb.query.filter.TagVFilter
每个query真正执行入口位于:1
net.opentsdb.core.TsdbQuery::runAsync()
OpenTSDB 通过 scanner 过滤 time-range, metric, tagKV 筛选符合要求的数据,然后在本地再进行 aggregate, downsampling。