如何在石墨/格拉法纳中查询“除了一个”

Posted

技术标签:

【中文标题】如何在石墨/格拉法纳中查询“除了一个”【英文标题】:How to query for "all but one" in graphite/grafana 【发布时间】:2016-03-16 19:29:28 【问题描述】:

我正在使用 grafana,我想创建一个面板,在其中将来自一个应用服务器的数据与除该应用服务器之外的所有其他应用服务器的平均值进行比较。比如:

apps.machine1.someMetric
averageSeries(apps.*.not(machine1).someMetric)

可以吗?怎么样?

【问题讨论】:

【参考方案1】:

阅读Graphite URL API docs section about wildcard paths 后,我认为没有任何“除了一个”之外的目标查询。但是,如果您没有很多机器,您可以在查询中列出所有机器,但排除的机器除外:

apps.machine1.someMetric
averageSeries(apps.machine2,machine3,machine4,machine5.someMetric)

或者使用字符范围:

apps.machine1.someMetric
averageSeries(apps.machine[2-5].someMetric)

【讨论】:

【参考方案2】:

听起来你想过滤一个系列列表,你可以使用 'grep' 函数或专门使用 'exclude' 函数来完成

exclude(apps.machine*.someMetric,"machine1")

并将其传递给 averageSeries

averageSeries(exclude(apps.machine*.someMetric,"machine1"))

您可以在此处阅读有关这些功能的更多信息: http://graphite.readthedocs.io/en/latest/functions.html#graphite.render.functions.exclude

【讨论】:

这应该是公认的答案,因为它会过滤掉您不想包含的任何内容。得到我的投票:) 我没有看到您可以在 pattern 参数中使用哪种类型的正则表达式的参考 exclude,但要排除多个术语,您可以使用类似:exclude(seriesList, "first|second")跨度>

以上是关于如何在石墨/格拉法纳中查询“除了一个”的主要内容,如果未能解决你的问题,请参考以下文章

如何在 aliasByNode() 函数中获取 Grafana 石墨查询中“*”节点的节点名称

如何在石墨烯烧瓶中进行多个查询过滤器?

如何在石墨烯中将函数作为查询结果返回?

如何在 python 石墨烯中处理带参数的查询

监控实战Prometheus+Grafana

如何在 grafana 世界地图面板中显示来自石墨的坐标