2016-06-30 35 views
5

Ich verwende Codahale Metriken (jetzt Dropwizard Metriken), um ein paar 'Ereignisse' in meinem System zu überwachen. Ich verwende die counters Metriken, um zu verfolgen, wie oft das Ereignis stattgefunden hat.Dropwizard Metriken - Wie Zähler nach dem Berichtsintervall zurückgesetzt werden

Ich überprüfte die Werte, die vom Reporter für meine Zählermetriken gedruckt wurden, und es sieht so aus, als würde der Wert weiter steigen (und nie sinken). Dies scheint logisch, da ich die Funktion metrics.inc() immer dann verwende, wenn mein "Ereignis" auftritt.

What I really want is to get count of my 'event' happening between two reporting times, dafür muss ich meinen Zähler jedes Mal zurücksetzen, wenn ich meine Messwerte melde, aber ich konnte keine Option in Counter-Metriken finden, um das zu tun. Gibt es einen Weg oder eine allgemeine Praxis, in der Codahale-Benutzer solche Metriken erstellen?

Aktuelles Verhalten (Zeit 10 sec Reporting):

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` 

Erwartete Metriken:

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

Antwort

1

Ich glaube, dass counter nicht korrekt Metriken für Ihren Fall ist. Betrachten meter, die Sie Rate pro Zeitintervall zur Verfügung stellt:

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

Während mark.meter gibt Ihnen die letzten Minuten Preise und die allgemeine Rate (oder von App Start) afaik gibt es keine Möglichkeit, willkürliche Intervall zu wählen. – Sasha

1

Um es zusammenzufassen oder berechnen Zahl (gesamt) pro beliebigen Intervall:

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

Afaik es in all den schwarzen Magie tut. Einschließlich, aber nicht beschränkt auf summarize(scaleToSeconds(nonNegativeDerivative(your.count),1), '1day') und auch dort sollte die Skalierung gemäß den Aufbewahrungszeiträumen von Kohlenstoff (eins oder mehrere) sein, die in das gewählte Aggregationsintervall fallen.