1

在 Java 或 Scala 中使用 CodaHale Metrics 对集群环境进行编码时,向 Graphite 报告时有哪些问题?

如果我的应用程序有多个实例正在运行并创建不同的指标,Graphite 可以应对 - 即报告是累积的吗?

例如,如果我有 AppInstance A 和 B。如果 B 有一个仪表报告 1.2,另一个报告 1.3 - Graphite 的结果是什么?会是平均值吗?或者一个会覆盖另一个。

计数器是累积的吗?

计时器是累积的吗?

或者我应该以某种方式给每个实例一些标签来区分不同的 JVM 实例?

4

3 回答 3

1

您可以在aggreagtion-rules.conf中找到石墨在聚合期间收到多个点的情况下默认行为。我认为石墨默认是在聚合期间取最后一个接收点。

如果您可能对流程实例的度量细节感兴趣(并且您可能会在某个时候),您应该以某种方式标记实例并在度量路径中使用该标记。Graphite 对于在请求时进行聚合非常有用,并且找到一种聚合个人指标(总和、平均值、最大值或更复杂)的方法,你很难。

如果您有一个非常通用的环境,其中实例一直在变化(从而创建许多瞬态指标),可能会让您不愿意通过发送方进程获得不同的指标。否则,只需使用 ip+pid 就可以了。

于 2014-11-23T18:13:24.823 回答
1

我为我知道同时进入的每组指标添加了一个“计数”字段。然后我将包括计数在内的所有值汇总为“总和”。这让我可以找到一组中所有指标的平均值、总和和计数。(是的,石墨的默认设置是在一段时间内采集最近的样本。您需要使用碳聚合器前端。)

将 IP 地址添加到指标名称后,您可以计算不同服务器的相对速度。如果它们都是相同的类型,并且有些是其他类型的 4 倍,那么您就有问题了。(我见过这个)。如上所述,添加像 IP 这样的临时值会产生死指标问题。如果你关心历史,你可以为“旧”创建一个特殊的 IP 并在那里收集死指标,然后删除死条目。事实上,任何时间段的机器数量都是一个非常有用的指标。

于 2014-11-23T23:28:10.700 回答
1

我们发现处理这个问题的最简单方法是使用每个实例的指标。通过这种方式,您可以看到每个实例如何独立运行。如果您想要集群的整体视图,还可以通过在指标名称中使用通配符来轻松查看一组指标的sumSeries

这种方法需要注意的是,您要跟踪石墨实例中的更多指标,因此如果您使用托管解决方案,这确实会花费更多。

于 2014-11-25T21:51:13.943 回答