Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Mit Transformationen in Azure Monitor können Sie eine KQL-Abfrage für eingehende Azure Monitor-Daten ausführen, um eingehende Daten zu filtern oder zu ändern, bevor sie in einem Log Analytics-Arbeitsbereich gespeichert werden. In diesem Artikel werden KQL-Überlegungen und unterstützte Features in Transformationsabfragen zusätzlich zu speziellen Operatoren erläutert, die nur in Transformationen verfügbar sind.
Da die Transformationen auf jeden Datensatz einzeln angewendet werden, können sie keine KQL-Operatoren verwenden, die auf mehrere Datensätze angewendet werden. Nur Operatoren, die eine einzelne Zeile als Eingabe verwenden und nicht mehr als eine Zeile zurückgeben, werden unterstützt. Beispielsweise wird summarize nicht unterstützt, da damit mehrere Datensätze zusammengefasst werden.
Nur die in diesem Artikel aufgeführten Operatoren werden in Transformationen unterstützt. Alle anderen Operatoren, die in anderen Protokollabfragen verwendet werden können, werden in Transformationen nicht unterstützt.
Besondere Überlegungen
Befehl „parse“
Der Befehl parse in einer Transformation ist aus Leistungsgründen auf 10 Spalten pro Anweisung beschränkt. Wenn bei Ihrer Transformation mehr als 10 Spalten geparst werden müssen, teilen Sie sie in mehrere Anweisungen auf, wie in Aufteilen großer Parse-Befehle beschrieben wird.
Verarbeiten dynamischer Daten
Betrachten Sie die folgende Eingabe mit dynamischen Daten:
{
"TimeGenerated" : "2021-11-07T09:13:06.570354Z",
"Message": "Houston, we have a problem",
"AdditionalContext": {
"Level": 2,
"DeviceID": "apollo13"
}
}
Um auf die Eigenschaften in AdditionalContext zuzugreifen, definieren Sie die Spalte im Eingabestream als Spalte des dynamischen Typs:
"columns": [
{
"name": "TimeGenerated",
"type": "datetime"
},
{
"name": "Message",
"type": "string"
},
{
"name": "AdditionalContext",
"type": "dynamic"
}
]
Der Inhalt der AdditionalContext-Spalte kann jetzt analysiert und in der KQL-Transformation verwendet werden:
source
| extend parsedAdditionalContext = parse_json(AdditionalContext)
| extend Level = toint (parsedAdditionalContext.Level)
| extend DeviceId = tostring(parsedAdditionalContext.DeviceID)
Dynamische Literale
Verwenden Sie die parse_json-Funktion zum Verarbeiten dynamischer Literale.
So ergeben beispielsweise die folgenden Abfragen die gleiche Funktionalität:
print d=dynamic({"a":123, "b":"hello", "c":[1,2,3], "d":{}})
print d=parse_json('{"a":123, "b":"hello", "c":[1,2,3], "d":{}}')
Sonderfunktionen
Die folgenden Funktionen stehen nur in Transformationen zur Verfügung. Sie können nicht in anderen Protokollabfragen verwendet werden.
parse_cef_dictionary
Bei einer Zeichenfolge, die eine CEF-Nachricht enthält, parst parse_cef_dictionary die Erweiterungseigenschaft der Nachricht in ein dynamisches Schlüssel/Wert-Objekt. Das Semikolon ist ein reserviertes Zeichen, das vor dem Übergeben der unformatierten Nachricht an die Methode ersetzt werden muss (siehe folgendes Beispiel).
| extend cefMessage=iff(cefMessage contains_cs ";", replace(";", " ", cefMessage), cefMessage)
| extend parsedCefDictionaryMessage =parse_cef_dictionary(cefMessage)
| extend parsecefDictionaryExtension = parsedCefDictionaryMessage["Extension"]
| project TimeGenerated, cefMessage, parsecefDictionaryExtension
geo_location
Bei einer Zeichenfolge, die eine IP-Adresse enthält (IPv4 und IPv6 werden unterstützt), gibt die Funktion geo_location den ungefähren geografischen Standort zurück, einschließlich der folgenden Attribute:
- Staat
- Region
- Staat
- Stadt
- Latitude (Breitengrad)
- Längengrad
| extend GeoLocation = geo_location("1.0.0.5")
Von großer Bedeutung
Aufgrund der Art des von dieser Funktion genutzten IP-Geolokalisierungsdienstes kann es bei übermäßiger Nutzung zu Latenzzeiten bei der Datenaufnahme kommen. Seien Sie vorsichtig, wenn Sie diese Funktion mehr als ein paar Mal pro Transformation verwenden.
Unterstützte Anweisungen
let-Anweisung
Die rechte Seite von let kann ein Skalarausdruck, ein tabellarischer Ausdruck oder eine vom Benutzer definierte Funktion sein. Nur benutzerdefinierte Funktionen mit Skalarargumenten werden unterstützt.
Anweisungen für tabellarische Ausdrücke
Die einzigen unterstützten Datenquellen für die KQL-Anweisung in einer Transformation sind wie folgt:
source, die die Quelldaten darstellt. Beispiel:
source | where ActivityId == "383112e4-a7a8-4b94-a701-4266dfc18e41" | project PreciseTimeStamp, Messageprint-Operator, der immer eine einzelne Zeile erzeugt Beispiel:print x = 2 + 2, y = 5 | extend z = exp2(x) + exp2(y)
Unterstützte tabellarische Operatoren
extendprojectprintwhereparseproject-awayproject-renamedatatablecolumnifexists(Verwenden Sie „columnifexists“ anstelle von „column_ifexists“.)
Unterstützte Skalaroperatoren
Alle numerischen Operatoren werden unterstützt.
Alle arithmetischen Operatoren „Datetime“ und „Timespan“ werden unterstützt.
Folgende Zeichenfolgenoperatoren werden unterstützt.
- `=
!==~!~contains!containscontains_cs!contains_cshas!hashas_cs!has_csstartswith!startswithstartswith_cs!startswith_csendswith!endswithendswith_cs!endswith_csmatches regexin!in
Folgende bitweise Operatoren werden unterstützt.
binary_and()binary_or()binary_xor()binary_not()binary_shift_left()binary_shift_right()
Skalarfunktionen
Bitweise Funktionen
Konvertierungsfunktionen
Funktionen für „DateTime“ und „TimeSpan“
Dynamische Funktionen und Arrayfunktionen
Mathematische Funktionen
Bedingte Funktionen
Zeichenfolgenfunktionen
base64_encodestring(Verwenden Sie „base64_encodestring“ anstelle von „base64_encode_tostring“.)base64_decodestring(Verwenden Sie „base64_decodestring“ anstelle von „base64_decode_tostring“.)countofextractextract_allindexofisemptyisnotemptyparse_jsonsplitstrcatstrcat_delimstrlensubstringtolowertoupperhash_sha256
Typfunktionen
Anführungszeichen bei Bezeichnern
Verwenden Sie nach Bedarf Anführungszeichen bei Bezeichnern.
Nächste Schritte
- Erstellen Sie eine Datensammlungsregel und eine entsprechende Zuordnung von einem virtuellen Computer aus, indem Sie den Azure Monitor-Agent verwenden.

