Trasformazioni di esempio in Monitoraggio di Azure
Le trasformazioni in Monitoraggio di Azure consentono di filtrare o modificare i dati in ingresso prima dell'invio a un'area di lavoro Log Analytics. Questo articolo fornisce query di esempio per scenari comuni che è possibile usare per iniziare a creare trasformazioni personalizzate. Per informazioni dettagliate su come testare queste trasformazioni e aggiungerle a una regola di raccolta dati, vedere Creare una trasformazione in Monitoraggio di Azure.
Ridurre i costi dei dati
Poiché vengono addebitati costi di inserimento per i dati inviati a un'area di lavoro Log Analytics, è necessario filtrare i dati che non è necessario ridurre i costi.
Filtrare righe di dati
Usare un'istruzione where
per filtrare i dati in ingresso che soddisfano requisiti specifici. Se il record in ingresso non corrisponde all'istruzione , il record non viene inviato alla destinazione. Nell'esempio seguente vengono raccolti solo i record con gravità di Critical
.
source | where severity == "Critical"
Filtrare le colonne di dati
Rimuovere colonne dall'origine dati che non sono necessarie per risparmiare sui costi di inserimento dati. Usare un'istruzione project
per specificare le colonne nell'output o usare project-away
per specificare solo le colonne da rimuovere. Nell'esempio seguente la RawData
colonna viene rimossa dall'output.
source | project-away RawData
Analizzare dati importanti da una colonna
Potrebbe essere presente una colonna con dati importanti sepolti in testo eccessivo. Mantenere solo i dati importanti e rimuovere il testo non necessario. Usare funzioni stringa come substring
e extract
per analizzare i dati desiderati. È anche possibile analizzare i dati usando parse
o split
per suddividere una singola colonna in più valori e selezionare quello desiderato. extend
Usare quindi per creare una nuova colonna con i dati analizzati e project-away
rimuovere la colonna originale.
Avviso
Per suggerimenti sull'uso di comandi di analisi complessi, vedere Suddividere i comandi di analisi di grandi dimensioni.
Nell'esempio seguente la RequestContext
colonna contiene JSON con ResourceId dell'area di lavoro. Le parse_json
funzioni e split
vengono usate per estrarre il nome semplice dell'area di lavoro. Viene creata una nuova colonna per questo valore e le altre colonne vengono rimosse.
source
| extend Context = parse_json(RequestContext)
| extend Workspace_CF = tostring(Context['workspaces'][0])
| extend WorkspaceName_CF = split(Workspace_CF,"/")[8]
| project-away RequestContext, Context, Workspace_CF
Inviare righe ai log di base
Inviare righe nei dati che richiedono funzionalità di query di base alle tabelle di log di base per un costo di inserimento inferiore. Per informazioni dettagliate su come inviare dati a più tabelle, vedere Inviare dati a più tabelle .
Rimuovere i dati sensibili
Potrebbe essere presente un'origine dati che invia informazioni che non si desidera archiviare per motivi di privacy o conformità.
Filtrare le informazioni riservate
Usare le stesse strategie descritte in Ridurre i costi dei dati per filtrare intere righe o colonne specifiche che contengono informazioni riservate. Nell'esempio seguente la ClientIP
colonna viene rimossa dall'output.
source | project-away ClientIP
Offuscare le informazioni riservate
Usare funzioni stringa per sostituire informazioni quali cifre in un indirizzo IP o un numero di telefono con un carattere comune. L'esempio seguente sostituisce il nome utente in un indirizzo di posta elettronica con "*****".
source | extend Email = replace_string(Email,substring(Email,0,indexof(Email,"@")),"*****")
Inviare a una tabella alternativa
Inviare record sensibili a una tabella alternativa con diverse configurazioni di controllo degli accessi in base al ruolo. Per informazioni dettagliate su come inviare dati a più tabelle, vedere Inviare dati a più tabelle .
Miglioramento dei dati
Usare una trasformazione per aggiungere informazioni ai dati che forniscono contesto aziendale o semplifica l'esecuzione di query sui dati in un secondo momento. Usare le funzioni stringa per estrarre informazioni critiche da una colonna e quindi usare l'istruzione extend
per aggiungere una nuova colonna all'origine dati. Nell'esempio seguente viene aggiunta una colonna che identifica se un indirizzo IP in un'altra colonna è interno o esterno.
source | extend IpLocation = iff(split(ClientIp,".")[0] in ("10","192"), "Internal", "External")
Formattare i dati per la destinazione
Potrebbe essere presente un'origine dati che invia dati in un formato che non corrisponde alla struttura della tabella di destinazione. Usare una trasformazione per riformattare i dati nello schema richiesto.
Modificare lo schema
Usare comandi come extend
e project
per modificare lo schema dei dati in ingresso in modo che corrispondano alla tabella di destinazione. Nell'esempio seguente viene aggiunta una nuova colonna denominata TimeGenerated
ai dati in uscita usando una funzione KQL per restituire l'ora corrente.
source | extend TimeGenerated = now()
Analizzare i dati
Usare l'operatore split
o parse
per analizzare i dati in più colonne nella tabella di destinazione. Nell'esempio seguente i dati in ingresso hanno una colonna delimitata da virgole denominata RawData
suddivisa in singole colonne per la tabella di destinazione.
source
| project d = split(RawData,",")
| project TimeGenerated=todatetime(d[0]), Code=toint(d[1]), Severity=tostring(d[2]), Module=tostring(d[3]), Message=tostring(d[4])
Avviso
Per suggerimenti sull'uso di comandi di analisi complessi, vedere Suddividere i comandi di analisi di grandi dimensioni.