我想将StepCounter从基于秒的速率转换为每分钟速率(我们有一个监视器,每分钟运行一次)。
当我尝试将轮询从每秒1次切换为每60秒一次时,它将获取增量值并将其除以60,然后创建每秒的速率。
有没有人知道如何通过Netflix Servo包公开JMX值来替代60s度量?有CounterToRateMetricTransform,但没有关于如何将计数器度量转换为速率的示例。
发布于 2017-12-07 16:50:10
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,而不是更改报告
https://stackoverflow.com/questions/38704122
复制相似问题