Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Med transformeringar i Azure Monitor kan du köra en KQL-fråga mot inkommande Azure Monitor-data för att filtrera eller ändra inkommande data innan de lagras på en Log Analytics-arbetsyta. Den här artikeln beskriver KQL-överväganden och funktioner som stöds i omvandlingsfrågor utöver särskilda operatorer som endast är tillgängliga i transformeringar.
Eftersom transformeringar tillämpas på varje post individuellt kan de inte använda några KQL-operatorer som fungerar på flera poster. Endast operatorer som tar en enskild rad som indata och returnerar högst en rad stöds. Till exempel stöds inte sammanfatta eftersom det sammanfattar flera poster.
Endast de operatorer som anges i den här artikeln stöds i transformeringar. Andra operatorer som kan användas i andra loggfrågor stöds inte i transformeringar.
Särskilda överväganden
Tolka kommando
Parsningskommandot i en transformering är begränsat till 10 kolumner per instruktion av prestandaskäl. Om omvandlingen kräver parsning av fler än 10 kolumner delar du upp den i flera instruktioner enligt beskrivningen i Dela upp stora parsningskommandon.
Hantera dynamiska data
Överväg följande indata med dynamiska data:
{
"TimeGenerated" : "2021-11-07T09:13:06.570354Z",
"Message": "Houston, we have a problem",
"AdditionalContext": {
"Level": 2,
"DeviceID": "apollo13"
}
}
Om du vill komma åt egenskaperna i AdditionalContext definierar du det som kolumnen av dynamisk typ i indataströmmen:
"columns": [
{
"name": "TimeGenerated",
"type": "datetime"
},
{
"name": "Message",
"type": "string"
},
{
"name": "AdditionalContext",
"type": "dynamic"
}
]
Innehållet i kolumnen AdditionalContext kan nu parsas och användas i KQL-omvandlingen:
source
| extend parsedAdditionalContext = parse_json(AdditionalContext)
| extend Level = toint (parsedAdditionalContext.Level)
| extend DeviceId = tostring(parsedAdditionalContext.DeviceID)
Dynamiska literaler
Använd funktionen för att hantera parse_json.
Följande frågor ger till exempel samma funktioner:
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":{}}')
Särskilda funktioner
Följande funktioner är endast tillgängliga i transformeringar. De kan inte användas i andra loggfrågor.
parse_cef_dictionary
När du har en sträng som innehåller ett CEF-meddelande, parse_cef_dictionary parsar meddelandets Extension-egenskap till ett dynamiskt nyckel/värde-objekt. Semikolon är ett reserverat tecken som ska ersättas innan råmeddelandet skickas till metoden, som du ser i exemplet.
| 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
Givet en sträng som innehåller en IP-adress, (IPv4 och IPv6 stöds), returnerar funktionen en ungefärlig geografisk plats, inklusive följande attribut:
- Land
- Region
- Stat/län
- Stad
- Breddgrad
- Longitud
| extend GeoLocation = geo_location("1.0.0.5")
Viktigt!
På grund av typen av IP-geoplatstjänst som används av den här funktionen kan den införa svarstid för datainmatning om den används för mycket. Var försiktig när du använder den här funktionen fler än flera gånger per transformering.
Uttalanden som stöds
Let-uttryck
Den högra sidan av let kan vara ett skalärt uttryck, ett tabelluttryck eller en användardefinierad funktion. Endast användardefinierade funktioner med skalära argument stöds.
Tabulära uttrycksutsagor
De enda datakällor som stöds för KQL-instruktionen i en transformering är följande:
source, som representerar källdata. Till exempel:
source | where ActivityId == "383112e4-a7a8-4b94-a701-4266dfc18e41" | project PreciseTimeStamp, Messageprint-operatör, som alltid skapar en enskild rad. Till exempel:print x = 2 + 2, y = 5 | extend z = exp2(x) + exp2(y)
Tabelloperatorer som stöds
extendprojectprintwhereparseproject-awayproject-renamedatatable-
columnifexists(använd columnifexists i stället för column_ifexists)
Skalära operatorer som stöds
Alla numeriska operatorer stöds.
Alla Datetime- och Timespan-aritmetiska operatorer stöds.
Följande strängoperatorer stöds.
- `=
!==~!~contains!containscontains_cs!contains_cshas!hashas_cs!has_csstartswith!startswithstartswith_cs!startswith_csendswith!endswithendswith_cs!endswith_csmatches regexin!in
Följande Bitwise-operatorer stöds.
binary_and()binary_or()binary_xor()binary_not()binary_shift_left()binary_shift_right()
Skalärfunktioner
Bitvis-funktioner
Konverteringsfunktioner
Funktionerna DateTime och TimeSpan
Dynamiska funktioner och matrisfunktioner
Matematiska funktioner
Villkorsstyrda funktioner
Strängfunktioner
-
base64_encodestring(använd base64_encodestring i stället för base64_encode_tostring) -
base64_decodestring(använd base64_decodestring i stället för base64_decode_tostring) countofextractextract_allindexofisemptyisnotemptyparse_jsonsplitstrcatstrcat_delimstrlensubstringtolowertoupperhash_sha256
-
Typfunktioner
Identifierare som citerar
Använd citering av identifierare efter behov.
Nästa steg
- Skapa en datainsamlingsregel och en association till den från en virtuell dator med hjälp av Azure Monitor-agenten.