Clustervisualisierung

Clustering verwendet maschinelles Lernen, um das Muster von Logdatensätzen zu identifizieren und die Logs mit einem ähnlichen Muster dann zu gruppieren.

Durch Clustering kann die Gesamtanzahl der Logeinträge, die Sie explorieren müssen, erheblich reduziert werden. Gleichzeitig werden die Ausreißer einfach hervorgehoben. Gruppierte Logeinträge werden als Beispielmeldung dargestellt.
  1. Öffnen Sie das Navigationsmenü, und klicken Sie auf Observability and Management. Klicken Sie unter Logging Analytics auf Log Explorer.
  2. Suchen Sie nach Logs für ein Set von Entitys. Siehe Logs nach Entitys durchsuchen.
  3. Wählen Sie im Bereich Visualisieren die Option Cluster (Cluster öffnen) aus.

    Clustervisualisierung, die das Histogramm und die Clusterübersicht anzeigt

Sie können sehen, dass ähnliche Logdatensätze in Clustern gruppiert sind und eine Histogrammansicht aller Datensätze nach Zeitintervall gruppiert angezeigt wird. Sie können ein bestimmtes Set von Intervallen (in diesem Fall nach Zeitintervallen gruppierte Datensätze) im Histogramm vergrößern, indem Sie die linke Maustaste gedrückt halten und ein Rechteck über die erforderlichen Intervalle ziehen. Nach dem Vergrößern ändern sich die Clusterdatensätze auf Basis des ausgewählten Intervalls.

In der Clusteransicht wird oben ein Übersichtsbanner mit den folgenden Registerkarten angezeigt:

  • Cluster gesamt: Gesamtanzahl der Cluster für die ausgewählten Logdatensätze.


    Clusterbanner für Gesamtcluster

    Hinweis

    Wenn Sie den Cursor über diesen Bereich bewegen, wird auch die Anzahl der Logdatensätze angezeigt (z.B. 260 Cluster aus 1.413.036 Logdatensätzen).

  • Potenzielle Probleme: Anzahl der Cluster mit potenziellen Problemen basierend auf Logdatensätzen, die Wörter wie Fehler, Schwerwiegend, Ausnahme usw. enthalten.


    Clusterbanner - potenzielle Probleme

  • Ausreißer: Anzahl der Cluster, die in einem bestimmten Zeitraum nur einmal aufgetreten sind.


    Clusterbanner - Ausreißer

  • Trends: Anzahl der eindeutigen Trends im Zeitraum. Möglicherweise weisen viele Cluster denselben Trend auf. Wenn Sie also auf diesen Bereich klicken, wird ein Cluster aus den einzelnen Trends angezeigt.


    Clusterbanner - Trends

Wenn Sie auf eine der Registerkarten klicken, ändert sich die Histogrammansicht des Clusters, um die Datensätze für die ausgewählte Registerkarte anzuzeigen.

Jedes Clustermuster zeigt Folgendes an:

  • Trend: In dieser Spalte wird eine Sparkline-Darstellung des Trends (der so genannte Trendverlauf) der Generierung von Logmeldungen (eines Clusters) basierend auf dem Zeitraum angezeigt, den Sie beim Clustering der Datensätze ausgewählt haben. Jeder Trendverlauf wird durch eine Verlaufs-ID wie 1, 2, 3 usw. identifiziert. Auf diese Weise können Sie die geclusterten Datensätze basierend auf Trendverläufen sortieren.

    Wenn Sie auf den Pfeil links neben einem Trendeintrag klicken, wird die Zeitreihenvisualisierung der Clusterergebnisse angezeigt. Diese Visualisierung zeigt, wie die Logdatensätze in einem Cluster basierend auf dem in der Abfrage ausgewählten Zeitraum verteilt wurden. Der Trendverlauf ist eine Sparkline-Darstellung der Zeitreihe.

  • ID: In dieser Spalte wird die Cluster-ID aufgeführt. Die ID ist innerhalb der Collection eindeutig.

  • Anzahl: In dieser Spalte wird die Anzahl der Logdatensätze mit derselben Meldungssignatur aufgeführt.

  • Beispielmeldung: In dieser Spalte wird ein Beispiellogdatensatz aus der Meldungssignatur angezeigt.

  • Logquelle: In dieser Spalte werden die Logquellen aufgeführt, die die Meldungen des Clusters generiert haben.

