? ?任何数据库系统的关键功能是使用某种形式的过滤来获取完整数据集的子集.OpenTsdb从版本1. x开始提供了过滤功能,并从2.2开始具有了扩展功能。过滤器目前在标签值上运行,这意味着在拉取数据时,任意指标和标签关键都必须按照与数据库中完全相同的出现方式来进行指定。
示例数据
? ?由于每个过滤器都会在下面进行说明,都会用到下述数据集。它由单一指标组成,定义在各个标签上的多个时间序列。作为例子,在T1处仅给出一个数据点。
TS # 度规 标签 Value@T1 1 sys.cpu.system dc=dal主机=web01 3. 2 sys.cpu.system dc=dal主机=web02 2 3. sys.cpu.system dc=dal主机=web03 10 4 sys.cpu.system 主机=web01 1 5 sys.cpu.system 主机==jdoe web01所有者 4 6 sys.cpu.system dc=主机=web01松懈 8 7 sys.cpu.system dc=主机=web02松懈 4分组
? ?分组,即集团,是使用所需的聚合函数和过滤器将多个时间序列组合成一个的过程。默认情况下,OpenTSDB按指标对所有内容进行分组,以便如果查询返回10个时间序列且使用和聚合器,则所有10个序列将随着时间的推移添加到一个值中。有关时间序列如何聚合合并的详细信息,请参阅聚合。
? ?为了避免在没有任何聚合的情况下对每个底层时间序列进行分组和获取,请使用版本2.2中包含的聚合器。或者,可以禁用OpenTSDB2.2以及更高版本基于每个过滤器的分组。请参阅API文档了解如何操作。
OpenTSDB 1。x - 2.1
? ?在最初的OpenTSDB版本中,最多只有两种类型的过滤器可用,并且它们被隐式配置用于分组。允许的两个运算符如下:
-
<李> *:星号(或通配符,通配符)将为检测到的每个唯一标签值返回单独的结果,例如,如果标签键主机有web01与web02这组值,将会有两个组发出。一组为web01,另一组为web02。李>
<李> |:管道(或者literal_or)仅为指定的准确的标签值返回单独的结果。也就是说,它只会匹配具有给定标签值的时间序列和聚合每个匹配成组。李>
? ?多个过滤器可以提供给一个查询,过滤器之间使用,连接,返回同时满足条件的结果。这些过滤器在2. x以及更高版本中可用。
示例
? ?下面示例使用v1版本的HTTP URI栈,聚合器组成的参数m,冒号,紧接着指标以及花括弧里面通过等号分隔开的标签过滤器。
? ?例1:http://host: 4242/q ?开始=1 h-ago&m=总和:sys.cpu.system{主机=web01}
? ?在这种情况下,聚合标签集将为空,因为时间序列4和5具有与整个集合不相同的标签。
? ?新API版<强>实际运行强>情况:(与文档描述不一致)
? ?查询条件:
<代码> { “开始”:“23 h-ago”, “结束”:“10 h-ago”, “查询”:[ { “指标”:“sys.cpu.system”, “速度”:“false”, “聚合”:“求和”, "标签":{ “主机”:“web01” } } ] }代码>
? ?查询结果:
<代码> ( { “指标”:“sys.cpu.system”, " dps ": { “1521689251”:8 “1521689113”:3, “1521689167”:1、 “1521689211”:4 }, “aggregateTags”:( “直流” ), "标签":{ “老板”:“jdoe”, “主机”:“web01” } } )代码>
? ?例2:http://host: 4242/q ?开始=1 h-ago&m=总和:sys.cpu.system{主机=web01, dc=木豆}
包含的时间序列# 标签 聚合标签 Value@T1 1 dc=dal主机=web01 3. ? ?新API版<强>实际运行强>情况:(与文档描述一致)
? ?查询条件:
<代码> { “开始”:“1 h-ago”, “查询”:[ { “指标”:“sys.cpu.system”, “聚合”:“求和”, "标签":{ “主机”:“web01”, “直流”:“木豆” } } ] }OpenTsdb官方文档——查询过滤器