Condividi tramite


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.

Passaggi successivi