在Netflix伺服中制定分钟速率指标

时间:2016-08-01 16:50:40

标签: java metrics netflix servo

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

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

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

1 个答案:

答案 0 :(得分:0)

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

e.g。创建一个观察者,将计数器视为速率并将其添加到一个可轮询的任务

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