CounterToRateMetricTransform

CounterToRateMetricTransform

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

当我尝试将轮询从每秒1切换为每60秒一次时,它将取增量值除以60并创建每秒速率。

任何人都有一个想法,如何通过Netflix Servo软件包公开JMX值来进行60s度量?有CounterToRateMetricTransform,但没有有关如何将“计数器”指标转换为“费率”的示例。

最佳答案

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

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

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,而不是更改报告

08-17 04:53