Erinnern wir uns daran, dass der Elastic Stack auf der nicht relationalen Elasticsearch-Datenbank, der Kibana-Webschnittstelle sowie Datensammlern und -prozessoren (dem bekanntesten Logstash, verschiedenen Beats, APM und anderen) basiert. Eine der netten Ergänzungen zum gesamten aufgeführten Produktstapel ist die Datenanalyse mithilfe von Algorithmen für maschinelles Lernen. In dem Artikel verstehen wir, was diese Algorithmen sind. Bitte unter Kat.
Maschinelles Lernen ist eine kostenpflichtige Funktion der Shareware Elastic Stack und im X-Pack enthalten. Um es zu nutzen, aktivieren Sie nach der Installation einfach die 30-Tage-Testversion. Nach Ablauf des Testzeitraums können Sie Support zur Verlängerung anfordern oder ein Abonnement erwerben. Die Kosten für ein Abonnement berechnen sich nicht nach dem Datenvolumen, sondern nach der Anzahl der genutzten Knoten. Nein, das Datenvolumen wirkt sich natürlich auf die Anzahl der benötigten Knoten aus, dennoch ist dieser Lizenzierungsansatz im Verhältnis zum Unternehmensbudget humaner. Wenn keine hohe Produktivität erforderlich ist, können Sie Geld sparen.
ML im Elastic Stack ist in C++ geschrieben und läuft außerhalb der JVM, in der Elasticsearch selbst läuft. Das heißt, der Prozess (er heißt übrigens Autodetect) verbraucht alles, was die JVM nicht schluckt. Auf einem Demostand ist dies nicht so kritisch, aber in einer Produktionsumgebung ist es wichtig, separate Knoten für ML-Aufgaben zuzuweisen.
Algorithmen für maschinelles Lernen lassen sich in zwei Kategorien einteilen:
Um die Analyse durchzuführen, verwendet der Algorithmus für maschinelles Lernen in Elasticsearch-Indizes gespeicherte Daten. Sie können Aufgaben zur Analyse sowohl über die Kibana-Schnittstelle als auch über die API erstellen. Wenn Sie dies über Kibana tun, müssen Sie einige Dinge nicht wissen. Beispielsweise zusätzliche Indizes, die der Algorithmus während seiner Ausführung verwendet.
Zusätzliche Indizes, die im Analyseprozess verwendet werden.ml-state – Informationen zu statistischen Modellen (Analyseeinstellungen);
.ml-anomalies-* – Ergebnisse von ML-Algorithmen;
.ml-Benachrichtigungen – Einstellungen für Benachrichtigungen basierend auf Analyseergebnissen.
Die Datenstruktur in der Elasticsearch-Datenbank besteht aus Indizes und darin gespeicherten Dokumenten. Im Vergleich zu einer relationalen Datenbank kann ein Index mit einem Datenbankschema und ein Dokument mit einem Datensatz in einer Tabelle verglichen werden. Dieser Vergleich ist an Bedingungen geknüpft und wird bereitgestellt, um das Verständnis weiterer Materialien für diejenigen zu erleichtern, die bisher nur von Elasticsearch gehört haben.
Über die API ist die gleiche Funktionalität verfügbar wie über die Webschnittstelle. Zur Verdeutlichung und zum Verständnis der Konzepte zeigen wir daher, wie sie über Kibana konfiguriert wird. Im Menü auf der linken Seite gibt es einen Bereich für maschinelles Lernen, in dem Sie einen neuen Job erstellen können. In der Kibana-Oberfläche sieht es wie im Bild unten aus. Jetzt analysieren wir jeden Aufgabentyp und zeigen die Analysetypen, die hier erstellt werden können.
Single Metric – Analyse einer Metrik, Multi Metric – Analyse von zwei oder mehr Metriken. In beiden Fällen wird jede Metrik in einer isolierten Umgebung analysiert, d. h. Der Algorithmus berücksichtigt nicht das Verhalten parallel analysierter Metriken, wie es im Fall von Multi Metric den Anschein haben könnte. Um Berechnungen unter Berücksichtigung der Korrelation verschiedener Metriken durchzuführen, können Sie die Bevölkerungsanalyse verwenden. Und Advanced optimiert die Algorithmen mit zusätzlichen Optionen für bestimmte Aufgaben.
Einzelner Messwert
Die Analyse von Änderungen in einer einzelnen Metrik ist das einfachste, was hier möglich ist. Nachdem Sie auf Job erstellen geklickt haben, sucht der Algorithmus nach Anomalien.
Im Anhäufung Sie können einen Ansatz zur Suche nach Anomalien wählen. Zum Beispiel wann Min. Werte unter den typischen Werten werden als anomal angesehen. Essen Max, Hoch Mittel, Niedrig, Mittel, Deutlich und andere. Beschreibungen aller Funktionen finden Sie hier
Im Feld gibt das numerische Feld im Dokument an, für das wir die Analyse durchführen.
Im
Die Dauer der gesammelten Daten ist ein entscheidender Faktor, der die Wirksamkeit der Analyse beeinflusst. Während der Analyse identifiziert der Algorithmus sich wiederholende Intervalle, berechnet Konfidenzintervalle (Basislinien) und identifiziert Anomalien – atypische Abweichungen vom normalen Verhalten der Metrik. Nur zum Beispiel:
Basislinien mit einem kleinen Datenstück:
Wenn der Algorithmus etwas lernen kann, sieht die Grundlinie so aus:
Nach dem Start der Aufgabe ermittelt der Algorithmus anomale Abweichungen von der Norm und ordnet sie nach der Wahrscheinlichkeit einer Anomalie (die Farbe der entsprechenden Beschriftung ist in Klammern angegeben):
Warnung (blau): weniger als 25
Moll (gelb): 25-50
Major (orange): 50-75
Kritisch (rot): 75-100
Die folgende Grafik zeigt ein Beispiel der gefundenen Anomalien.
Hier sehen Sie die Zahl 94, die die Wahrscheinlichkeit einer Anomalie angibt. Es ist klar, dass, da der Wert nahe bei 100 liegt, eine Anomalie vorliegt. Die Spalte unter der Grafik zeigt die abwertend geringe Wahrscheinlichkeit, dass dort 0.000063634 % des Metrikwerts auftauchen.
Zusätzlich zur Suche nach Anomalien können Sie in Kibana Prognosen ausführen. Dies geschieht einfach und aus der gleichen Ansicht mit der Anomalien-Schaltfläche Prognose in der oberen rechten Ecke.
Die Prognose erfolgt maximal 8 Wochen im Voraus. Selbst wenn Sie es wirklich wollen, ist es von Natur aus nicht mehr möglich.
In manchen Situationen ist die Prognose sehr nützlich, beispielsweise bei der Überwachung der Benutzerlast auf der Infrastruktur.
Multimetrisch
Kommen wir zur nächsten ML-Funktion im Elastic Stack – der Analyse mehrerer Metriken in einem Stapel. Dies bedeutet jedoch nicht, dass die Abhängigkeit einer Metrik von einer anderen analysiert wird. Dies ist das Gleiche wie „Einzelne Metrik“, jedoch mit mehreren Metriken auf einem Bildschirm, um die Auswirkungen voneinander leicht vergleichen zu können. Wir werden im Abschnitt „Population“ über die Analyse der Abhängigkeit einer Metrik von einer anderen sprechen.
Nach einem Klick auf das Quadrat mit Multi Metric erscheint ein Fenster mit Einstellungen. Schauen wir sie uns genauer an.
Zuerst müssen Sie die Felder für die Analyse und Datenaggregation auswählen. Die Aggregationsoptionen sind hier dieselben wie für Single Metric (Max, Hoch Mittel, Niedrig, Mittel, Deutlich und andere). Falls gewünscht, werden die Daten außerdem in eines der Felder (Feld) unterteilt Daten teilen). Im Beispiel haben wir dies feldweise gemacht OriginAirportID. Beachten Sie, dass das Metrikdiagramm auf der rechten Seite jetzt als mehrere Diagramme dargestellt wird.
Feld Schlüsselfelder (Influencer) wirkt sich direkt auf die erkannten Anomalien aus. Standardmäßig gibt es hier immer mindestens einen Wert, und Sie können weitere hinzufügen. Der Algorithmus berücksichtigt den Einfluss dieser Felder bei der Analyse und zeigt die „einflussreichsten“ Werte an.
Nach dem Start wird so etwas in der Kibana-Oberfläche angezeigt.
Dies ist das sogenannte Heatmap der Anomalien für jeden Feldwert OriginAirportID, was wir in angegeben haben Daten teilen. Wie bei Single Metric zeigt die Farbe den Grad der abnormalen Abweichung an. Es ist praktisch, eine ähnliche Analyse beispielsweise auf Workstations durchzuführen, um diejenigen mit verdächtig vielen Berechtigungen usw. zu verfolgen. Wir haben bereits geschrieben
Unterhalb der Heatmap befindet sich eine Liste der Anomalien. Von jeder Anomalie können Sie zur detaillierten Analyse in die Ansicht „Einzelmetrik“ wechseln.
Grundgesamtheit
Um nach Anomalien zwischen Korrelationen zwischen verschiedenen Metriken zu suchen, verfügt der Elastic Stack über eine spezielle Populationsanalyse. Mit seiner Hilfe können Sie nach anomalen Werten in der Leistung eines Servers im Vergleich zu anderen suchen, wenn beispielsweise die Anzahl der Anfragen an das Zielsystem zunimmt.
In dieser Abbildung gibt das Feld „Population“ den Wert an, auf den sich die analysierten Metriken beziehen. In diesem Fall ist es der Name des Prozesses. Als Ergebnis werden wir sehen, wie sich die Prozessorlast der einzelnen Prozesse gegenseitig beeinflusst.
Bitte beachten Sie, dass sich die Grafik der analysierten Daten von den Fällen mit Single Metric und Multi Metric unterscheidet. Dies wurde in Kibana absichtlich durchgeführt, um eine bessere Wahrnehmung der Werteverteilung der analysierten Daten zu ermöglichen.
Die Grafik zeigt, dass sich der Prozess abnormal verhalten hat Der Stress (übrigens von einem speziellen Dienstprogramm generiert) auf dem Server poipu, der das Auftreten dieser Anomalie beeinflusste (oder sich als Influencer herausstellte).
Fortgeschrittener
Analytik mit Feintuning. Bei der erweiterten Analyse werden in Kibana zusätzliche Einstellungen angezeigt. Nachdem Sie im Erstellungsmenü auf die Kachel „Erweitert“ geklickt haben, erscheint dieses Fenster mit Registerkarten. Tab Job Details Wir haben es absichtlich übersprungen, es gibt Grundeinstellungen, die nicht direkt mit der Einrichtung der Analyse zusammenhängen.
В summary_count_field_name Optional können Sie den Namen eines Felds aus Dokumenten angeben, die aggregierte Werte enthalten. In diesem Beispiel die Anzahl der Ereignisse pro Minute. IN
Hier ist ein zusätzlicher Einstellungsblock zum Konfigurieren des Anomaliedetektors für eine bestimmte Aufgabe. Wir planen, in den folgenden Artikeln spezifische Anwendungsfälle (insbesondere Sicherheitsfälle) zu diskutieren. Beispielsweise,
Im Funktion Sie können eine bestimmte Funktion auswählen, um nach Anomalien zu suchen. Außer selten, es gibt noch ein paar weitere interessante Funktionen -
В Feldname gibt das Feld des Dokuments an, für das die Analyse durchgeführt wird. Nach_Feldname kann verwendet werden, um die Analyseergebnisse für jeden einzelnen Wert des hier angegebenen Dokumentfelds zu trennen. Wenn Sie füllen over_field_name Sie erhalten die Populationsanalyse, die wir oben besprochen haben. Wenn Sie einen Wert in angeben Partitionsfeldname, dann werden für dieses Feld des Dokuments für jeden Wert separate Baselines berechnet (der Wert kann beispielsweise der Name des Servers oder Prozesses auf dem Server sein). IN ausschließen_frequent kann wählen alle oder keine, was bedeutet, dass häufig vorkommende Dokumentfeldwerte ausgeschlossen (oder eingeschlossen) werden.
In diesem Artikel haben wir versucht, einen möglichst prägnanten Überblick über die Möglichkeiten des maschinellen Lernens im Elastic Stack zu geben; es bleiben noch viele Details hinter den Kulissen. Teilen Sie uns in den Kommentaren mit, welche Fälle Sie mit Elastic Stack lösen konnten und für welche Aufgaben Sie es verwenden. Um mit uns in Kontakt zu treten, können Sie persönliche Nachrichten auf Habré oder verwenden
Source: habr.com