使用 yammer 指标计时器获得一分钟的速率

getting a one minute rate using yammer metrics timer

我对 java 和指标还很陌生。 有人可以帮助我理解下面的问题,也许还可以为我解决 dropwizard 和 yammer 指标之间的情况 (例如,如果我在 google 中键入 yammer.metrics,所有文档都指向 dropwizard)?

我想使用 yammer 指标实现计时器,但是,我发现在线示例令人困惑。

例如,使用 yammer 指标我可以执行以下操作:

import com.yammer.metrics.Metrics;
import com.yammer.metrics.core.Meter;
import com.yammer.metrics.core.Timer;

...

public static Timer responses = Metrics.defaultRegistry().newTimer(myClass.class, "timer-name");

但是,完成后我不确定如何使用计时器,因为我能找到的所有文档都提供了以下(dropwizard)示例:

final Timer.Context context = responses.time();
    try {
        // intense code;
        return "OK";
    } finally {
        context.stop();
    }

这不起作用,因为 Yammer 计时器不支持上下文,只有 dropwizard 计时器支持。为了使上面的代码正常工作,我需要执行以下操作;

import com.codahale.metrics.*;
import java.util.concurrent.TimeUnit;

private final static MetricRegistry metrics = new MetricRegistry();
private final static Timer responses = metrics.timer(name(myClass.class, "timer-name"));

现在我有了一个支持上下文的计时器。

我们所有的代码都导入 com.yammer.metrics,如果可能的话我想继续使用它。那么我如何记录事件,例如,我可以使用 yammer.Metrics?

获得 responses.oneMinuteRate()

com.yammer.metrics是老图书馆。

com.yammer.metrics:metrics-core:2.2.0 (up to 2012 year)

他们在 2012 年的重大举措是:

com.codahale.metrics:metrics-core:3.0.* (2013-2014 year)

所有打包都重命名为com.codahale.metrics

然后他们再次将工件移动到:

io.dropwizard.metrics:metrics-core:3.1.*

com.yammer.metrics 现在不支持,并且不向后兼容新版本