Java / Scala度量标准 - Codahale - Cluster / Mulitnode&石墨记者

时间:2014-11-23 10:07:13

标签: java scala metrics graphite codahale-metrics

在Java或Scala代码中使用CodaHale Metrics时,群集环境向Graphite报告时会遇到什么问题?

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

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

计数器是否累计?

定时器是累积的吗?

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

3 个答案:

答案 0 :(得分:1)

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

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

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

答案 1 :(得分:1)

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

将IP地址添加到度量标准名称可以计算不同服务器的相对速度。如果它们的类型相同,而某些类型的速度是其他类型的4倍,那么您就会遇到问题。 (我已经看过这个了)。如上所述,添加像IP这样的暂时性值会产生死亡度量问题。如果你关心历史,你可以创建一个特殊的知识产权,用于旧的'并在那里收集死的指标,然后删除死的条目。实际上,任何计时器周期内的机器数量都是非常有用的指标。​​

答案 2 :(得分:1)

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

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