Columnas estándar en registros de Azure Monitor

Los datos de los registros de Azure Monitor se almacenan como un conjunto de registros en un área de trabajo de Log Analytics o una aplicación de Application Insights, cada uno con un tipo de datos determinado que tiene un conjunto singular de columnas. Muchos tipos de datos tendrán columnas estándar que son comunes entre varios tipos. En este artículo se describen estas columnas y se proporcionan ejemplos de cómo puede usarlas en las consultas.

Las aplicaciones basadas en el área de trabajo de Application Insights almacenan sus datos en un área de trabajo de Log Analytics y usan las mismas columnas estándar que las tablas del área de trabajo. Las aplicaciones clásicas almacenan sus datos por separado y tienen diferentes columnas estándar, como se especifica en este artículo.

Nota

Algunas de las columnas estándar no se mostrarán en la vista de esquema ni en IntelliSense en Log Analytics y no aparecerán en los resultados de la consulta, a menos que especifique explícitamente la columna de la salida.

TenantId

La columna TenantId contiene el identificador del área de trabajo de Log Analytics.

TimeGenerated

La columna TimeGenerated contiene la fecha y la hora en que el origen de datos creó el registro. Consulte Tiempo de la ingesta de datos de registro en Azure Monitor para más detalles.

TimeGenerated proporciona una columna común para filtrar o resumir por tiempo. Cuando se selecciona un intervalo de tiempo para una vista o panel en Azure Portal, se utiliza TimeGenerated para filtrar los resultados.

Nota

Las tablas que admiten recursos de Application Insights clásicos usan la columna Timestamp en lugar de la columna TimeGenerated.

Nota

El valor de TimeGenerated no puede ser más antiguo que 2 días antes de la hora de recepción o más de un día en el futuro. Si en alguna situación, el valor tiene más de 2 días o más de un día en el futuro, se reemplazará con el tiempo real recibido.

Ejemplos

La consulta siguiente devuelve el número de eventos de error creados para cada día de la 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

La columna _TimeReceived contiene la fecha y hora en que el punto de ingesta de Azure Monitor recibió el registro en la nube de Azure. Esto puede resultar útil para identificar problemas de latencia entre el origen de datos y la nube. Un ejemplo sería un error de red que genere un retraso con los datos que se envían desde un agente. Consulte Tiempo de la ingesta de datos de registro en Azure Monitor para más detalles.

Nota

La columna _TimeReceived se calcula cada vez que se usa. Este proceso consume muchos recursos. Absténgase de utilizarlo para filtrar un gran número de registros. El uso de esta función de forma recurrente puede aumentar la duración de la ejecución de la consulta.

En la consulta siguiente se proporciona la latencia promedio por hora para los registros de eventos de un agente. Esto incluye el tiempo del agente a la nube y el tiempo total para que el registro esté disponible en las consultas de registro.

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

La columna Type contiene el nombre de la tabla de la que se recuperó el registro, que puede considerarse también como el tipo de registro. Esta columna es útil en las consultas que combinan registros de varias tablas, como las que utilizan el operador search, para distinguir entre registros de diferentes tipos. En algunas consultas se puede usar $table en lugar de Type.

Nota

Las tablas que admiten recursos de Application Insights clásicos usan la columna itemType en lugar de la columna Type.

Ejemplos

La siguiente consulta devuelve el número de registros por tipo recopilados durante la última hora.

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

_ItemId

La columna _ItemId contiene un identificador único para el registro.

_ResourceId

La columna _ResourceId contiene un identificador único para el recurso con el que está asociado el registro. Esto le proporciona una columna estándar para definir el ámbito de la consulta a solo los registros de un recurso determinado, o para unir datos relacionados en varias tablas.

En el caso de los recursos de Azure, el valor de _ResourceId es la URL de id. de recurso de Azure. La columna se limita a los recursos de Azure, incluidos los recursos de Azure Arc o a registros personalizados que indicaron el id. de recurso durante la ingesta.

Nota

Algunos tipos de datos ya tienen campos que contienen el identificador de recurso de Azure o al menos partes de él como el identificador de suscripción. Aunque estos campos se guardan por compatibilidad con versiones anteriores, se recomienda utilizar _ResourceId para realizar la correlación cruzada, ya que será más coherente.

Ejemplos

La consulta siguiente combina datos de rendimiento y de eventos para cada equipo. Muestra todos los eventos con el identificador 101 y un uso del procesador superior al 50 %.

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

La consulta siguiente combina los registros AzureActivity con los de SecurityEvent. Muestra todas las operaciones de actividad con los usuarios que iniciaron sesión en estas máquinas.

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 siguiente consulta analiza _ResourceId y agrega volúmenes de datos facturados por grupo de recursos de 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 * con moderación, ya que la ejecución de exámenes entre tipos de datos es costosa.

Siempre resulta más eficaz usar la columna _SubscriptionId que extraerla mediante el análisis de la columna _ResourceId.

_SubscriptionId

La columna _SubscriptionId contiene el id. de suscripción del recurso con el que está asociado el registro. Esto le proporciona una columna estándar para definir el ámbito de la consulta a solo los registros de una suscripción determinada, o para comparar suscripciones distintas.

En el caso de los recursos de Azure, el valor de __SubscriptionId es la parte de la suscripción de la URL del id. de recurso de Azure. La columna se limita a los recursos de Azure, incluidos los recursos de Azure Arc o a registros personalizados que indicaron el id. de suscripción durante la ingesta.

Nota:

Algunos tipos de datos ya tienen campos que contienen el id. de suscripción de Azure. Aunque estos campos se conservan para la compatibilidad con versiones anteriores, se recomienda usar la columna _SubscriptionId para realizar la correlación cruzada, ya que será más coherente.

Ejemplos

La siguiente consulta examina los datos de rendimiento de los equipos de una suscripción específica.

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

La siguiente consulta analiza _ResourceId y agrega volúmenes de datos facturados por suscripción de Azure.

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

Use estas consultas union withsource = tt * con moderación, ya que la ejecución de exámenes entre tipos de datos es costosa.

_IsBillable

La columna _IsBillable especifica si los datos ingeridos se consideran facturables. Los datos con _IsBillable igual a false no incurren en cargos de ingesta, retención o archivo de datos.

Ejemplos

Para obtener una lista de equipos que envían los tipos de datos de facturación, use la siguiente consulta:

Nota

Use las consultas con union withsource = tt * con moderación, ya que la ejecución de exámenes entre tipos de datos es costosa.

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

Dichas consultas pueden ampliarse para devolver el número de equipos por hora que están enviando tipos de datos facturados:

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 columna _BilledSize especifica el tamaño en bytes de los datos que se facturarán a su cuenta de Azure si _IsBillable es true (verdadero). Consulte Cálculo del tamaño de los datos para obtener más información sobre cómo se calcula el tamaño facturado.

Ejemplos

Para ver el tamaño de los eventos facturables que ingirió cada equipo, use la columna _BilledSize, que proporciona el tamaño en bytes:

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

Para ver el tamaño de los eventos facturables ingeridos por suscripción, use la siguiente consulta:

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

Para ver el tamaño de los eventos facturables ingeridos por grupo de recursos, use la siguiente 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 el recuento de eventos ingeridos por equipo, use la consulta siguiente:

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

Para ver el recuento de eventos facturables ingeridos por equipo, use la consulta siguiente:

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

Para ver el recuento de tipos de datos facturables desde un equipo específico, use la siguiente consulta:

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

Pasos siguientes