Colonne standard in Log di Monitoraggio di Azure

I dati in Log di Monitoraggio di Azure vengono archiviati come set di record in un'area di lavoro di Log Analytics o in un'applicazione di Application Insights, ognuno con un particolare tipo di dati a cui è assegnato un set di colonne univoco. Molti tipi di dati hanno colonne standard comuni a più tipi. Questo articolo descrive queste colonne e contiene esempi di come usarle nelle query.

Le applicazioni basate sull'area di lavoro in Application Insights archiviano i dati in un'area di lavoro di Log Analytics e usano le stesse colonne standard delle altre tabelle nell'area di lavoro. Le applicazioni classiche archiviano i dati separatamente e hanno colonne standard diverse, come specificato in questo articolo.

Nota

Alcune delle colonne standard non verranno visualizzate nella visualizzazione schema o in IntelliSense in Log Analytics,né nei risultati della query a meno che non si specifichi in modo esplicito la colonna nell'output.

TenantId

La colonna TenantId contiene l'ID dell'area di lavoro per l'area di lavoro di Log Analytics.

TimeGenerated

La colonna TimeGenerated contiene la data e l'ora di creazione del record dall'origine dati. Per altri dettagli, vedere Tempo di inserimento dei dati di log in Monitoraggio di Azure.

TimeGenerated fornisce una colonna comune da usare per filtrare o riepilogare in base all'ora. Quando si seleziona un intervallo di tempo per una visualizzazione o un dashboard nel portale di Azure, viene usato TimeGenerated per filtrare i risultati.

Nota

Le tabelle che supportano le risorse classiche di Application Insights usano la colonna Timestamp anziché la colonna TimeGenerated.

Nota

Il valore TimeGenerated non può essere precedente a 2 giorni prima della ricezione o più di un giorno in futuro. Se in alcuni casi, il valore è precedente a 2 giorni o più di un giorno in futuro, verrà sostituito con l'ora effettiva ricevuta.

Esempi

La query seguente restituisce il numero di eventi di errore creati per ogni giorno della settimana precedente.

Event
| where EventLevelName == "Error" 
| where TimeGenerated between(startofweek(ago(7days))..endofweek(ago(7days))) 
| summarize count() by bin(TimeGenerated, 1day) 
| sort by TimeGenerated asc 

_TimeReceived

La colonna _TimeReceived contiene la data e l'ora in cui il record è stato ricevuto nel cloud di Azure dal punto di inserimento di Monitoraggio di Azure. Questa proprietà può essere utile per identificare i problemi di latenza tra l'origine dati e il cloud. Un esempio può essere un problema di rete che causa un ritardo durante l'invio dei dati da un agente. Per altri dettagli, vedere Tempo di inserimento dei dati di log in Monitoraggio di Azure.

Nota

La colonna _TimeReceived viene calcolata ogni volta che viene usata. Questo processo richiede un utilizzo intensivo delle risorse. Evitare di usarlo per filtrare un numero elevato di record. L'uso ricorrente di questa funzione può comportare un aumento della durata dell'esecuzione delle query.

La query seguente restituisce la latenza media per ora relativa ai record di evento inviati da un agente. Sono inclusi il tempo del trasferimento dall'agente al cloud e il tempo totale in cui il record sarà disponibile per le query sui log.

Event
| where TimeGenerated > ago(1d) 
| project TimeGenerated, TimeReceived = _TimeReceived, IngestionTime = ingestion_time() 
| extend AgentLatency = toreal(datetime_diff('Millisecond',TimeReceived,TimeGenerated)) / 1000
| extend TotalLatency = toreal(datetime_diff('Millisecond',IngestionTime,TimeGenerated)) / 1000
| summarize avg(AgentLatency), avg(TotalLatency) by bin(TimeGenerated,1hr)

Type

