1

我想将 StepCounter 从基于秒的速率转换为每分钟的速率(我们有一个每分钟运行的监视器)。

当我尝试将它们从每秒 1 次轮询切换到每 60 秒一次时,它将取而代之的是,将增量值除以 60 并创建每秒的速率。

任何人都知道如何通过 Netflix Servo 包公开 JMX 值来代替 60s 度量?有 CounterToRateMetricTransform 但没有关于如何将 Counter 指标转换为 Rate 的示例。

4

1 回答 1

0

StepCounter 是一个单独的指标,但 CounterToRateMetricTransform 应用于 MetricObserver,并返回一个新的观察者,该观察者观察所有转换为速率的计数器

例如,创建一个观察者,将计数器作为速率进行观察,并将其添加到 pollrunnable 任务中

MetricObserver observer = new CloudWatchMetricObserver(...) // existing observer
MetricObserver transformedObserver = new CounterToRateMetricTransform(observer, 60, TimeUnit.SECONDS);
PollRunnable task = new PollRunnable(..., Immutable.listOf(transformedObserver));

不幸的是,这个变换也返回每秒的速率(参见 CounterToRateMetricTransform.computeRate)

据我所知,无法通过现有库获得每分钟速率,您需要根据您的用例实现自己的指标(如 StepCounter)或在观察者上实现自己的转换(如 CounterToRateMetricTransform) .

最好的方法可能是在您的监控系统中将每秒速率乘以 60,而不是更改报告

于 2017-12-07T08:50:09.943 回答