【问题标题】:Is it possible to aggregate data with varying nesting depth in Grafana?是否可以在 Grafana 中聚合具有不同嵌套深度的数据?
【发布时间】:2018-02-25 03:59:47
【问题描述】:

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

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

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

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

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 中表达这一点的方法。我看到的唯一选择是通过为每种消息类型手动创建查询来创建图表。如果只有少数类型就可以了,但在我的示例中,类型的数量非常多,甚至更糟,它们会随着时间而改变。添加新消息类型时,我希望无需更改图表即可查看它们。

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


我对 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

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

【问题讨论】:

    标签: graphite grafana


    【解决方案1】:

    我认为 groupByNode 函数可能对您有用。通过执行以下操作:

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

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

    更多信息可在此处获得: http://graphite.readthedocs.io/en/latest/functions.html#graphite.render.functions.groupByNode

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-11-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-10
      • 2023-03-28
      • 1970-01-01
      相关资源
      最近更新 更多