Sie können auf Ähnliche Trends anzeigen klicken, um Cluster in aufsteigender Reihenfolge nach Trendverläufen zu sortieren. Sie können auch eine Cluster-ID oder mehrere Cluster-IDs auswählen und auf Datensätze anzeigen klicken, um alle Datensätze für die ausgewählten IDs anzuzeigen.

Sie können auch eine Clustermeldung oder mehrere Cluster aus den Clusterergebnissen ausblenden, wenn die Ausgabe unübersichtlich ist. Klicken Sie mit der rechten Maustaste auf das erforderliche Cluster, und wählen Sie Cluster ausblenden aus.

In jedem Datensatz werden die Variablenwerte hervorgehoben. Sie können alle ähnlichen Variablen in jedem Cluster anzeigen, indem Sie im Abschnitt Beispielmeldung auf eine Variable klicken. Wenn Sie auf die Variablen klicken, werden alle Werte (im gesamten Datensatzset) für diese Variable angezeigt.

Im Abschnitt "Beispielmeldung" zeigen einige Clustermuster den Link <n> weitere Beispiele... an. Wenn Sie auf diesen Link klicken, werden weitere Cluster angezeigt, die dem ausgewählten Clustermuster ähneln.

Wenn Sie auf Zurück zu Trends klicken, gelangen Sie zurück zur vorherigen Seite im jeweiligen Kontext (sie scrollt zurück an die Stelle, an der Sie die Variable ausgewählt haben, um einen Drilldown durchzuführen). Mit der Browserschaltfläche "Zurück" kehren Sie ebenfalls zur vorherigen Seite zurück. Der Kontext wird dabei jedoch nicht beibehalten, da der cluster-Befehl in diesem Fall erneut ausgeführt wird.

Logdaten mit SQL-Feldern clustern

Beispiel für das Clustering der SQL-Felder:

Die große Menge an Logdatensätzen wird auf 89 Cluster reduziert. Dadurch müssen Sie weniger Logdatengruppen analysieren.

Sie können einen Drilldown zu Clustern durchführen, indem Sie die Variablen auswählen. Beispiel: Wählen Sie im obigen Set von Clustern das Cluster aus, das die Beispielmeldung SELECT version FROM V$INSTANCE enthält:



Dadurch wird die Histogrammvisualisierung der Logdatensätze mit der angegebenen Beispielmeldung angezeigt. Sie können jetzt den ursprünglichen Loginhalt analysieren. Klicken Sie auf Zurück zum Cluster, um zur Clustervisualisierung zurückzukehren.

Im Bereich Trends werden die SQLs mit einem ähnlichen Ausführungsmuster angezeigt.

Im Bereich Ausreißer werden die SQLs angezeigt, die selten sind und abweichen.

Clustervergleichsutility verwenden

Mit dem Clustervergleichsutility können Sie neue Probleme identifizieren, indem Sie das aktuelle Set von Clustern mit einer Baseline vergleichen und die Ergebnisse reduzieren, indem Sie gemeinsame oder doppelte Cluster eliminieren. Typische Szenarios:

Bei zwei Sets von Logdaten entfernt das Clustervergleichsutility die Daten für die gemeinsamen Cluster und zeigt Histogrammdaten und die Datensatztabelle an, die für jedes Set eindeutig sind. Beispiel: Wenn Sie die Logdaten aus Woche x und Woche y vergleichen, werden die Cluster, die in beiden Wochen gleich sind, zur Vereinfachung entfernt, und die Daten, die für jede Woche eindeutig sind, werden angezeigt. Auf diese Weise können Sie Muster identifizieren, die für eine bestimmte Woche eindeutig sind, und das Verhalten analysieren.

