Ich verwende Graphite + Statsd (mit Python-Client), um benutzerdefinierte Metriken von einer Webanwendung zu sammeln: ein Zähler für erfolgreiche Transaktionen. Nehmen wir an, der Zähler ist stats.transactions.count
, der auch eine Rate / pro Sekunde-Metrik bei stats.transactions.rate
zur Verfügung steht.
Ich habe auch Seyren als Monitor + Alarmsystem eingerichtet und erfolgreich Metriken aus Graphite gezogen. Jetzt Ich möchte eine Warnung in Seyren einrichten, wenn die Anzahl der erfolgreichen Transaktionen in den letzten 60 Minuten weniger als ein bestimmtes Minimum ist .
Welche Metrik- und Graphite-Funktion sollte ich verwenden? Ich habe es mit summarize(metric, '1h')
versucht, aber dies gibt mir jede Stunde eine Warnung, wenn Graphite beginnt, die Metrik für die Startstunde zu aggregieren.
Beachten Sie, dass Seyren auch die Parameter from
und until
von Graphite angeben kann, wenn dies hilft.
Ich habe den Code von Seyren zur Unterstützung von from
/ until
beigesteuert, um mit dieser genauen Situation fertig zu werden.
Die folgende Konfiguration sollte eine Warnung ausgeben, wenn die Anzahl für die letzte Stunde unter 50 fällt und ein Fehler, wenn sie unter 25 fällt.
Beachten Sie, dass dies jede Minute ausgeführt wird, also ist die "letzte Stunde" eine gleitende Skala. Beachten Sie auch, dass der dritte boolesche Parameter true
für die summarize-Funktion angibt, dass der 1h-Bucket an From
angepasst werden soll, was bedeutet, dass Sie vor 1 Stunde einen vollen 1-Stunden-Bucket erhalten, anstatt versehentlich einen halben Bucket zu erhalten. (Neuere Versionen von Graphite können dies automatisch tun.)
Ihre Laufleistung kann variieren. Ich hatte Probleme mit diesem Ansatz, wenn der Zähler beim Serverneustart auf 0 zurückgesetzt wird. Aber in meinem Fall verwende ich Dropwizard Metriken + Graphit, nicht Statistik + Graphit, so dass Sie dieses Problem möglicherweise nicht haben.
Bitte lassen Sie mich wissen, ob dieser Ansatz für Sie funktioniert!
Tags und Links monitoring graphite statsd seyren