Azure Monitor Pipeline-Transformationen

Wenn Sie das An Azure Monitor gesendete Datenvolumen reduzieren, eingehende Datensätze bereinigen oder Daten in ein Format ändern müssen, das für die Analyse besser geeignet ist, transformieren Sie die Daten, bevor sie den Cluster verlässt. mit Azure Monitor Pipelinetransformationen können Sie eingehende Protokolldaten in der Pipeline filtern, aggregieren und ändern, bevor Sie sie an die Cloud senden.

In diesem Artikel wird erläutert, wie Transformationen im Azure Portal oder in ARM-Vorlagen konfiguriert werden. Außerdem wird erläutert, wie Aggregationen funktionieren und welche KQL-Operatoren Azure Monitor Pipelinetransformationen unterstützen.

Grundlegende Abfragestruktur

Wie Azure Monitor Transformationen beginnen alle Pipelinetransformationsabfragen mit source, einer virtuellen Tabelle, die den Eingabedatenstrom darstellt. Anschließend können Sie alle unterstützten KQL-Operatoren zum Filtern, Ändern oder Hinzufügen von Spalten zu den Daten wie bei jeder anderen Tabelle verwenden. Die Abfrage wird einzeln auf jeden von der Datenquelle gesendeten Eintrag angewendet.

Weitere Informationen zur Abfragestruktur und unterstützten Operatoren finden Sie unter "Grundlegende Abfragestruktur".

Definieren einer Transformation

Sie definieren Pipelinetransformationen als Teil eines Datenflusses. Konfigurieren Sie sie mithilfe der Azure Portal- oder ARM-Vorlagen. Definieren Sie Ihre eigene benutzerdefinierte Transformation, oder verwenden Sie vordefinierte Vorlagen für allgemeine Muster. Die Syntaxüberprüfung, z. B. das Überprüfen von KQL-Ausdrücken, steht zur Verfügung, um die Genauigkeit zu gewährleisten, bevor Die Konfiguration gespeichert wird. Diese Funktionen bieten flexible und leistungsstarke Datenstrukturierung direkt in Ihrer Überwachungsinfrastruktur.

Um eine Transformation im Azure-Portal zu definieren, wählen Sie Datentransformationen aus. Wählen Sie im Transformations-Editor eine Vorlage aus, die vordefinierte Abfragen für allgemeine Szenarien bereitstellt. Verwenden Sie die Vorlage als Ausgangspunkt, und ändern Sie die KQL-Abfrage nach Bedarf entsprechend Ihren Anforderungen. Verwenden Sie die benutzerdefinierte Vorlage, um mit einer leeren Abfrage zu beginnen.

Screenshot der Vorlagenauswahl für eine Transformation.

Nachdem Sie die Abfrage definiert haben, wählen Sie "KQL-Syntax überprüfen " aus, um die Syntax der Abfrage zu überprüfen, bevor der Datenfluss gespeichert wird. Bei Syslog- und CEF-Daten überprüft der Prüfer auch, ob die aus der Transformation resultierenden Daten mit dem Schema der Tabelle übereinstimmen, an die die Daten gesendet werden. Wenn die Transformation Spalten als Teil einer Aggregation umbenennt oder hinzufügt, werden Sie beispielsweise aufgefordert, diese Transformationen zu entfernen oder stattdessen die Daten an eine benutzerdefinierte Tabelle zu senden. In der folgenden Abbildung ist ein Beispiel angegeben.

Screenshot der KQL-Syntaxprüfung und der typischen Fehlermeldung.

Aggregationen

Eine Aggregation in KQL fasst Daten aus mehreren Datensätzen basierend auf angegebenen Kriterien in einen einzelnen Datensatz zusammen. Sie können beispielsweise Protokolleinträge aggregieren, um den Mittelwert einer numerischen Eigenschaft zu berechnen oder die Anzahl der Vorkommen bestimmter Ereignisse über einen definierten Zeitraum zu zählen. Aggregationen helfen dabei, das Datenvolumen zu reduzieren und Einblicke zu liefern, indem große Datasets in aussagekräftige Zusammenfassungen zusammengefasst werden.

Azure Monitor Pipeline ruft Daten standardmäßig in Intervallen von einminütigen Intervallen ab und verarbeitet sie. Aggregationen bilden sich in einer Pipelinetransformation über jeden Datenbatch, sodass der Prozess jede Minute einen aggregierten Datensatz erstellt. Um dieses Zeitfenster zu ändern, konfigurieren Sie den Batch Prozessor in der Pipelinekonfiguration wie in der Pipelinekonfiguration beschrieben. Sie können das Zeitintervall nicht mithilfe des Azure Portals ändern.

Definieren Sie Aggregationen mithilfe des summarize Operators in KQL. Geben Sie die Aggregationsfunktionen und die Gruppierungskriterien an. Die folgende Abfrage zählt beispielsweise die Anzahl der Ereignisse, die in der letzten Minute gesammelt und nach DestinationIP und DestinationPort gruppiert wurden.

source 
| summarize EventCount=count() by DestinationIP, DestinationPort

Im folgenden Beispiel werden CPU-Auslastungswerte aus Syslog-Nachrichten extrahiert und dann die durchschnittliche und maximale CPU-Auslastung über Intervalle von einer Minute berechnet:

source
| where Facility == "daemon"
| where SyslogMessage has "CPU="
| parse SyslogMessage with * "CPU=" CPUValue:int * 
| summarize AvgCPU = avg(CPUValue), MaxCPU = max(CPUValue)

Aggregationshinweise

  • Wenn Sie den summarize Operator für die Aggregation verwenden, führt die Batchverarbeitung in der Pipeline eine automatische Latenz von bis zu fünf Minuten ein.
  • Sie benötigen immer einen Batchprozessor , um Aggregationen durchzuführen. Ändern Sie den Batchprozessor, um das Aggregationsintervall zu ändern. Vermeiden Sie die Verwendung des Batchprozessors zum Senden von Daten mit minimaler Latenz.
  • Wenn eine Aggregation enthalten ist bin(), erhalten Sie möglicherweise mehrere Datensätze für dasselbe Zeitintervall. Dieses Ergebnis tritt aufgrund der Batchverarbeitung und der Streaming-Art der Datenaufnahme auf.
  • Wenn die Transformation das Schema von Syslog- oder CEF-Daten ändert, senden Sie die Daten an eine benutzerdefinierte Tabelle. Wenn Sie die Transformation mithilfe des Azure Portals erstellen, sind die einzigen verfügbar gemachten Spalten SeverityText, Body und TimeGenerated.

Unterstützte KQL

Erweitern Sie die folgenden Abschnitte für KQL-Funktionen und -Operatoren, die Azure Monitor Pipelinetransformationen unterstützen:

Aggregationen
  • sum()
  • max()
  • min()
  • avg()
  • count()
  • bin()
Filtern
  • where
  • contains
  • has
  • in
  • and
  • or
  • ==
  • !=
  • >
  • >=
  • <
  • <=
Schematisierung
  • extend
  • project
  • project-away
  • project-rename
  • project-keep
  • iif
  • case
  • coalesce
  • parse_json
Funktionen
  • let
Zeichenfolgenfunktionen
  • strlen
  • replace_string
  • substring
  • strcat
  • strcat_delim
  • extract
Konvertierung
  • tostring
  • toint
  • tobool
  • tofloat
  • tolong
  • toreal
  • todouble
  • todatetime
  • totimespan