2016-08-01 40 views
1

Ich möchte den StepCounter von den Raten basierend auf Sekunden umrechnen um pro Minute zu bewerten (wir haben einen Monitor, der jede Minute läuft).Eine Minutenrate metrisch im Netflix Servo machen

Wenn ich versuche, die Abfrage von 1 pro Sekunde auf alle 60 Sekunden umzustellen, wird stattdessen der Inkrementwert verwendet und durch 60 geteilt und eine Rate pro Sekunde erstellt.

Jeder hat eine Idee, wie man einen JMX-Wert über das Netflix-Servo-Paket verfügbar macht, um stattdessen eine 60s-Metrik zu machen? Es gibt CounterToRateMetricTransform, aber es gibt keine Beispiele, wie Sie eine Counter-Metrik in eine Rate umwandeln können.

Antwort

0

Schrittzähler ist eine individuelle Metrik, aber auf eine CounterToRateMetricTransform MetricObserver angelegt wird, und gibt einen neuen Beobachter, der alle Zähler als Raten

z.B. transformiert beobachtet einen Beobachter zu schaffen, die Zähler als Raten und fügen Sie es zu einem pollrunnable Aufgabe

MetricObserver observer = new CloudWatchMetricObserver(...) // existing observer 
MetricObserver transformedObserver = new CounterToRateMetricTransform(observer, 60, TimeUnit.SECONDS); 
PollRunnable task = new PollRunnable(..., Immutable.listOf(transformedObserver)); 

Leider ist diese Transformation auch eine Rate pro Sekunde zurück (siehe CounterToRateMetricTransform.computeRate)

Es gibt keinen Weg, um eine pro Minute beobachtet Bewerten Sie durch die vorhandene Bibliothek, soweit ich sehen kann, müssen Sie entweder Ihre eigene Metrik (wie StepCounter) oder Ihre eigene Transformation auf einem Beobachter (wie CounterToRateMetricTransform) abhängig von Ihrem Anwendungsfall implementieren.

Der beste Ansatz ist wahrscheinlich, nur die pro Sekunde Rate zu nehmen und multiplizieren Sie es mit 60 in Ihrem Überwachungssystem, anstatt die Berichterstattung zu ändern