Ereigniskorrelation und Filterung - How to, wo-anfangen?

9

Erhalte einen asynchronen Stream von Ereignissen, wobei jedes Ereignis Informationen wie -

enthält
  • Agentur (eine von vielen Agenturen, die von meiner Lösung bedient werden kann)
  • Agent (einer von vielen Agenten in einer Agentur)
  • Served-Entity (eine Person / Organisation, die von einer oder mehreren Agenturen bedient wird)
  • Datum und Uhrzeit
  • Class-Data (Tags aus einem festen, aber großen Satz von Tags)

Was ich tun muss, ist -

  1. Ordnen Sie ein Ereignis basierend auf Served-Entity, Datum + Uhrzeit und Klassendaten zu und erstellen Sie ein konsolidiertes neues Event. Beispiel:

    Ereignis # 0021: {Agentur = 'XYZ', Agent = 'ABC', Served-Entity = 'MMN', Datum + Uhrzeit = '12 -03-2011 / 11: 03: 37 ', Klassendatum = 'verpasste Lieferung, nicht wiederholbar, unauffindbar, Waise'}

    Ereignis # 0193: {Agency = 'KLM', Agent = 'TAG', Served-Entity = 'MMN', Datum + Uhrzeit = '12 -03-2011 / 12: 32: 21 ', Klassendatum = 'verpasste Lieferung, Waise, verloren'}

    Ereignis # 1217: {Agentur = 'KLM', Agent = 'PFLEGE', Served-Entity = 'MMN', Datum + Uhrzeit = '12 -03-2011 / 18: 50: 45 ', Kursdatum = 'eskaliert'}

    Hier finde ich 3 zeitlich auseinander liegende Ereignisse (mehr als 7h Trennung), die für die gleiche Served-Entity (MMN) stehen, innerhalb eines bestimmten Zeitfensters (zB 24-Stunden) auftreten, übereinstimmen oder verwandt sind Klassendaten.

  2. Erstellen Sie abschließend ein konsolidiertes (neues) Ereignis, das eine Ableitung darstellen könnte.

  3. Sie können Berichte für eine Agentur, eine Agentur, eine Served-Entity-Basis basierend auf bestimmten Class-Data-Tags (z. B. verpasste Lieferung) über einen bestimmten Zeitraum erstellen. Dies könnte unter Verwendung der ursprünglichen / eingegebenen Ereignisse oder der synthetisierten (Inferenz-) Ereignisse geschehen.

  4. Auch wenn dies heute nicht erforderlich ist, aber sehr wahrscheinlich in Zukunft erscheinen wird, können die "Tags", die in Class-Data erscheinen, ohne menschlichen Eingriff wachsen. Also nicht sicher, ob dies dann als unstrukturierte Daten behandelt werden sollte.

  5. Auch keine unmittelbare Anforderung, aber in Zukunft kann es notwendig sein, Trends / Muster von Ereignisvorkommen zu identifizieren (d. h. Event1 führte zu Event2, was zu Event3 führte).

Die Ereignisankunftsrate könnte ziemlich hoch sein ... möglicherweise Tausende von Ereignissen pro Minute. Vielleicht mehr. Und ich muss die ursprünglichen / synthetisierten Ereignisse für einen Zeitraum (ungefähr einen Monat) archivieren.

Meine Lösung muss (vorzugsweise) auf FOSS-Komponenten basieren. Einige bisher durchgeführte Studien weisen in Richtung CEP (Complex Event Processing), Bayessche Netzwerke / Klassifikation, Predictive-Analytics.

Auf der Suche nach einigen Vorschlägen hinsichtlich des Ansatzes. Ich würde es vorziehen, den Weg zu gehen, der die meisten meiner Ziele mit minimalem Schwierigkeitsgrad / Zeit erfüllt, oder anders gesagt, "Lernen von AI" oder "formale statistische Methoden" ist nicht mein kurzfristiges Ziel: -)

    
mike.dinnone 31.03.2011, 17:27
quelle

2 Antworten

2

Mike,

Haben Sie etwas wie Esper / Nesper in Betracht gezogen, um zu sehen, ob sie Ihren Anforderungen entsprechen? während ich mir selbst etwas Ähnliches angeschaut habe - besonders auf Erlang (siehe mein Beitrag ), und Sie finden dort einige nützliche Antworten.

IC

    
icarus74 01.04.2011, 13:28
quelle
1

Ihr Problem ist ein taktisches Problem im Gegensatz zu einem verfahrenstechnischen Problem. Beide Arten haben ihre eigenen Werkzeuge, und Sie werden in einer Welt der Schmerzen sein, wenn Sie versuchen, ein taktisches Problem mit prozeduralen Werkzeugen zu lösen.

Nur zur Klärung von Begriffen, wenn ich prozedural sage, spreche ich über Anwendungsfälle, wo man X, dann Y, dann Z sagen kann. Mit taktischen Problemen kann X, Y und Z jederzeit auftreten, und Sie müssen in der Lage sein, mit dem Ereignis umzugehen.

Sie sind mit CEP auf dem richtigen Weg. Sie können auch prüfen, ob Sie eine Regel-Engine verwenden. Sie haben nicht erwähnt, was Ihre Entwicklungsumgebung ist, aber wenn es Java ist, könnten Sie sich Jess ansehen. Wenn Sie wirklich eine schöne und robuste Regel-Engine möchten, werfen Sie einen Blick auf Tibco Business Events. Es ist sehr mächtig und fehlertolerant, aber definitiv nicht frei.

    
clarson 01.04.2011 17:50
quelle