【问题标题】:Dropwizard metrics - How to reset counters after reporting intervalDropwizard 指标 - 如何在报告间隔后重置计数器
【发布时间】:2016-06-30 20:20:53
【问题描述】:

我正在使用 codahale 指标(现在是 dropwizard 指标)来监控系统中发生的一些“事件”。我正在使用counters 指标来跟踪“事件”发生的次数。

我检查了记者为我的计数器指标打印的值,该值似乎在不断增加(并且从未下降)。这似乎合乎逻辑,因为每当我的“事件”发生时,我总是使用 metrics.inc() 函数。

What I really want is to get count of my 'event' happening between two reporting times,为此我需要在每次报告我的指标时重置我的计数器,但我在计数器指标中找不到任何选项来执行此操作。是否有 codahale 用户遵循的方法或一般做法来生成此类指标?

当前行为(报告时间 10 秒):

00:00:00 0
00:00:10 2 // event happened twice
00:00:20 2 // event did not occur
00:00:30 5 // event occured three times`

预期指标:

00:00:00 0
00:00:10 2
00:00:20 0
00:00:30 3

【问题讨论】:

    标签: metrics codahale-metrics


    【解决方案1】:

    总结或计算每个任意间隔的计数(总数):

    hitcount(perSecond(your.count), '1day')
    

    Afaik 它在里面做了所有的黑魔法。包括但不限于summarize(scaleToSeconds(nonNegativeDerivative(your.count),1), '1day') 并且还应该根据落入所选聚合间隔的碳保留期(一个或多个)进行缩放。

    【讨论】:

    • 你能解释一下这个语法是什么吗?你用的是伪代码吗?我如何将您的答案实际纳入我的代码中?
    • @scottg489 此语法用于石墨查询功能,例如 hitcount:graphite.readthedocs.io/en/stable/…。所以它需要收集/报告指标到底层石墨服务,然后你可以用这种方式查询它
    • @scottg489 但这些天我建议使用 Prometheus 作为指标服务器而不是 Graphite。
    【解决方案2】:

    我认为counter 不是您案例的正确指标。考虑使用meter,它将为您提供每个时间间隔的费率:

    while(...) {
        int stuffProcesssed = doStuff();
        meter.mark(stuffProcesssed);
    }
    

    【讨论】:

    • 虽然 mark.meter 为您提供最近的分钟费率和总费率(或从应用程序启动)afaik,但无法选择任意间隔。
    猜你喜欢
    • 1970-01-01
    • 2017-04-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-03
    相关资源
    最近更新 更多