Es klingt wie Sie die Rate der Änderung der Zählung über eine Stunde und dann zu entscheiden, ob diese Rate negativ wollen? Eine Möglichkeit, dies zu tun ist, genau wie Sie beschreiben:
(fold-interval-metric 3600 folds/count
(fixed-event-window 2
(smap folds/difference
(where (neg? (:metric event))
email))))
und das macht Sinn. Sie können feststellen, dass, wenn Sie die eingebaute Funktion ddt
über die Zeit verwenden und diese grafisch darstellen, Sie diese Probleme über viel kürzere Zeitskalen erkennen können. Wenn Ihre Erfolgsrate in der dritten Minute einer Stunde auf null fällt, ist 57 Minuten eine lange Zeit, bis der Computer wartet, bevor er einen Menschen um Hilfe ruft. Wenn die Änderungsrate in einem Zeitraum von 15 Minuten negative Unendlichkeit annimmt, ist es sehr wahrscheinlich, dass Ihr Dienst gerade gestoppt wurde.
Ich bin gern ddt
in der exponentiellen gewichteten gleitenden Durchschnitt ewma
Einwickeln so Spikes die Alarme nicht aufrechnen und haben eine extrem niedrige False-Positive-Rate mit diesem Muster hatte:
(ewma 30 (ddt ...your stuff here...))
ich oft wollen zu vergleichen, um die Rate der Anforderungen an einen Service mit den Antworten mit diesem Muster, das ewma
ddt
und project
verwendet:
(pipe ↲ (splitp = service
"service:input" (ewma 30 ↲)
"service:output" (ewma 30 ↲)
bit-bucket) ;; throw out other services here
(project [(service "service:input")
(service "service:output")]
(smap folds/quotient-sloppy
(with :service "service-ratio-rate-of-change"
(ddt ...your streams here...)))))
Wenn Anfragen sind in Häufig müssen Sie in allen diesen Beispielen mit dem Intervall spielen, um sicherzustellen, dass die Alarme nicht zwischen den Ereignissen ausgelöst werden. Wenn Ihre Ereignisse selten sind, müssen Sie möglicherweise auch die: ttl für die Ereignisse so hoch setzen, dass sie nicht ablaufen, während Sie sie erstellen.
ps: das ↲ kann jedes gewünschte Symbol sein, ich habe nur dieses Unicode-Zeichen gewählt.
pss: eine falsche posative Rate von einem Alarm pro Quartal sollte vernünftig sein, wenn Sie diese Dinge sorgfältig betrachten.
Ich werde eine bessere Antwort schreiben, wenn ich wieder an meinem Computer bin, kurz gesagt: verwende fixed-time-window folds/sum. Oder verwenden Sie die Rate der Metrik für Ereignisse pro Sekunde. Viele gute Sachen in http://riemann.io/api.html unter dem Abschnitt Streams. –
'rate' und' folds/sum' geben die Anzahl an, aber ich möchte die Anzahl mit der Anzahl der vorherigen Stunden vergleichen. – Mangoski