2016-06-30 12 views
5

Sistemimde gerçekleşen birkaç 'olayı' izlemek için codahale metrikleri (şimdi dropwizard metrikleri) kullanıyorum. Olayın gerçekleştiği süreyi takip etmek için counters metriklerini kullanıyorum.Dropwizard metrikleri - Raporlama sonrası sayaçları nasıl sıfırlar

Sayaç metrikleri için muhabir tarafından basılan değerleri kontrol ettim ve değer artmaya devam ediyor gibi görünüyor (ve asla bitmiyor). Bu benim 'olayı' her oluştuğunda metrics.inc() işlevini her zaman kullandığım gibi mantıklı görünüyor.

What I really want is to get count of my 'event' happening between two reporting times, bunun için her seferinde metrikleri rapor ettiğimde sayacımı sıfırlamam gerekiyor, ancak sayaç metriklerinde bunu yapmak için herhangi bir seçenek bulamadım. Codahale kullanıcılarının böyle bir metrik üretmesi için bir yol veya genel uygulama var mı?

Güncel Davranış (süresi 10 sn raporlama):

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` 

Beklenen metrikleri:

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

cevap

1

Ben counter dava için doğru ölçümlerini olmadığına inanıyorum. zaman aralığı başına size oranını sağlayacak meter kullanmayı düşünün:

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

mark.meter size son dakikaların oranlarını ve kaç hızını verirse (ya da uygulama başladığında) afaik'in keyfi aralığı seçebilme özelliği yoktur. – Sasha

1

keyfi aralığı başına özetlemek veya sayımını (toplam) hesaplamak için:

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

o içindeki tüm kara büyü yapar Afaik. summarize(scaleToSeconds(nonNegativeDerivative(your.count),1), '1day') dahil olmak üzere, ancak bunlarla sınırlı olmamak kaydıyla, karbon birikim periyotlarına (bir veya daha fazla) göre seçilmiş toplama aralığına düşen ölçeklendirme yapılmalıdır.