2016-08-29 8 views
0

Codahale 메트릭을 사용하면 최근 24 시간 동안 계산할 수 있습니다. Codahale 메트릭 카운터가 매일 재설정되고 카운트됩니다.

는 다음과 같은 보고서를 생성합니다 :

요청 개수 :

lastSec lastMin lastHour today 
======================================= 
1   5   22  45 

응답 개수 :

lastSec lastMin lastHour today 
======================================= 
1   5   22  45 

마지막 초, 분, 다섯 속도를 얻을 수 Meter methods있다. 하지만 지난 1 시간 동안 얻는 방법과 오늘 계산합니까? 다음은

시도 : 그것은 내부의 모든 마술을한다 AFAIK

hitcount(perSecond(AProcessor.a-req-count.count), '1hour') 

hitcount(perSecond(AProcessor.a-res-count.count), '1day') 

:

public class ReportMetrics { 

    static final MetricRegistry metrics = new MetricRegistry(); 
    static final Counter aReqCount = ReportMetrics.metrics.counter(name(AProcessor.class, "a-req-count")); 
    static final Counter aResCount = ReportMetrics.metrics.counter(name(AProcessor.class, "a-res-count")); 

    private static final AProcessor aProcessor = new AProcessor(); 

    public static void main(String[] args) { 
     startReport(); 

     for(int i=0; i<=5; i++){ 
      //add 
      aProcessor.addJob(); 
      wait5Seconds();   

      //take 
      arProcessor.takeJob(); 
      wait5Seconds();   
     } 

    } 

    static void startReport() { 
      ConsoleReporter reporter = ConsoleReporter.forRegistry(metrics) 
       .convertRatesTo(TimeUnit.SECONDS) 
       .convertDurationsTo(TimeUnit.MILLISECONDS) 
       .build(); 
      reporter.start(1, TimeUnit.SECONDS); 
     } 

    static void wait5Seconds() { 
      try { 
       Thread.sleep(5*1000); 
      } 
      catch(InterruptedException e) {} 
     } 

    public long requestCount(){ 
     ReportMetrics.metrics.aReqCount.getCount(); 
    } 

    public long responseCount(){ 
     ReportMetrics.metrics.aResCount.getCount(); 
    } 

    public long pendingRequestCount(){ 
     return requestCount() - responseCount(); 
    } 

} 

class AProcessor { 

    public void addJob(){ 
     ReportMetrics.metrics.aReqCount.inc(); 
    } 

    public Object takeJob(){ 
     ReportMetrics.metrics.aResCount.inc(); 
    } 
} 

답변

1

이 요약 또는 counter.inc으로보고 카운터에 대한 임의의 간격 당 수 (총)을 계산하려면 . summarize(scaleToSeconds(nonNegativeDerivative(your.count),1), '1day') 을 포함하되 이에 국한되지 않고 선택한 집계 간격에 해당하는 탄소 보유 기간 (하나 또는 여러 개)에 따라 조정해야합니다.

+0

답변 해 주셔서 감사합니다. – Rembo