2016-06-30 18 views
5

Sto usando le metriche di codahale (ora le metriche del dropwizard) per monitorare alcuni "eventi" che si verificano nel mio sistema. Sto utilizzando le metriche counters per tenere traccia del numero di volte in cui si è verificato l'evento.Metriche sul dropwizard - Come reimpostare i contatori dopo il reporting dell'intervallo

Ho controllato i valori stampati dal reporter per le mie contromisure e sembra che il valore continui ad aumentare (e non diminuisca mai). Questo sembra logico visto che utilizzo sempre la funzione metrics.inc() ogni volta che si verifica il mio 'evento'.

What I really want is to get count of my 'event' happening between two reporting times, per questo ho bisogno di reimpostare il mio contatore ogni volta che ho segnalato le mie metriche, ma non ho trovato alcuna opzione in contatore di metriche per farlo. C'è un modo o una pratica generale seguita dagli utenti di codahale per produrre tali metriche?

comportamento attuale (segnalazione tempo 10 sec):

00:00:00 0 
00:00:10 2 // event happened twice 
00:00:20 2 // event did not occur 
00:00:30 5 // event occured three times` 

metriche attesi:

00:00:00 0 
00:00:10 2 
00:00:20 0 
00:00:30 3 

risposta

1

credo che counter non è metriche corrette per il vostro caso. Considerare l'utilizzo di meter che vi fornirà tasso per intervallo di tempo:

while(...) { 
    int stuffProcesssed = doStuff(); 
    meter.mark(stuffProcesssed); 
} 
+0

Mentre mark.meter fornisce i tassi dei minuti recenti e la velocità overal (o dall'avvio dell'app) afaik non è possibile scegliere un intervallo arbitrario. – Sasha

1

Per riassumere o calcolare conteggio (totale) per intervallo arbitrario:

hitcount(perSecond(your.count), '1day') 

AFAIK lo fa tutta la magia nera all'interno. Incluso ma non limitato a summarize(scaleToSeconds(nonNegativeDerivative(your.count),1), '1day') e anche ci dovrebbe essere il ridimensionamento in base ai periodi di conservazione del carbonio (uno o molti) che cadono nell'intervallo di aggregazione scelto.