Ondersteunde KQL-functies in Azure Monitor-transformaties
Met transformaties in Azure Monitor kunt u een KQL-query uitvoeren op binnenkomende Azure Monitor-gegevens om binnenkomende gegevens te filteren of te wijzigen voordat deze worden opgeslagen in een Log Analytics-werkruimte. In dit artikel vindt u informatie over KQL-overwegingen en ondersteunde functies in transformatiequery's, naast speciale operators die alleen beschikbaar zijn in transformaties.
Omdat transformaties afzonderlijk op elke record worden toegepast, kunnen ze geen KQL-operators gebruiken die op meerdere records reageren. Alleen operators die één rij als invoer gebruiken en die niet meer dan één rij retourneren, worden ondersteund. Samenvatten wordt bijvoorbeeld niet ondersteund omdat het meerdere records samenvat.
Alleen de operators die in dit artikel worden vermeld, worden ondersteund in transformaties. Alle andere operators die kunnen worden gebruikt in andere logboekquery's, worden niet ondersteund in transformaties.
Speciale overwegingen
Opdracht Parseren
De opdracht parseren in een transformatie is beperkt tot 10 kolommen per instructie om prestatieredenen. Als voor uw transformatie meer dan 10 kolommen moeten worden geparseerd, splitst u deze in meerdere instructies, zoals beschreven in grote parseringsopdrachten.
Dynamische gegevens verwerken
Houd rekening met de volgende invoer met dynamische gegevens:
{
"TimeGenerated" : "2021-11-07T09:13:06.570354Z",
"Message": "Houston, we have a problem",
"AdditionalContext": {
"Level": 2,
"DeviceID": "apollo13"
}
}
Als u toegang wilt krijgen tot de eigenschappen in AdditionalContext, definieert u deze als kolom voor dynamisch type in de invoerstroom:
"columns": [
{
"name": "TimeGenerated",
"type": "datetime"
},
{
"name": "Message",
"type": "string"
},
{
"name": "AdditionalContext",
"type": "dynamic"
}
]
De inhoud van de kolom AdditionalContext kan nu worden geparseerd en gebruikt in de KQL-transformatie:
source
| extend parsedAdditionalContext = parse_json(AdditionalContext)
| extend Level = toint (parsedAdditionalContext.Level)
| extend DeviceId = tostring(parsedAdditionalContext.DeviceID)
Dynamische letterlijke waarden
Gebruik de parse_json
functie om dynamische letterlijke waarden te verwerken.
De volgende query's bieden bijvoorbeeld dezelfde functionaliteit:
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":{}}')
Speciale functies
De volgende functies zijn alleen beschikbaar in transformaties. Ze kunnen niet worden gebruikt in andere logboekquery's.
parse_cef_dictionary
Gezien een tekenreeks met een CEF-bericht parseert u parse_cef_dictionary
de extensie-eigenschap van het bericht in een dynamisch sleutel-/waardeobject. Puntkomma is een gereserveerd teken dat moet worden vervangen voordat het onbewerkte bericht in de methode wordt doorgegeven, zoals wordt weergegeven in het voorbeeld.
| 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
Gezien een tekenreeks met IP-adres (IPv4 en IPv6 worden ondersteund), geo_location
retourneert de functie een geschatte geografische locatie, waaronder de volgende kenmerken:
- Land/regio
- Regio
- Provincie
- City
- Breedtegraad
- Lengtegraad
| extend GeoLocation = geo_location("1.0.0.5")
Belangrijk
Vanwege de aard van de IP-geolocatieservice die door deze functie wordt gebruikt, kan dit leiden tot gegevensopnamelatentie als deze overmatig wordt gebruikt. Wees voorzichtig bij het gebruik van deze functie meer dan meerdere keren per transformatie.
Ondersteunde instructies
Let-instructie
De rechterkant van let
kan een scalaire expressie, een tabellaire expressie of een door de gebruiker gedefinieerde functie zijn. Alleen door de gebruiker gedefinieerde functies met scalaire argumenten worden ondersteund.
Tabellaire expressie-instructies
De enige ondersteunde gegevensbronnen voor de KQL-instructie in een transformatie zijn als volgt:
bron, die de brongegevens vertegenwoordigt. Voorbeeld:
source | where ActivityId == "383112e4-a7a8-4b94-a701-4266dfc18e41" | project PreciseTimeStamp, Message
print
operator, die altijd één rij produceert. Voorbeeld:print x = 2 + 2, y = 5 | extend z = exp2(x) + exp2(y)
Ondersteunde operators in tabelvorm
extend
project
print
where
parse
project-away
project-rename
datatable
columnifexists
(gebruik columnifexists in plaats van column_ifexists)
Ondersteunde scalaire operators
- Alle numerieke operators worden ondersteund.
- Rekenkundige operatoren voor alle datum/tijd- en tijdspanne worden ondersteund.
- De volgende tekenreeksoperators worden ondersteund.
- `=
!=
=~
!~
contains
!contains
contains_cs
!contains_cs
has
!has
has_cs
!has_cs
startswith
!startswith
startswith_cs
!startswith_cs
endswith
!endswith
endswith_cs
!endswith_cs
matches regex
in
!in
- De volgende Bitwise-operators worden ondersteund.
binary_and()
binary_or()
binary_xor()
binary_not()
binary_shift_left()
binary_shift_right()
Scalaire functies
- Bitsgewijze functies
- Conversiefuncties
- De functies DateTime en TimeSpan
- Dynamische en matrixfuncties
- Wiskundige functies
- Voorwaardelijke functies
- Tekenreeksfuncties
base64_encodestring
(gebruik base64_encodestring in plaats van base64_encode_tostring)base64_decodestring
(gebruik base64_decodestring in plaats van base64_decode_tostring)countof
extract
extract_all
indexof
isempty
isnotempty
parse_json
replace
split
strcat
strcat_delim
strlen
substring
tolower
toupper
hash_sha256
- Typefuncties
Id-quotering
Gebruik id-quotering zoals vereist.
Volgende stappen
- Maak een regel voor gegevensverzameling en een koppeling naar deze regel vanaf een virtuele machine met behulp van de Azure Monitor-agent.