是否可以在Grafana中汇总具有不同嵌套深度的数据?

时间:2017-09-15 22:50:58

标签: graphite grafana

我在Grafana有不同嵌套深度的数据。它看起来像这样(嵌套深度因消息类型而异):

foo.<host>.type.<type-id>
foo.<host>.type.<type-id>.<subtype-id>
foo.<host>.type.<type-id>.<subtype-id>.<more-nesting>
...

<host>字段可以是发送数据的服务器的IP,<type-id>是它处理的消息类型。有很多消息类型,但对于可视化,我只对在所有主机上聚合的第一级<type-id>感兴趣。

例如,如果我有这些数据:

foo.ip1.type.type1 = 3
foo.ip1.type.type2.subtype1 = 5
foo.ip2.type.type1 = 4
foo.ip2.type.type2.subtype1 = 9
foo.ip2.type.type2.subtype2 = 13

我宁愿这样看:

foo.*.type.type1 = 7 (3+4)
foo.*.type.type2 = 27 (5+9+13)

然后,生成一个图表会更容易,您可以在其中查看哪种类型的消息最常见。

我还没有找到在格拉法纳表达这种方式的方法。我看到的唯一选项是通过为每种消息类型手动创建查询来创建图形。如果只有少数类型可以,但在我的例子中,类型的数量非常多,甚至更糟,它们可以随时间变化。添加新消息类型后,我希望看到它们而不必更改图形。

Grafana是否支持以这种方式聚合数据?它是否可以可视化由一个节点聚合的数据,同时总结节点之后的所有内容(如Unix --max-depth命令中的du选项)?

我对Grafana不是很有经验,但我开始相信这个功能不受支持。不确定Grafana是否允许预处理数据,但是数据是否可以转换为

foo.ip1.type.type1 = 3
foo.ip1.type.type2_subtype1 = 5
foo.ip2.type.type1 = 4
foo.ip2.type.type2_subtype1 = 9
foo.ip2.type.type2_subtype2 = 13

它也是有效的解决方法,因为我的数据中的子类型数量非常低(通常只有一个子类型)。

1 个答案:

答案 0 :(得分:0)

我认为groupByNode函数可能对您有用。做类似的事情:

groupByNode(foo.ip1.type.*.*,3,"sumSeries")

您需要为每个嵌套级别重复此操作。希望有所帮助。

此处提供更多信息: http://graphite.readthedocs.io/en/latest/functions.html#graphite.render.functions.groupByNode

如果您想以您在示例中提到的方式进行操作,可以使用aliasSub