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
- Obtenga más información sobre cómo se almacenan los datos del registro de Azure Monitor.
- Reciba una lección sobre escritura de consultas de registro.
- Reciba una lección sobre la unión de tablas en consultas de registro.