我如何在Grafana中基于多个变量组合序列

问题描述 投票:0回答:1

在我的Graphite数据库上,我有一个看起来像这样的系列:

server.[server-name].app.[app-name].memory.used
server.[server-name].app.[app-name].memory.committed

例如:

server.backend.app.apiserver.memory.used
server.backend.app.apiserver.memory.committed
server.backend.app.database.memory.used
server.backend.app.database.memory.committed
server.frontend.app.webserver.memory.used
server.frontend.app.webserver.memory.committed

[使用Graphana,我想绘制一个图,其中我可以根据服务器或应用程序名称过滤的模板值显示多个应用程序上的可用内存量。我还希望时间序列以服务器名称和应用程序名称作为别名。

例如,在上面的示例中,我想在单个图形上看到3个系列:

Series 1, free memory for backend.apiserver
Series 2, free memory for backend.database
Series 3, free memory for frontend.webserver

我可以通过使用诸如:之类的功能在模板中选择单个服务器和单个应用程序来做到这一点。

Series A(hidden ) : server.$server.app.$app.memory.used
Series B(visible) : diffSeries(server.$server.app.$app.memory.committed), #A)

但是,如果希望该图一次显示多个服务器和多个应用程序,则系列B只是减去系列A中所有值。

一个简单的答案是将“空闲”内存数据显式发送到Graphite,作为每个应用程序上的第三个数据点,但是我想知道Grafana仪表板是否具有可以在不破坏现有数据的情况下实现相同结果的功能我有收集脚本。

在我的Graphite数据库上,我有如下系列:server。[服务器名称] .app。[app-名称] .memory.used服务器。[server-name] .app。[app-name]。内存已提交,例如:server.backend.app ....

graphite grafana
1个回答
0
投票

取决于石墨版本,可以使用reduceSeries函数完成(doc具有类似示例)。>>

reduceSeries(
    mapSeries($server.app.$app.memory.*, 0, 2),
    "diffSeries", 4,"commited", "used"
)
© www.soinside.com 2019 - 2024. All rights reserved.