我想在一个请求中从石墨的不同计数器获取数据,例如:
summarize(site.testing_server_2.triggers_unknown.count,'1hour','sum')&format=json
summarize(site.testing_server_2.requests_failed.count,'1hour','sum')&format=json
summarize(site.testing_server_2.core_network_bad_soap.count,'1hour','sum')&format=json
字符串
等等... 20多个。
但我不想拿
summarize(site.testing_server_2.module_xyz_abc.count,'1hour','sum')&format=json
型
在那个请求中我怎么能这样做呢?
这就是我所尝试的:
summarize(site.testing_server_2.*.count,'1hour','sum')&format=json&from=-24hour
型
它也会获取'module_xyz_abc'的JSON数据,但我不想要。
2条答案
按热度按时间vcirk6k61#
您不能使用正则表达式本身,但可以使用Graphite Render URL API中提供的一些类似(在概念和格式上)的匹配技术。有几种方法可以在目标的“桶”内(即点之间)进行“匹配”。
目标匹配
星号 * 相符
星号可用于比对ANY(零或多个)字符。它可用于取代整个储存区(
site.*.test
)或储存区(site.w*t.test
)内的字符。以下是一个范例:字符串
这将匹配站点.测试服务器2.请求_* 失败 .计数,站点.测试服务器2.请求_ 成功 .计数,站点.测试服务器2.请求_ blah 123 *.计数等.
字符范围[a-z 0 -9]匹配
字符范围匹配用于匹配目标存储桶中的单个字符(
site.w[0-9]t.test
),并指定为范围或列表。例如:型
这将在以下站点上匹配:站点.测试服务器0.请求失败.计数,站点.测试服务器1.请求失败.计数,站点.测试服务器2.请求失败.计数,等等.
值列表(组捕获){blah,test,...}匹配
值列表匹配项可用于匹配值列表中的任何内容,即目标存储桶的指定部分。
型
这将匹配站点.testing_server_2.triggers_unknown.count,站点.testing_server_2.requests_failed.count与站点.testing_server_2.core_network_bad_soap.count,但除此之外别无其他内容,因此站点.testing_server_2.module_xyz_abc.count将不匹配.
回答
在不知道所有桶值的情况下,很难使用这种方法(也许是匹配选项的组合),所以我建议使用值列表匹配。这应该允许您在一个有点长的请求中获得所有值。例如(请记住,您需要包括所有值):
型
有关详细信息,请参见Graphite路径和通配符
rxztt3cl2#
这篇文章可能有点晚,但我想说,使用{}的答案可以通过()和|运算符**,因为后者是兼容性更广的正则表达式。
因此,不使用
{triggers_unknown,requests_failed,core_network_bad_soap}
,尝试
(triggers_unknown|requests_failed|core_network_bad_soap)
个。
使用后一种方法,我们可以使用aliasSub等命令**捕获()**内的值,并且它与正则表达式概念具有广泛的兼容性。