Colunas padrão nos logs do Azure Monitor

Os dados em logs de Azure Monitor são armazenados como um conjunto de registros em um workspace do Log Analytics ou um aplicativo do Application Insights, cada um com um tipo de dados específico que tem um conjunto exclusivo de colunas. Muitos tipos de dados terão colunas padrão comuns a vários tipos. Este artigo descreve essas colunas e fornece exemplos de como você pode usá-las em consultas.

Os aplicativos baseados em workspace no Application Insights armazenam dados em um workspace do Log Analytics e usam as mesmas colunas padrão que outras tabelas no workspace. Os aplicativos clássicos armazenam seus dados separadamente e têm colunas padrão diferentes, conforme especificado neste artigo.

Observação

Algumas das colunas padrão não serão mostradas na exibição de esquema ou no IntelliSense no Log Analytics e não serão mostradas nos resultados da consulta, a menos que você especifique explicitamente a coluna na saída.

TenantId

A coluna TenantId contém a ID do workspace para o workspace do Log Analytics.

TimeGenerated

A coluna TimeGenerated contém a data e a hora em que o registro foi criado pela fonte de dados. Confira Tempo de ingestão de dados de log no Azure Monitor para obter mais detalhes.

O TimeGenerated fornecem uma coluna comum a ser usada para filtrar ou resumir pela hora. Quando você seleciona um intervalo de tempo para uma exibição ou um painel no portal do Azure, ele usa TimeGenerated para filtrar os resultados.

Observação

As tabelas compatíveis com os recursos clássicos de Application Insights usam a coluna Timestamp em vez de a coluna TimeGenerated.

Observação

O valor TimeGenerated não pode ter mais de 2 dias antes do horário recebido ou mais de um dia no futuro. Se, em alguma situação, o valor for maior que 2 dias ou mais de um dia no futuro, ele será substituído pelo tempo real recebido.

Exemplos

A consulta a seguir retorna o número de eventos de erro criados em cada dia da semana anterior.

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

_TimeReceived

A coluna _TimeReceived contém a data e a hora em que o registro foi recebido pelo ponto de ingestão de Azure Monitor na nuvem do Azure. Isso pode ser útil para identificar problemas de latência entre a fonte de dados e a nuvem. Um exemplo seria um problema de rede causando um atraso no envio dos dados por um agente. Confira Tempo de ingestão de dados de log no Azure Monitor para obter mais detalhes.

Observação

A coluna _TimeReceived é calculada sempre que é usada. Esse processo consome muitos recursos. Evite usá-lo para filtrar um grande número de registros. Usar essa função recorrentemente pode aumentar a duração de execução de consulta.

A consulta a seguir fornece a latência média por hora para registros de eventos de um agente. Isso inclui o tempo do agente para a nuvem e o tempo total para que o registro esteja disponível para consultas de 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)

Tipo

A coluna Type contém o nome da tabela da qual o registro foi recuperado, que também pode ser considerada como o tipo de registro. Essa coluna é útil em consultas que combinam registros de várias tabelas, como aqueles que usam o operador search, para distinguir entre registros de tipos diferentes. $table pode ser usado no lugar de Type em algumas consultas.

Observação

As tabelas que tem suporte para recursos clássicos de Application Insights usam a coluna itemType em vez da coluna Type.

Exemplos

A consulta a seguir retorna a contagem de registros por tipo coletados na última hora.

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

_ItemId

A coluna _ItemId contém um identificador exclusivo para o registro.

_ResourceId

A coluna _ResourceId contém um identificador exclusivo do recurso ao qual o registro está associado. Isso lhe dá uma coluna padrão a ser usada para definir o escopo de sua consulta apenas aos registros de um recurso específico ou para unir dados relacionados em várias tabelas.

Para recursos do Azure, o valor de _ResourceId é a URL de ID de recurso do Azure. A coluna é limitada aos recursos do Azure, incluindo os recursos do Azure Arc ou a logs personalizados que indicaram a ID do recurso durante a ingestão.

Observação

Alguns tipos de dados já têm campos que contêm a ID de recurso do Azure ou, pelo menos, partes dele, como a ID da assinatura. Embora esses campos sejam mantidos para manter a compatibilidade com versões anteriores, é recomendável usar _ResourceId para executar a correlação cruzada, uma vez que ela é mais consistente.

Exemplos

A consulta a seguir une dados de desempenho e de eventos de cada computador. Ele mostra todos os eventos com a ID 101 e utilização do processador acima de 50%.

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

A consulta a seguir une registros de AzureActivity com registros de SecurityEvent. Ele mostra todas as operações de atividade com usuários que foram registradas nesses computadores.

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  

A consulta a seguir analisa _ResourceId e agrega os volumes de dados cobrados por Grupo de Recursos do 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 

Use estas consultas union withsource = tt * com moderação como verificações em tipos de dados que são caros para executar.

É sempre mais eficiente usar a coluna _SubscriptionId do que extraí-la analisando a coluna _ResourceId.

_SubscriptionId

A coluna _SubscriptionId contém a ID da assinatura do recurso ao qual o registro está associado. Isso apresenta uma coluna padrão a ser usada para definir o escopo de sua consulta apenas aos registros de uma assinatura em particular ou para comparar diferentes assinaturas.

Para recursos do Azure, o valor de _SubscriptionId é a parte de assinatura da URL de ID de recurso do Azure. A coluna é limitada aos recursos do Azure, incluindo os recursos do Azure Arc ou a logs personalizados que indicaram a ID da assinatura durante a ingestão.

Observação

Alguns tipos de dados já têm campos que contêm a ID de assinatura do Azure. Embora esses campos sejam mantidos para manter a compatibilidade com versões anteriores, é recomendável usar a coluna _SubscriptionId para executar a correlação cruzada, uma vez que ela é mais consistente.

Exemplos

A consulta a seguir examina os dados de desempenho para computadores de uma assinatura específica.

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

A consulta a seguir analisa _ResourceId e agrega os volumes de dados cobrados por assinatura do Azure.

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

Use estas consultas union withsource = tt * com moderação como verificações em tipos de dados que são caros para executar.

_IsBillable

A coluna _IsBillable especifica se os dados ingeridos são considerados faturáveis. Os dados com _IsBillable iguais a false não incorrem em uma cobrança de ingestão, retenção ou arquivamento de dados.

Exemplos

Para obter uma lista de computadores que estão enviando os tipos de dados cobrados, use a seguinte consulta:

Observação

Use consultas com union withsource = tt * com moderação, pois a execução de exames entre diferentes tipos de dados é cara.

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

Isso pode ser estendido para retornar a contagem de computadores por hora que estão enviando tipos de dados cobrados:

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

A coluna _BilledSize especifica o tamanho em bytes de dados que são cobrados na sua conta do Azure se _IsBillable é true. Confira Cálculo de tamanho de dados para saber mais detalhes sobre como o tamanho cobrado é calculado.

Exemplos

Para ver os tamanho de eventos cobráveis ingeridos por computador, use a coluna _BilledSize que fornece o tamanho em bytes:

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

Para ver o tamanho de eventos cobráveis ingeridos por assinatura, use a seguinte consulta:

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

Para ver a contagem de eventos cobráveis ingeridos por grupo de recursos, use a seguinte consulta:

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 

Para ver a contagem de eventos ingeridos por computador, use a seguinte consulta:

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

Para ver a contagem de eventos cobráveis ingeridos por computador, use a seguinte consulta:

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

Para ver a contagem de tipos de dados cobráveis de um computador específico, use a seguinte consulta:

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

Próximas etapas