我的服务器将指标发送mem_total
到mem_free
Graphite,但我想mem_used
在我的仪表板上显示。我目前正在通过以下方式解决问题:
offset(scale(servers.foo.*.mem_free,-1),30823052)
其中30823052
k 是总内存。
我想知道是否有一种方法可以利用石墨mem_used
来为我mem_total
计算mem_free
,这样我就可以避免在查询中对总内存量进行硬编码?
我最近一直在使用 Grafana 进行一些测试,并找到了部分解决方案,即:
A) servers.foo.server1.mem_total (mark invisible)
B) servers.foo.server1.mem_free (mark invisible)
C) diffSeries(#A, #B)
但是,此解决方案只有在没有通配符的情况下才有效 - 我真的希望能够使用通配符,而不是对每个服务器都执行这种操作。
我正在查看可用的功能,groupByNode似乎是我正在寻找的解决方案的一部分,但我还没有找到用它来做我想做的事情的方法。
答案1
您可以使用mapSeries
和reduceSeries
。
reduceSeries(mapSeries(servers.foo.*.*,2),"diffSeries",3,"mem_total","mem_free")