/api/search/lookup
Note
Available in 2.1
Lookup queries use either the meta data table or the main data table to determine what time series are associated with a given metric, tag name, tag value, tag pair or combination thereof. For example, if you want to know what metrics are available for a tag pair host=web01
you can execute a lookup to find out. Lookups do not require a search plugin to be installed.
Note
Lookups are performed against the tsdb-meta
table. You must enable real-time meta data creation or perform a metasync
using the uid
command in order to retreive data from a lookup. Lookups can be executed against the raw data table using the CLI command only: search
Verbs
- GET
- POST
Requests
Parameters used by the lookup endpoint include:
Name | Data Type | Required | Description | Default | QS | RW | Example |
---|---|---|---|---|---|---|---|
query | String | Required | A lookup query as defined below. | m | tsd.hbase.rpcs{type=*} | ||
useMeta | Boolean | Optional | Whether or not to use the meta data table or the raw data table. The raw table will be much slower. | False | use_meta | True | |
limit | Integer | Optional | The maximum number of items returned in the result set. Currently the limit is ignored for lookup queries | 25 | 100 | ||
startIndex | Integer | Optional | Ignored for lookup queries, always the default. | 0 | 10 |
Lookup Queries
A lookup query consists of at least one metric, tag name (tagk) or tag value (tagv). Each value must be a literal name in the UID table. If a given name cannot be resolved to a UID, an exception will be returned. Only one metric can be supplied per query but multiple tagk, tagv or tag pairs may be provided.
Normally, tags a provided in the format <tagk>=<tagv>
and a value is required on either side of the equals sign. However for lookups, one value may an asterisk *
, i.e. <tagk>=*
or *=<tagv>
. In these cases, the asterisk acts as a wildcard meaning any time series with the given tagk or tagv will be returned. For example, if we issue a query for host=*
then we will get all of the time series with a host
tagk such as host=web01
and host=web02
.
For complex queries with multiple values, each type is AND
'd with the other types and OR
'd with it's own type.
<metric> AND (<tagk1>=[<tagv1>] OR <tagk1>=[<tagv2>]) AND ([<tagk2>]=<tagv3> OR [<tagk2>]=<tagv4>)
For example, the query tsd.hbase.rpcs{type=*,host=tsd1,host=tsd2,host=tsd3}
would return only the time series with the metric tsd.hbase.rpcs
and the type
tagk with any value and a host
tag with either tsd1
or tsd2
or tsd3
. Unlike a data query, you may supply multiple tagks with the same name as seen in the example above. Wildcards always take priority so if your query looked like tsd.hbase.rpcs{type=*,host=tsd1,host=tsd2,host=*}
, then the query would effectively be treated as tsd.hbase.rpcs{type=*,host=*}
.
To retreive a list of all time series with a specific tag value, e.g. a particular host, you could issue a query like {*=web01}
that will return all time series with a tag value of web01
. This can be useful in debugging tag name issues such as some series having host=web01
or server=web01
.
Example Request
Query String:
http://localhost:4242/api/search/lookup?m=tsd.hbase.rpcs{type=*}
POST:
JSON requests follow the search query format on the /api/search page. Limits and startNote that tags are supplied as a list of objects. The value for the key
should be a tagk
and the value for value
should be a tagv
or wildcard.
{ "metric": "tsd.hbase.rpcs", "tags":[ { "key": "type", "value": "*" } ] }
Response
Depending on the endpoint called, the output will change slightly. However common fields include:
Name | Data Type | Description | Example |
---|---|---|---|
type | String | The type of query submitted, i.e. the endpoint called. | LOOKUP |
query | String | Ignored for lookup queries. | |
limit | Integer | The maximum number of items returned in the result set. Currently the limit is ignored for lookup queries | 25 |
startIndex | Integer | Ignored for lookup queries, always the default. | 0 |
metric | String | The metric used for the lookup | * |
tags | Array | The list of tag pairs used for the lookup. May be an empty list. | [ ] |
time | Integer | The amount of time it took, in milliseconds, to complete the query | 120 |
totalResults | Integer | The total number of results matched by the query | 1024 |
results | Array | The result set with the TSUID, metric and tags for each series. | See Below |
This endpoint will almost always return a 200
with content body. If the query doesn't match any results, the results
field will be an empty array and totalResults
will be 0. If an error occurs, such as a failure to resolve a metric or tag name to a UID, an exception will be returned.
Example Response
{ "type": "LOOKUP", "metric": "tsd.hbase.rpcs", "tags":[ { "key": "type", "value": "*" } ] "limit": 3, "time": 565, "results": [ { "tags": { "fqdn": "web01.mysite.com" }, "metric": "app.apache.connections", "tsuid": "0000150000070010D0" }, { "tags": { "fqdn": "web02.mysite.com" }, "metric": "app.apache.connections", "tsuid": "0000150000070010D5" }, { "tags": { "fqdn": "web03.mysite.com" }, "metric": "app.apache.connections", "tsuid": "0000150000070010D6" } ], "startIndex": 0, "totalResults": 9688066 }
© 2010–2016 The OpenTSDB Authors
Licensed under the GNU LGPLv2.1+ and GPLv3+ licenses.
http://opentsdb.net/docs/build/html/api_http/search/lookup.html