【问题标题】:graphite, use regular expressions to select the target, or an alternative石墨,使用正则表达式来选择目标,或替代
【发布时间】:2013-08-14 15:05:31
【问题描述】:

我需要向石墨查询具有几个不同目标的数据; 目前我为每个目标做一个 http 查询。例如:

http://graphite.example.com/render/?format=json&until=now&from=-1min&target=servers.srv231.solr.hits
http://graphite.example.com/render/?format=json&until=now&from=-1min&target=servers.srv325.solr.hits

有没有办法在一个查询中获得两个结果? 我可以这样做:

http://graphite.example.com/render/?format=json&until=now&from=-1min&target=servers.srv*.solr.hits

但我会得到很多我不感兴趣的其他数据。

我尝试过像这样使用正则表达式,但它不起作用:

http://graphite.example.com/render/?format=json&until=now&from=-1min&target=servers.srv(231|325).solr.hits

在文档中,他们没有提到正则表达式或通配符, 但他们在示例中使用通配符。 http://graphite.readthedocs.org/en/0.9.10/render_api.html

有没有办法实现我的目标?

【问题讨论】:

  • 我刚刚看到target参数可以重复多次,所以我可以做到graphite.example.com/render/…。没关系对我来说。但是,是否仍然可以使用正则表达式或更简洁的方式?

标签: graphite


【解决方案1】:

Graphite 使用 glob 而非正则表达式进行匹配。所以你的查询是:

http://graphite.example.com/render/?format=json&until=now&from=-1min&target=servers.srv{231,325}.solr.hits

【讨论】:

  • 它有效,谢谢!有关于 glob 模式的参考吗?这个en.wikipedia.org/wiki/Glob_(programming) 不包括方括号 {}。这个有:linux.die.net/Linux-CLI/x11655.htm 或者可能没有标准的?我没有找到关于石墨 glob 的文档。
  • 由于石墨是一个 python 应用程序,我猜它使用 python glob 模块,这与 linux.die.net 的your link 几乎相同,看起来就像我以前用过的石墨一样。
  • python glob 模块的链接没有提到大括号 {}。我看到在 python glob bugs.python.org/issue9584 中有一个支持大括号的补丁,但它似乎不在当前的实现中,而且我没有在 python glob 模块中找到它。 ??
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-10-27
  • 1970-01-01
  • 1970-01-01
  • 2019-05-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多