La colonna Tipo contiene il nome della tabella da cui è stato recuperato il record, che può essere considerato anche il tipo di record. Questa colonna è utile nelle query che consentono di combinare record da più tabelle, ad esempio quelle che usano l'operatore search, per distinguere tra record di diverso tipo. $table può essere usato al posto di Tipo in alcune query.

Nota

Le tabelle che supportano le risorse classiche di Application Insights usano la colonna itemType anziché la colonna Tipo.

Esempi

La query seguente restituisce il numero di record in base al tipo raccolti nell'ultima ora.

search * 
| where TimeGenerated > ago(1h)
| summarize count() by Type

_ItemId

La proprietà _ItemId contiene un identificatore univoco per il record.

_ResourceId

La colonna _ResourceId contiene un identificatore univoco per la risorsa a cui è associato il record. Si ottiene così una colonna standard da utilizzare per definire l'ambito della query solo ai record di una determinata risorsa oppure per unire i dati correlati tra più tabelle.

Per le risorse di Azure, il valore di _ResourceId è l'URL dell'ID risorsa di Azure. La colonna è limitata alle risorse di Azure, incluse le risorse di Azure Arc o ai log personalizzati che hanno indicato l'ID risorsa durante l'inserimento.

Nota

Alcuni tipi di dati dispongono già di campi che contengono l'ID risorsa di Azure o almeno una parte di esso, ad esempio l'ID sottoscrizione. Mentre questi campi vengono mantenuti per motivi di compatibilità con le versioni precedenti, è consigliabile usare _ResourceId per eseguire la correlazione incrociata dal momento che sarà più coerente.

Esempi

La query seguente crea un join dei dati delle prestazioni e degli eventi per ogni computer. Mostra tutti gli eventi con ID 101 e un utilizzo del processore del 50%.

Perf 
| where CounterName == "% User Time" and CounterValue  > 50 and _ResourceId != "" 
| join kind=inner (     
    Event 
    | where EventID == 101 
) on _ResourceId

La query seguente crea un join dei record AzureActivity con i record SecurityEvent. Mostra tutte le operazioni di attività con utenti che hanno effettuato l'accesso a tali macchine.

AzureActivity 
| where  
    OperationName in ("Restart Virtual Machine", "Create or Update Virtual Machine", "Delete Virtual Machine")  
    and ActivityStatus == "Succeeded"  
| join kind= leftouter (    
   SecurityEvent 
   | where EventID == 4624  
   | summarize LoggedOnAccounts = makeset(Account) by _ResourceId 
) on _ResourceId  

La query seguente analizza _ResourceId e aggrega i volumi di dati fatturati per ogni Gruppo di risorse di Azure.

union withsource = tt * 
| where _IsBillable == true 
| parse tolower(_ResourceId) with "/subscriptions/" subscriptionId "/resourcegroups/" 
    resourceGroup "/providers/" provider "/" resourceType "/" resourceName   
| summarize Bytes=sum(_BilledSize) by resourceGroup | sort by Bytes nulls last 

Usare queste query union withsource = tt * solo se necessario, poiché le analisi tra tipi di dati sono costose.

È sempre più efficiente usare la colonna _SubscriptionId rispetto all'estrazione analizzando la colonna _ResourceId.

_SubscriptionId

La colonna _SubscriptionId contiene l'ID sottoscrizione della risorsa a cui è associato il record. In questo modo è disponibile una colonna standard da usare per definire l'ambito della query solo per i record di una determinata sottoscrizione o per confrontare sottoscrizioni diverse.

Per le risorse di Azure, il valore di __SubscriptionId è la parte della sottoscrizione dell'URL dell'ID della risorsa di Azure. La colonna è limitata alle risorse di Azure, incluse le risorse di Azure Arc o ai log personalizzati che hanno indicato l'ID sottoscrizione durante l'inserimento.

Nota

