咨询OpenTSDB查询语法规范及Bosun查询语句元素解析
OpenTSDB(Bosun)查询语法详解
关于语法规范文档
OpenTSDB官方文档偏概念介绍,而你使用的Bosun在自身文档中提供了明确的查询语法规范,涵盖了结构、函数、过滤规则等细节。
示例查询拆解
针对你给出的查询语句:
sum:30s-avg-zero:rate{counter}:my.metric.name{tagA=*}{tagB=valueB,tagC=valueC}
按冒号分隔的各元素含义如下:
- sum:全局聚合函数,对后续处理后的数据进行求和聚合,常见同类函数还有
avg、min、max等。 - 30s-avg-zero:降采样规则,格式为
[时间窗口]-[降采样函数]-[填充策略]:30s:降采样的时间粒度,每30秒将窗口内的数据聚合为一个点avg:降采样时的聚合逻辑,对窗口内数据取平均值zero:无数据时的填充策略,用0填充缺失的时间点,其他可选策略如null(不填充)、last(用前一个有效值填充)
- rate{counter}:转换函数,
rate用于将计数器类型的指标转换为每秒速率(处理计数器递增、回零重置的场景),{counter}是函数参数,声明该指标为计数器类型。 - my.metric.name:要查询的目标时间序列指标名称。
- {tagA=*}、{tagB=valueB,tagC=valueC}:标签过滤规则,多组过滤为AND关系:
{tagA=*}:匹配tagA为任意值的序列(*是通配符){tagB=valueB,tagC=valueC}:同时匹配tagB=valueB且tagC=valueC的序列
核心疑问解答
- 冒号分隔元素的固定顺序
Bosun查询语法的固定结构为:
[聚合函数]:[降采样规则]:[转换函数(可选)]:[指标名称][标签过滤组...]
转换函数是可选项,若无需对指标做转换(比如gauge类型指标),可省略该部分,例如:avg:1m-last:my.gauge.metric{tag=value}
- {}的具体用法
- 函数参数传递:如
rate{counter},用于给转换/聚合函数指定参数,明确指标类型或函数行为。 - 标签过滤:用于筛选目标时间序列,格式为
{tagKey=tagValue, tagKey2=tagValue2},多个标签间为AND关系;支持多种匹配规则:- 通配符:
*匹配任意值,如{tag=*} - 取反:
!排除指定值,如{tag!=value} - 正则匹配:
~后跟正则表达式,如{tag=~^prod.*}
- 通配符:
- Bosun支持多组标签过滤,多组间为AND关系,可拆分复杂过滤条件,提升可读性。
内容的提问来源于stack exchange,提问作者Eric
相关产品推荐
相关产品推荐