Die Syntax und andere Details des Befehls clustercompare finden Sie unter clustercompare.

  1. Wählen Sie in der Clustervisualisierung Cluster öffnen den aktuellen Zeitraum aus. Standardmäßig ist die Abfrage *. Sie können die Abfrage verfeinern, um die Logdaten zu filtern.
  2. Klicken Sie im Bereich Visualisieren auf Clustervergleich.

    Das Dialogfeld "Clustervergleich" wird geöffnet.

  3. Sie können sehen, dass die aktuelle Abfrage und der aktuelle Zeitraum zur Referenz angezeigt werden.
    • Baselineabfrage: Standardmäßig ist diese Abfrage mit der aktuellen Abfrage identisch. Klicken Sie auf Symbol "Bearbeiten", und ändern Sie gegebenenfalls die Baselineabfrage.
    • Baselinezeitraum: Standardmäßig verwendet das Clustervergleichsutility die Option Zeitverschiebung verwenden, um den Baselinezeitraum zu bestimmen. Daher hat der Baselinezeitraum dieselbe Dauer wie der aktuelle Zeitraum und wird in den Zeitraum vor dem aktuellen Zeitraum verschoben. Sie können das ändern, indem Sie auf das Symbol Symbol "Bearbeiten" klicken und Benutzerdefinierte Zeit verwenden oder Aktuelle Zeit verwenden auswählen. Wenn Sie Benutzerdefinierte Zeit verwenden auswählen, geben Sie den benutzerdefinierten Zeitraum über das Menü an.
    • Klicken Sie auf Vergleichen.

      Sie können nun den Clustervergleich zwischen den beiden Logsets anzeigen.

      Klicken Sie auf die Schaltfläche für jedes Set, um die Details wie Cluster, potenzielle Probleme, Ausreißer, Trends und Datensatztabelle anzuzeigen, die für das Set eindeutig sind. Auf dieser Seite wird auch die Anzahl der Cluster angezeigt, die zwischen den beiden Logsets gleich sind.

      Im obigen Beispiel wurden 11 Cluster nur im aktuellen Bereich, 4 Cluster nur im Baselinebereich und 30 Cluster in beiden Bereichen gefunden. Das Histogramm für den aktuellen Zeitraum zeigt die Visualisierung nur mit den Logdaten an, die für den aktuellen Zeitraum eindeutig sind.

Hinweis

Nur im aktuellen Bereich gefundene Cluster werden zuerst zurückgegeben, gefolgt von den Clustern, die nur im Baselinebereich vorkommen. Die kombinierten Ergebnisse sind auf 500 Cluster beschränkt. Um die Ergebnisse des Clustervergleichs zu reduzieren, kürzen Sie den aktuellen Zeitraum, oder fügen Sie einen Befehl hinzu, um die Anzahl der Ergebnisse zu begrenzen. Beispiel: Wenn Sie | head 250 anhängen, werden sowohl aktuelle als auch Baselinecluster auf jeweils 250 begrenzt. Wenn Sie die Option für benutzerdefinierte Zeit verwenden, können Sie den aktuellen Zeitraum durch Mehrfachauswahl (Klicken und Ziehen) im Clusterhistogramm verkürzen. Der Wert für die Zeitraumverschiebung kann in Minuten oder Sekunden konvertiert werden, um sicherzustellen, dass zwischen dem aktuellen und dem Baselinezeitraum keine Lücken oder Überschneidungen auftreten.

Dictionary Lookup in Cluster verwenden

Verwenden Sie den Dictionary Lookup nach dem cluster-Befehl, um Cluster zu annotieren.

