我在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
它也是有效的解决方法,因为我的数据中的子类型数量非常低(通常只有一个子类型)。
答案 0 :(得分:0)
我认为groupByNode函数可能对您有用。做类似的事情:
groupByNode(foo.ip1.type.*.*,3,"sumSeries")
您需要为每个嵌套级别重复此操作。希望有所帮助。
此处提供更多信息: http://graphite.readthedocs.io/en/latest/functions.html#graphite.render.functions.groupByNode
如果您想以您在示例中提到的方式进行操作,可以使用aliasSub