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 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.