Condividi tramite


Trasformazioni di esempio nel 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é ti vengono addebitati i costi di inserimento per qualsiasi dato inviato a un'area di lavoro Log Analytics, è opportuno filtrare i dati non necessari per 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 alla dichiarazione, 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 le colonne non necessarie dall'origine dati 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 di stringa come substring e extract per analizzare i dati che desideri. È 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.

Avvertimento

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

Invia righe ai log di base

Invia le righe dei tuoi dati che richiedono capacità di query di base alle tabelle di log di base per ridurre i costi di inserimento. 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 le funzioni di stringa per sostituire informazioni, come le 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 funzioni di stringa per estrarre informazioni critiche da una colonna e quindi usare l'istruzione extend per aggiungere una nuova colonna alla fonte dei 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")

Normalizzare i dati

Normalizzare i dati in uno schema comune per semplificare l'esecuzione di query e la creazione di report, ad esempio Advanced Security Information Model (ASIM) usato da Microsoft Sentinel. Usare una trasformazione per normalizzare i dati in fase di inserimento, come descritto in Normalizzazione del tempo di inserimento.

Nell'esempio seguente i dati in ingresso vengono trasformati nello schema normalizzato della tabella ASimAuditEventLogs .

source
| project TimeGenerated = timestamp, EventOwner=owner, EventMessage=message, EventResult=result, EventSeverity=severity

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])

Avvertimento

Per suggerimenti sull'uso di comandi di analisi complessi, vedere Suddividere i comandi di analisi di grandi dimensioni.

Passaggi successivi