Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Le trasformazioni in Monitoraggio di Azure consentono di eseguire una query KQL sui dati di Monitoraggio di Azure in ingresso per filtrare o modificare i dati in ingresso prima che vengano archiviati in un'area di lavoro Log Analytics. Questo articolo illustra in dettaglio le considerazioni KQL e le funzionalità supportate nelle query di trasformazione oltre a operatori speciali disponibili solo nelle trasformazioni.
Poiché le trasformazioni vengono applicate a ogni record singolarmente, non possono usare operatori KQL che agiscono su più record. Sono supportati solo gli operatori che accettano una singola riga come input e non restituiscono più righe. Ad esempio, summarize non è supportato perché riepiloga più record.
Nelle trasformazioni sono supportati solo gli operatori elencati in questo articolo. Gli altri operatori che possono essere usati in altre query di log non sono supportati nelle trasformazioni.
Considerazioni speciali
Comando Parse
Il comando parse in una trasformazione è limitato a 10 colonne per istruzione per motivi di prestazioni. Se la trasformazione richiede l'analisi di più di 10 colonne, suddividerla in più istruzioni, come descritto in Suddividere i comandi di analisi di grandi dimensioni.
Gestione di dati dinamici
Considerare l'input seguente con i dati dinamici:
{
"TimeGenerated" : "2021-11-07T09:13:06.570354Z",
"Message": "Houston, we have a problem",
"AdditionalContext": {
"Level": 2,
"DeviceID": "apollo13"
}
}
Per accedere alle proprietà in AdditionalContext, definirlo come colonna di tipo dinamico nel flusso di input:
"columns": [
{
"name": "TimeGenerated",
"type": "datetime"
},
{
"name": "Message",
"type": "string"
},
{
"name": "AdditionalContext",
"type": "dynamic"
}
]
Il contenuto della colonna AdditionalContext può ora essere analizzato e usato nella trasformazione KQL:
source
| extend parsedAdditionalContext = parse_json(AdditionalContext)
| extend Level = toint (parsedAdditionalContext.Level)
| extend DeviceId = tostring(parsedAdditionalContext.DeviceID)
Valori letterali dinamici
Usare la parse_json funzione per gestire valori letterali dinamici.
Ad esempio, le query seguenti forniscono la medesima funzionalità:
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":{}}')
Funzioni speciali
Le funzioni seguenti sono disponibili solo nelle trasformazioni. Non possono essere usati in altre query di log.
parse_cef_dictionary
Data una stringa contenente un messaggio CEF, parse_cef_dictionary analizza la proprietà Extension del messaggio in un oggetto chiave/valore dinamico. Il punto e virgola è un carattere riservato che deve essere sostituito prima di passare il messaggio non elaborato nel metodo, come illustrato nell'esempio.
| 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
Data una stringa contenente l'indirizzo IP (sono supportati IPv4 e IPv6), la funzione geo_location restituisce una posizione geografica approssimativa, inclusi gli attributi seguenti:
- Paese
- Area geografica
- stato
- Città
- Latitudine
- Longitudine
| extend GeoLocation = geo_location("1.0.0.5")
Importante
A causa della natura del servizio di georilevazione dell’IP utilizzato da questa funzione, può introdurre una latenza di inserimento dati se usata in modo eccessivo. Prestare attenzione quando si usa questa funzione più volte per ogni trasformazione.
Istruzioni supportate
Dichiarazione let
Il lato destro di let può essere un'espressione scalare, un'espressione tabulare o una funzione definita dall'utente. Sono supportate solo le funzioni definite dall'utente con argomenti scalari.
Dichiarazioni di espressioni tabulari
Di seguito sono riportate le uniche origini dati supportate per l'istruzione KQL in una trasformazione:
source, che rappresenta i dati di origine. Per esempio:
source | where ActivityId == "383112e4-a7a8-4b94-a701-4266dfc18e41" | project PreciseTimeStamp, Messageprintoperatore, che produce sempre una singola riga. Per esempio:print x = 2 + 2, y = 5 | extend z = exp2(x) + exp2(y)
Operatori tabulari supportati
extendprojectprintwhereparseproject-awayproject-renamedatatablecolumnifexists(usare columnifexists invece di column_ifexists)
Operatori scalari supportati
Sono supportati tutti gli operatori numerici .
Sono supportati tutti gli operatori aritmetici Datetime e Timespan .
Sono supportati gli operatori String seguenti.
- `=
!==~!~contains!containscontains_cs!contains_cshas!hashas_cs!has_csstartswith!startswithstartswith_cs!startswith_csendswith!endswithendswith_cs!endswith_csmatches regexin!in
Sono supportati gli operatori bit per bit seguenti.
binary_and()binary_or()binary_xor()binary_not()binary_shift_left()binary_shift_right()
Funzioni scalari
Funzioni Bitwise
Funzioni di conversione
Funzioni DateTime e TimeSpan
Funzioni Dinamiche e matrice
Funzioni matematiche
Funzioni condizionali
Funzioni di stringa
base64_encodestring(usare base64_encodestring anziché base64_encode_tostring)base64_decodestring(usare base64_decodestring anziché base64_decode_tostring)countofextractextract_allindexofisemptyisnotemptyparse_jsonsplitstrcatstrcat_delimstrlensubstringtolowertoupperhash_sha256
Funzioni per i tipi
Virgolette identificatore
Usare le virgolette identificatore in base alle esigenze.
Passaggi successivi
- Creare una regola di raccolta dati e associarla a una macchina virtuale usando l'Agente di Azure Monitor.

