本文主要是介绍OpenTSDB的metric查询分析,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
OpenTSDB查询端口/api/query的参数分析
- /api/query的查询参数
- OpenTSDB的子查询subQuery参数
- 按metric查询的格式
- 依据参数m的值进行分析
- 分析OpenTSDB源码如何处理查询请求
/api/query的查询参数
OpenTSDB的子查询subQuery参数
如上图所示,OpenTSDB的查询方式有两种,一种是按metric查询,子查询参数以m开头,一种是按TSUID查询,子查询参数以tsuid开头。这里本文仅讨论按metric查询的方式 。
按metric查询的格式
之前说这是BNF,其实不是BNF。只是一个简单的参数m以及后面带的值。
m=<aggregator>:
[rate[{counter[,<counter_max>[,<reset_value>]]]}:]
[<down_sampler>:]
[percentiles\[<p1>, <pn>\]:]
[explicit_tags:]
<metric_name>
[{<tag_name1>=<grouping filter>[,...<tag_nameN>=<grouping_filter>]}]
[{<tag_name1>=<non grouping filter>[,...<tag_nameN>=<non_grouping_filter>]}]
看过该BNF之后,再回头看上图的子查询参数。我们知道,除了aggregator和metric是必须项之外(因为都是用的尖括号,在BNF中表示必选),其余的都是可选的。可知BNF与参数定义完全符合。
此处给一个按metric查询的不完整的例子如下:
http://localhost:4242/api/query?start=1h-ago&m=sum:rate:proc.stat.cpu{host=foo,type=idle}
该例没有包含metric的完整情况,但是也是合法的,因为它遵从上述BNF的规定。
依据参数m的值进行分析
- aggregator是必选项。其取值是字符串类型,取值如下:
- rate是可选项。其取值是布尔类型,取值为true或false。
- rateOptions是可选项。其取值是Map类型,取值如下。
可知其取值为{counter[,<counter_max>[,<reset_value>[,<dropResets>]]]]}
。此处跟上述BNF对比,可知上述官网给的BNF漏了一项dropResets。 - downsample是可选项。其取值是字符串类型。取值如下。
- percentiles是可选项。其数值是列表类型。取值例如
percentiles[99.9,75.0]
。说明如下。
- explicitTags 是可选项。其取值是布尔类型。取值为true或false。
- metric是必选项。其取值是字符串类型。取值根据具体的metric名而定。
- filters是可选项。其取值是列表类型。取值例如
{host=wildcard(web*)}{colo=regexp(sjc.*)}
。其说明如下。
其中type的取值是 /api/config/filters返回的那些过滤器类型。比如iliteral_or
、wildcard
、literal_or
、iwildcard
、regexp
等。 - tags是可选项。其取值是Map类型。取值例如
{host=foo,type=idle}
。
分析OpenTSDB源码如何处理查询请求
详情请见:https://blog.csdn.net/sinat_32336967/article/details/91046540
这篇关于OpenTSDB的metric查询分析的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!