opentsdb / 2.3 / reference / api_http-query-gexp.html

/api/query/gexp

Graphite 是用于时间序列数据的出色存储系统,它具有许多内置函数来处理数据。为了支持从 Graphite 到 OpenTSDB 的过渡,/api/query/gexp端点支持与 Graphite 的表达式“相似”但不“相同”的 URI 查询。具有嵌套功能的 Graphite 函数通常被格式化为func(<series>[, param1][, paramN])。 TSD 的实现遵循相同的模式,但使用m样式查询(例如sum:proc.stat.cpu{host=foo,type=idle})代替<series>。支持嵌套函数。

TSDB 实现了 Graphite 函数的子集,尽管我们希望将来增加更多。有关 Graphite 功能和说明的列表,请参见Documentation。 TSD 支持的功能如下所示。

Note

从 2.3 版本开始支持

Verbs

  • GET

Requests

目前只能使用 URI 通过 GET 执行查询。 (将来,/api/query/exp端点将支持更大的灵 Active。)这是主要/api/query端点的扩展,因此此处也支持请求表中的参数。其他参数包括:

Name Data Type Required Description Example
exp String Required 要执行的 Graphite 样式表达式。函数的第一个参数必须是另一个函数或 URI 格式的“子查询” scale(sum:if.bytes_in{host=*},1024)

示例查询字符串请求

http://localhost:4242/api/query/gexp?start=1h-ago&exp=scale(sum:if.bytes_in{host=*},1024)

Response

输出与/api/query相同。

Functions

接受单个度量标准查询的函数将在每个时间序列结果中运行。例如。如果查询中包括诸如scale(sum:if.bytes_in{host=*},1024)之类的主机上的 group by,并且存在具有该度量标准的多个主机,则将为每个主机发出一个序列,并应用该函数。对于采用多个 Metrics 的函数,将在每个 Metrics 上执行并集,并在每个具有匹配标签的结果序列上执行该函数。例如,使用查询sum(sum:if.bytes_in{host=*},sum:if.bytes_out{host=*}),假设存在两个主机web01web02。在这种情况下,输出将为if.bytes_in{host=web01} + if.bytes_out{host=web01}if.bytes_in{host=web02} + if.bytes_out{host=web02}。任何度量标准结果集中的缺失序列都将使用该函数的默认填充值进行填充。

当前支持的表达式包括:

absolute(<metric>)

将结果作为绝对值发出,将负值转换为正值。

diffSeries(<metric>[,<metricN>])

返回列表中所有系列的差。在每个 Metrics 结果集中的标签之间执行 UNION,默认填充值为零。目前最多支持 26 个系列。

divideSeries(<metric>[,<metricN>])

返回列表中所有序列的商。在每个 Metrics 结果集中的标签之间执行 UNION,默认填充值为零。目前最多支持 26 个系列。

highestCurrent(<metric>,<n>)

将所有产生的时间序列按它们的最新值排序,并发出n个具有最高值的序列。 n必须为正整数。

highestMax(<metric>,<n>)

按时间 Span 的最大值对所有结果时间序列进行排序,并发出n个具有最高值的序列。 n必须为正整数。

movingAverage(<metric>,<window>)

对度量中的每个数据点和序列发出滑动窗口移动平均值。 window参数可以是反映窗口中要维护的数据点数量的正整数(非定时),也可以是由整数指定的时间 Span,后跟时间单位,例如“ 60s”或“ 60m”或24h。定时窗口必须用单引号引起来。

multiplySeries(<metric>[,<metricN>])

返回列表中所有系列的乘积。在每个 Metrics 结果集中的标签之间执行 UNION,默认填充值为零。目前最多支持 26 个系列。

scale(<metric>,<factor>)

将每个系列乘以因子,其中因子可以是正浮点或负浮点或整数值。

sumSeries(<metric>[,<metricN>])

返回列表中所有系列的总和。在每个 Metrics 结果集中的标签之间执行 UNION,默认填充值为零。目前最多支持 26 个系列。