Несколько EpochCounter's в плагине
Я пытаюсь создать собственный плагин для отслеживания количества и показателей различных вещей. Я новичок в Ruby и NewRelic, поэтому я беру плагин Викимедиа и взламываю его, чтобы узнать, так как он сделал упрощенную версию того, что я пытаюсь. В моей настройке у меня есть это -
def setup_metrics
@doc_creation_rate = NewRelic::Processor::EpochCounter.new
@consumer_online_rate = NewRelic::Processor::EpochCounter.new
@consumer_offline_rate = NewRelic::Processor::EpochCounter.new
@event_rate = NewRelic::Processor::EpochCounter.new
@task_queue_rate = NewRelic::Processor::EpochCounter.new
end
Я быстро обнаружил, что мои значения скорости довольно непонятны, поэтому я добавил отладочный код в процессор, чтобы посмотреть, что он делает. Я быстро увидел, что last_value и last_time используются каждым последующим вычислением ставки -
last value: 0.0, last time: Thu Aug 08 18:03:28 -0500 2013, cur value: 33.0, cur time; Thu Aug 08 18:04:27 -0500 2013, rate: 0.553659969226572
last value: 33.0, last time: Thu Aug 08 18:04:27 -0500 2013, cur value: 9.0, cur time; Thu Aug 08 18:04:27 -0500 2013, rate: -172661.870503597
last value: 9.0, last time: Thu Aug 08 18:04:27 -0500 2013, cur value: 9.0, cur time; Thu Aug 08 18:04:27 -0500 2013, rate: 0.0
last value: 9.0, last time: Thu Aug 08 18:04:27 -0500 2013, cur value: 0.0, cur time; Thu Aug 08 18:04:27 -0500 2013, rate: -94736.8421052632
last value: 0.0, last time: Thu Aug 08 18:04:27 -0500 2013, cur value: 4012.0, cur time; Thu Aug 08 18:04:27 -0500 2013, rate: 62687500.0
last value: 4012.0, last time: Thu Aug 08 18:04:27 -0500 2013, cur value: 0.0, cur time; Thu Aug 08 18:04:27 -0500 2013, rate: -42680851.0638298
Можно ли использовать EpochCounter так, как я пытаюсь его использовать? Если так, то как? Есть ли способ лучше?
Спасибо!
- Марк
1 ответ
Понял. Глупая ошибка копирования-вставки, но в результате я многое узнал о модулях и объектах ruby =) Я снова использовал одну и ту же переменную / пространство имен.
report_metric("Streaming/Rate/Online Consumers", "consumers/sec", @event_rate.process(total_consumers_online))
report_metric("Streaming/Rate/Offline Consumers", "consumers/sec", @event_rate.process(total_consumers_offline))
report_metric("Streaming/Rate/Events", "events/sec", @event_rate.process(total_events))
должно было --
report_metric("Streaming/Rate/Online Consumers", "consumers/sec", @consumer_online_rate.process(total_consumers_online))
report_metric("Streaming/Rate/Offline Consumers", "consumers/sec", @consumer_offline_rate.process(total_consumers_offline))
report_metric("Streaming/Rate/Events", "events/sec", @event_rate.process(total_events))