Sehen Sie sich die cluster-Ergebnisse für Linux Syslog Logs. So definieren Sie ein Dictionary, um Labels basierend auf dem Feld Clusterbeispiel hinzuzufügen:

  1. Erstellen Sie eine CSV-Datei mit den folgenden Inhalten:

    Operator,Condition,Issue,Area
    CONTAINS IGNORE CASE,invalid compare operation,Compare Error,Unknown
    CONTAINS IGNORE CASE REGEX,DNS-SD.*?Daemon not running,DNS Daemon Down,DNS
    CONTAINS ONE OF REGEXES,"[[Cc]onnection refused,[Cc]onnection .*? closed]",Connection Error,Network
    CONTAINS IGNORE CASE,syntax error,Syntax Error,Validation
    CONTAINS IGNORE CASE REGEX,Sense.*?(?:Error|fail),Disk Sensing Error,Disk
    CONTAINS IGNORE CASE REGEX,device.*?check failed,Device Error,Disk

    Importieren Sie diese Datei als Dictionary-Typ-Lookup mit dem Namen Linux Error Categories. Dieser Lookup enthält zwei Felder, Issue und Area, die bei einer Übereinstimmungsbedingung zurückgegeben werden können. Siehe Dictionary Lookup erstellen.

  2. Verwenden Sie das Dictionary im Cluster, um ein Feld zurückzugeben:

    Führen Sie den cluster-Befehl für Linux Syslog Logs aus. Fügen Sie einen lookup-Befehl nach cluster hinzu, wie unten gezeigt:

    'Log Source' = 'Linux Syslog Logs' 
    | cluster
    | lookup table = 'Linux Error Categories' select Issue using 'Cluster Sample'

    Der Wert von Cluster Sample für jede Zeile wird anhand der Regeln ausgewertet, die im Dictionary "Linux Error Categories" definiert sind. Das Feld Issue wird von jeder übereinstimmenden Zeile zurückgegeben.

  3. Geben Sie mehrere Felder zurück, indem Sie jedes Feld im lookup-Befehl auswählen:

    'Log Source' = 'Linux Syslog Logs'
    | cluster
    | lookup table = 'Linux Error Categories' select Issue as Category, Area using 'Cluster Sample'

    Die obige Abfrage wählt das Feld Issue aus und benennt es in Category um. Das Feld Area ist ebenfalls ausgewählt, wird jedoch nicht umbenannt.

  4. Filtern Sie die Clusterergebnisse mit den Dictionary-Feldern:

    Verwenden Sie den where-Befehl für die spezifischen Felder, um die Cluster zu filtern. Beachten Sie die folgende Abfrage:

    'Log Source' = 'Linux Syslog Logs' 
    | cluster 
    | lookup table = 'Linux Error Categories' select Issue as Category, Area using 'Cluster Sample' 
    | where Area in (Unknown, Disk)

    Damit werden nur die Datensätze angezeigt, die mit den angegebenen Werten für das Feld Area übereinstimmen.

Semantisches Clustering

Mit der Clustervisualisierung können Sie Textmeldungen in Logdatensätzen clustern. Beim Clustering werden Meldungen, die eine ähnliche Anzahl von Wörtern in einem Satz aufweisen, gruppiert, und die Wörter, die sich innerhalb dieser Sätze ändern, werden identifiziert. Das Cluster berücksichtigt bei der Gruppierung nicht die wörtliche Bedeutung der Wörter.

Der nlp-Befehl unterstützt semantisches Clustering. Semantisches Clustering erfolgt durch Extrahieren der relevanten Schlüsselwörter aus einer Meldung und Clustering basierend auf diesen Schlüsselwörtern. Zwei Sets von Meldungen mit ähnlichen Wörtern werden zusammengefasst. Jede solche Gruppe erhält eine deterministische Cluster-ID.

Das folgende Beispiel zeigt die Verwendung von NLP-Clustering und Schlüsselwörtern in Linux Syslog Logs:

'Log Source' = 'Linux Syslogs Logs'
| link Time, Entity, cluster()
| nlp cluster('Cluster Sample') as 'Cluster ID', 
                    keywords('Cluster Sample') as Keywords
| classify 'Start Time', Keywords, Count, Entity as 'Cluster Keywords'

NLP-Clustering und Schlüsselwörter in Linux Syslog Logs

Weitere Beispiele für Anwendungsfälle von semantischem Clustering finden Sie unter Beispiele für semantisches Clustering.

nlp-Befehl

Der nlp-Befehl kann nur nach dem link-Befehl verwendet werden und unterstützt zwei Funktionen. cluster() kann zum Clustering des angegebenen Feldes verwendet werden und keywords() zum Extrahieren von Schlüsselwörtern aus dem angegebenen Feld.

