2013-08-08 1 views
1

여러 가지 수와 비율을 추적하는 맞춤 플러그인을 만들려고합니다. 저는 Ruby와 NewRelic에 익숙하지 않으므로 wikimedia 플러그인을 가져 와서 해킹을하고 있습니다. 그래서 제가 시도하고있는 것을 간소화 된 버전으로 배웠습니다. 나는 빨리 내 속도 값이 상당히 이해할 수없는 것을 발견했다플러그인에 여러 EpochCounter가 있음

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: 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을 사용할 수 있습니다 - 나는 LAST_VALUE 및 LAST_TIME 각 연속적인 금리 CALC 사용하고 있다고 빨리보고? 그렇다면 어떻게? 더 좋은 방법이 있습니까?

감사합니다.

- 마크

+0

@Marc 당신은 당신이 뭘 하려는지에 대한 자세한 정보를 제공 할 수 있습니까? 이론적으로 플러그인에서 캡처하려고하는 이러한 다양한 속도에 대한 새로운 카운터를 만드는 것이 적절할 수 있지만 실제로 데이터로 무엇을하고 있는지에 달려 있습니다. – Steven

+0

NewRelic에서 약 6 개의 카운터를 수집하고 (이 시점에서) 카운트와 변화율을 저장하려고합니다. EpochCounter가 코드에서 마지막 값/타임 스탬프를 유지할 필요없이 속도 계산 부분의 마술을 수행하기를 바랬습니다. – Omeganon

답변

0

는 알았어요. 어리석은 copy-pasta 실수지만, 결과적으로 루비 모듈과 객체에 대해 많은 것을 배웠다. = 동일한 변수/네임 스페이스를 재사용하고 있었다.

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))