我想在一个请求中从石墨的不同计数器获取数据,例如:-
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 数据,但我不想要。
您本身不能使用正则表达式,但您可以使用 Graphite Render URL API 中提供的一些类似(概念上和格式上)的匹配技术。有几种方法可以在目标的“桶”(即点之间)内“匹配”。
星号 * 匹配
星号可用于匹配任何零个或多个字符。它可用于替换整个桶 (
site.*.test
) 或桶内 (site.w*t.test
)。这是一个例子:
site.testing_server_2.requests_*.count
这将匹配 site.testing_server_2.requests_failed.count、site.testing_server_2.requests_success.count、site.testing_server_2.requests_blah123.count 等等。
字符范围[a-z0-9]匹配
字符范围匹配用于匹配目标存储桶中的单个字符 (
site.w[0-9]t.test
),并指定为范围或列表。例如:
site.testing_server_[0-4].requests_failed.count
这将匹配 site.testing_server_0.requests_failed.count、site.testing_server_1.requests_failed.count、site.testing_server_2.requests_failed.count 等。
值列表(组捕获){废话,测试,...}匹配
值列表匹配可用于匹配目标存储桶的指定部分中值列表中的任何内容。
site.testing_server_2.{triggers_unknown,requests_failed,core_network_bad_soap}.count
这将匹配 site.testing_server_2.triggers_unknown.count、site.testing_server_2.requests_failed.count 和 site.testing_server_2.core_network_bad_soap.count。但没有别的,所以 site.testing_server_2.module_xyz_abc.count 不匹配。
在不知道所有存储桶值的情况下,很难对该方法进行手术(可能需要结合匹配选项),因此我建议仅使用值列表匹配。这应该允许您在一个有点长的请求中获取所有值。例如(请记住,您需要包含所有价值观):
summarize(site.testing_server_2.{triggers_unknown,requests_failed,core_network_bad_soap}.count,'1hour','sum')&format=json&from=-24hour
有关更多信息,请参阅石墨路径和通配符
可能有点晚了,但我想说选择的答案用 () 和 | 更好运营商。
因此, 而不是使用 总结(site.testing_server_2.{triggers_unknown,requests_failed,core_network_bad_soap}.count,'1hour','sum')&format=json&from=-24hour
summarize(site.testing_server_2.(triggers_unknown|requests_failed|core_network_bad_soap).count,'1hour','sum')&format=json&from=-24hour 对于广泛兼容的正则表达式概念可能会更好
另外,通过后面的方法我们可以捕获该值以供以后使用,例如aliasSub等