Alcuni tipi di dati includono già campi che contengono l'ID sottoscrizione di Azure. Mentre questi campi vengono mantenuti per motivi di compatibilità con le versioni precedenti, è consigliabile usare la colonna _SubscriptionId per eseguire la correlazione incrociata dal momento che sarà più coerente.

Esempi

La query seguente esamina i dati sulle prestazioni per i computer di una sottoscrizione specifica.

Perf 
| where TimeGenerated > ago(24h) and CounterName == "memoryAllocatableBytes"
| where _SubscriptionId == "ebb79bc0-aa86-44a7-8111-cabbe0c43993"
| summarize avgMemoryAllocatableBytes = avg(CounterValue) by Computer

La query seguente analizza _ResourceId e aggrega i volumi di dati fatturati per ogni sottoscrizione di Azure.

union withsource = tt * 
| where _IsBillable == true 
| summarize Bytes=sum(_BilledSize) by _SubscriptionId | sort by Bytes nulls last 

Usare queste query union withsource = tt * solo se necessario, poiché le analisi tra tipi di dati sono costose.

_IsBillable

La colonna _IsBillable specifica se i dati inseriti sono considerati fatturabili. I dati con _IsBillable pari a false non comportano addebiti per l'inserimento, la conservazione o l'archiviazione dei dati.

Esempi

Per ottenere un elenco di computer che inviano i tipi di dati fatturati, usare la query seguente:

Nota

Usare le query con union withsource = tt * solo se necessario, poiché le analisi tra tipi di dati costituiscono un processo costoso.

union withsource = tt * 
| where _IsBillable == true 
| extend computerName = tolower(tostring(split(Computer, '.')[0]))
| where computerName != ""
| summarize TotalVolumeBytes=sum(_BilledSize) by computerName

Questo processo può essere esteso per restituire il conteggio orario dei computer che inviano tipi di dati fatturati:

union withsource = tt * 
| where _IsBillable == true 
| extend computerName = tolower(tostring(split(Computer, '.')[0]))
| where computerName != ""
| summarize dcount(computerName) by bin(TimeGenerated, 1h) | sort by TimeGenerated asc

_BilledSize

La colonna _BilledSize specifica la dimensione in byte dei dati che verranno fatturati all'Azure se la proprietà _IsBillable è true. Per altre informazioni sul modo in cui vengono calcolate le dimensioni fatturate, vedere Calcolo delle dimensioni dei dati.

Esempi

Per vedere le dimensioni degli eventi fatturabili inseriti per computer, usare la colonna _BilledSize che fornisce la dimensione in byte:

union withsource = tt * 
| where _IsBillable == true 
| summarize Bytes=sum(_BilledSize) by  Computer | sort by Bytes nulls last 

Per visualizzare la quantità di eventi fatturabili inseriti per sottoscrizione, usare la query seguente:

union withsource=table * 
| where _IsBillable == true 
| summarize Bytes=sum(_BilledSize) by  _SubscriptionId | sort by Bytes nulls last 

Per visualizzare la quantità di eventi fatturabili inseriti per gruppo di risorse, usare la query seguente:

union withsource=table * 
| where _IsBillable == true 
| parse _ResourceId with "/subscriptions/" SubscriptionId "/resourcegroups/" ResourceGroupName "/" *
| summarize Bytes=sum(_BilledSize) by  _SubscriptionId, ResourceGroupName | sort by Bytes nulls last 

Per visualizzare il numero di eventi inseriti per computer, usare la query seguente:

union withsource = tt *
| summarize count() by Computer | sort by count_ nulls last

Per visualizzare il numero di eventi fatturabili inseriti per computer, usare la query seguente:

union withsource = tt * 
| where _IsBillable == true 
| summarize count() by Computer  | sort by count_ nulls last

Per visualizzare il numero di tipi di dati fatturabili inseriti da un computer specifico, usare la query seguente:

union withsource = tt *
| where Computer == "computer name"
| where _IsBillable == true 
| summarize count() by tt | sort by count_ nulls last 

Passaggi successivi