Der nlp-Befehl kann nur nach dem link-Befehl verwendet werden. Siehe nlp.

  • nlp cluster():

    cluster() verwendet den Namen eines in Link generierten Feldes und gibt eine Cluster-ID für jeden geclusterten Wert zurück. Die zurückgegebene Cluster-ID ist eine Zahl, die als Zeichenfolge dargestellt wird. Die Cluster-ID kann in Abfragen zum Filtern der Cluster verwendet werden.

    Beispiel:

    nlp cluster('Description') as 'Description ID': Damit werden relevante Schlüsselwörter aus dem Feld Description extrahiert. Das Feld Description ID enthält hierbei eine eindeutige ID für jedes generierte Cluster.

  • nlp keywords():

    Extrahiert Schlüsselwörter aus den angegebenen Feldwerten. Die Schlüsselwörter werden basierend auf einem Dictionary extrahiert. Der Dictionary-Name kann mit der Option table angegeben werden. Wenn kein Dictionary angegeben ist, wird das Out-of-the-box-Standard-Dictionary NLP General Dictionary verwendet.

    Beispiel:

    nlp keywords('Description') as Summary: Damit werden relevante Schlüsselwörter aus dem Feld Description extrahiert. Auf die Schlüsselwörter kann über das Feld Summary zugegriffen werden.

    nlp table='My Issues' cluster('Description') as 'Description ID': Verwenden Sie anstelle des Standard-Dictionarys das benutzerdefinierte Dictionary My Issues.

NLP-Dictionary

Beim semantischen Clustering wird eine Meldung in Wörter aufgeteilt. Dann werden die relevanten Wörter extrahiert und anschließend die Meldungen mit ähnlichen Wörtern gruppiert. Die Qualität des Clusterings hängt somit von der Relevanz der extrahierten Schlüsselwörter ab.

  • Ein Dictionary wird verwendet, um zu bestimmen, welche Wörter in einer Meldung extrahiert werden sollen.
  • Die Reihenfolge der Elemente im Dictionary ist wichtig. Ein Element in der ersten Zeile hat ein höheres Ranking als das Element in der zweiten Zeile.
  • Ein Dictionary wird als CSV-Datei erstellt und mit der Lookup-Benutzeroberfläche mit der Option Dictionary-Typ importiert.
  • Sie müssen nur dann ein Dictionary erstellen, wenn Sie das Ranking von Wörtern ändern möchten. Der Out-of-the-box-Standard NLP General Dictionary wird verwendet, wenn kein Dictionary angegeben ist. Er enthält vorab trainierte englische Wörter.

Siehe Dictionary Lookup erstellen.

Beispiel-Dictionary iSCSI Errors:

Operator Bedingung Wert

CONTAINS IGNORE CASE

error

noun

CONTAINS IGNORE CASE

reported

verb

CONTAINS IGNORE CASE

iSCSI

noun

CONTAINS IGNORE CASE

connection

noun

CONTAINS IGNORE CASE

closed

verb

Das erste Feld ist für die zukünftige Verwendung reserviert. Das zweite Feld ist ein Wort. Das dritte Feld gibt den Typ für dieses Wort an. Der Typ kann eine beliebige Zeichenfolge sein und mit dem Parameter category aus der Abfrage referenziert werden.

Im obigen Beispiel hat das Wort error ein höheres Ranking als die Wörter reported und iSCSI. Entsprechend hat connection ein höheres Ranking als closed.

Dictionary verwenden

Angenommen, der folgende Text wird im Feld Message angezeigt:

Kernel reported iSCSI connection 1:0 error (1020 - ISCSI_ERR_TCP_CONN_CLOSE: TCP connection closed) state (2) 
Please verify the storage and network connection for additional faults

Die oben genannte Meldung wird geparst und in Wörter aufgeteilt. Andere Zeichen als Buchstaben werden entfernt. Im Folgenden werden einige der aus der Aufteilung generierten eindeutigen Wörter aufgeführt:

Kernel
reported
iSCSI
connection
error
ERR
TCP
CONN
CLOSE
closed
state
...
...

Die Meldung enthält insgesamt 24 Wörter. Standardmäßig versucht das semantische Clustering, 20 Wörter zu extrahieren und diese Wörter für das Clustering zu verwenden. In einem Fall wie oben muss das System wissen, welche Wörter wichtig sind. Dafür wird das Dictionary verwendet.

Das Dictionary ist eine sortierte Liste. Wenn iSCSI Errors verwendet wird, extrahiert NLP nicht ERR, TCP oder CONN, da diese Wörter nicht im Dictionary enthalten sind. Gleichermaßen erhalten die Wörter error, reported, iSCSI, connection und closed aufgrund ihres Rankings im Dictionary eine höhere Priorität.