2016-08-18 2 views
1

Ich suche vergleichen, ob ich die total number of event count for the current one hr interval mit den total number of event count with the previous one hour interval und wenn die aktuellen Stunde Zahl is less als frühere Stunde Zahl vergleichen kann dann eine E-Mail sollte aus Riemann ausgelöst werden.Wie Ereignis Zählwert mit früherem Zeitintervall Ereignisse

Ich bin mir nicht sicher, ob wir den Wert speichern und mit dem aktuellen Ereigniswert vergleichen können, weil ich gelernt habe, dass Ereignisse aufgrund der Option TTL in Riemann abgelaufen sind.

Bitte korrigieren Sie mich, wenn ich falsch liege, und schlagen Sie mir einen Referenzcode vor, um es in Riemann zu erreichen.

Vielen Dank im Voraus

+0

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. –

+0

'rate' und' folds/sum' geben die Anzahl an, aber ich möchte die Anzahl mit der Anzahl der vorherigen Stunden vergleichen. – Mangoski

Antwort

0

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 ewmaddt 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.

Verwandte Themen