如何在 graphite/grafana 中查询 "all but one"

How to query for "all but one" in graphite/grafana

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

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

可以吗?怎么样?

阅读 Graphite URL API docs section about wildcard paths 后,我认为没有任何 "all but one" 目标查询。但是,如果您没有很多机器,则可以列出所有机器,但查询中排除的机器除外:

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

或使用字符范围:

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

听起来你想过滤一个 seriesList,你可以使用 '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