Esquema de registro de Container Insights

Container Insights almacena los datos de registro que recopila en una tabla denominada ContainerLogV2 en un área de trabajo de Log Analytics. En este artículo se describe el esquema de esta tabla y sus opciones de configuración. También se compara esta tabla con la tabla heredada ContainerLog y proporciona detalles para migrar desde ella.

Comparación de tablas

ContainerLogV2 es el esquema predeterminado para la versión 2.54.0 y posteriores de la CLI. Esta es la tabla predeterminada para los clientes que incorporan Container Insights con la autenticación de identidad administrada. ContainerLogV2 se puede habilitar explícitamente a través de la versión 2.51.0 o posterior de la CLI mediante la configuración de recopilación de datos.

Importante

La compatibilidad con la tabla ContainerLog se retirará el 30 de septiembre de 2026.

En la tabla siguiente se destacan las principales diferencias entre el uso de los esquemas ContainerLogV2 y ContainerLog.

Diferencias de características ContainerLog ContainerLogV2
Esquema Detalles en ContainerLog. Detalles en ContainerLogV2.
Las columnas adicionales son:
- ContainerName
- PodName
- PodNamespace
- LogLevel1
- KubernetesMetadata2
Incorporación Configurable solamente a través de ConfigMap. Configurable a través de ConfigMap y DCR. 3
Precios Solo compatible con los registros de análisis de precio completo. Admite el nivel de registros básicos de bajo costo, además de los registros de análisis.
Consultas Requiere varias operaciones de combinación con tablas de inventario para las consultas estándar. Incluye metadatos adicionales de pod y contenedor para reducir la complejidad de las consultas y las operaciones de combinación.
Multilínea No se admite, las entradas de varias líneas se dividen en varias filas. Compatibilidad con el registro de varias líneas para permitir entradas únicas y consolidadas para la salida de varias líneas.

1Si LogMessage es JSON válido y tiene una clave denominada level, se usará su valor. De lo contrario, la coincidencia de palabras clave basada en regex se usa para inferir LogLevel de LogMessage. Esta inferencia puede dar lugar a algunas clasificaciones incorrectas. LogLevel es un campo de cadena con un valor de mantenimiento como CRITICAL, ERROR, WARNING, INFO, DEBUG, TRACE o UNKNOWN.

2 KubernetesMetadata es una columna opcional que está habilitada con metadatos de Kubernetes. El valor de este campo es JSON con los campos podLabels, podAnnotations, podUid, Image, ImageTag y Image repo.

3 La configuración de DCR requiere autenticación de identidad administrada.

Nota:

No se admite la exportación al centro de eventos ni a la cuenta de almacenamiento si el LogMessage entrante non es JSON válido. Para obtener el mejor rendimiento, emita registros de contenedor en formato JSON.

Habilitar el esquema ContainerLogV2

Habilite el esquema ContainerLogV2 en el nivel de clúster a través de la regla de recopilación de datos (DCR) del clúster o ConfigMap. Si ambas opciones están habilitadas, ConfigMap tiene prioridad. La tabla ContainerLog solo se usa cuando DCR y ConfigMap se establecen explícitamente en desactivados.

Antes de habilitar el esquema ContainerLogsV2, debe comprobar si tiene reglas de alerta que dependan de la tabla ContainerLog. Todas estas alertas deben actualizarse para usar la nueva tabla. Ejecute la siguiente consulta de Azure Resource Graph para detectar reglas de alerta que hagan referencia a la tabla ContainerLog.

resources
| where type in~ ('microsoft.insights/scheduledqueryrules') and ['kind'] !in~ ('LogToMetric')
| extend severity = strcat("Sev", properties["severity"])
| extend enabled = tobool(properties["enabled"])
| where enabled in~ ('true')
| where tolower(properties["targetResourceTypes"]) matches regex 'microsoft.operationalinsights/workspaces($|/.*)?' or tolower(properties["targetResourceType"]) matches regex 'microsoft.operationalinsights/workspaces($|/.*)?' or tolower(properties["scopes"]) matches regex 'providers/microsoft.operationalinsights/workspaces($|/.*)?'
| where properties contains "ContainerLog"
| project id,name,type,properties,enabled,severity,subscriptionId
| order by tolower(name) asc

Filtrado de metadatos y registros de Kubernetes

El filtrado de metadatos y registros de Kubernetes amplía el esquema ContainerLogsV2 con metadatos adicionales de Kubernetes. La característica Filtrado de registros proporciona funcionalidades de filtrado para contenedores de cargas de trabajo y plataforma. Con estas características se obtiene un contexto más completo y se mejora la visibilidad de las cargas de trabajo.

Características

  • Esquema mejorado de ContainerLogV2 Cuando se habilitan los metadatos de registros de Kubernetes, agrega una columna a ContainerLogV2 denominada KubernetesMetadata que mejora la solución de problemas con consultas de registro sencillas y elimina la necesidad de unirse a otras tablas. Los campos de esta columna incluyen PodLabels, PodAnnotations, PodUid, Image, ImageID, ImageRepo, ImageTag. Estos campos mejoran la experiencia de la solución de problemas mediante consultas de registro sin tener que unirse a otras tablas. Consulte a continuación más información sobre cómo habilitar la característica de metadatos de Kubernetes.

  • Nivel de registro Esta característica agrega una columna LogLevel a ContainerLogV2 con los valores posibles crítico, error, advertencia, información, depuración, seguimiento o desconocido. Esto le ayuda a evaluar el estado de la aplicación en función del nivel de gravedad. Al agregar el panel de Grafana, puede visualizar las tendencias de nivel de registro a lo largo del tiempo e identificar rápidamente los recursos afectados.

  • Panel de Grafana para la visualización El panel de Grafana proporciona una visualización codificada por colores del nivel de registro y también proporciona información sobre el volumen de registro, la tasa de registro, los registros de registro y los registros. Los usuarios pueden obtener análisis que incluyan el factor tiempo, información dinámica sobre las tendencias de nivel de registro a lo largo del tiempo y la supervisión crucial en tiempo real. El panel también proporciona un desglose detallado por equipo, pod y contenedor, que permite el análisis en profundidad y la solución de problemas identificada Consulte a continuación más información sobre cómo instalar el panel de Grafana.

  • Filtrado de registros basado en anotaciones para cargas de trabajoTécnica eficaz de filtrado de registros mediante anotaciones de pod. Con ello puede centrarse en la información relevante sin examinar el ruido. El filtrado basado en anotaciones le permite excluir la recopilación de registros para determinados pods y contenedores anotando el pod, lo que ayudaría a reducir significativamente el costo de Log Analytics. Consulte filtrado de registros basado en anotaciones para obtener más información sobre cómo configurar el filtrado basado en anotaciones.

  • Filtrado de registros basado en ConfigMap para registros de plataforma (espacios de nombres de Kubernetes del sistema): los contenedores emiten registros de plataforma en los espacios de nombres del sistema (o restringidos similares). De manera predeterminada, se excluyen todos los registros de contenedor del espacio de nombres del sistema para minimizar el costo de datos en el área de trabajo de Log Analytics. Pero en escenarios de solución de problemas específicos, los registros del contenedor del sistema desempeñan un papel fundamental. Un ejemplo es el contenedor de coredns en el espacio de nombres kube-system.

Habilitación de metadatos de Kubernetes

Importante

La recopilación de metadatos de Kubernetes requiere autenticación de identidad administrada y ContainerLogsV2

Habilite los metadatos de Kubernetes mediante ConfigMap con la siguiente configuración. Todos los campos de metadatos se recopilan de forma predeterminada cuando la metadata_collection está habilitada. Quite la marca de comentario include_fields para especificar campos individuales que se van a recopilar.

[log_collection_settings.metadata_collection]
    enabled = true
    include_fields = ["podLabels","podAnnotations","podUid","image","imageID","imageRepo","imageTag"]

Después de unos minutos, la columna KubernetesMetadata debe incluirse con las consultas de registro de la tabla ContainerLogV2, como se muestra a continuación.

Captura de pantalla que muestra containerlogv2.

Instalación de un panel de Grafana

Importante

Si ha habilitado Grafana mediante las instrucciones de Habilitación de la supervisión de clústeres de Kubernetes, la instancia de Grafana ya debería tener acceso al área de trabajo de Azure Monitor para las métricas de Prometheus. El panel de metadatos de registros de Kubernetes también requiere acceso al área de trabajo de Log Analytics que contiene datos de registro. Consulte Modificación de los permisos de acceso a Azure Monitor para obtener instrucciones sobre cómo conceder a la instancia de Grafana el rol Lector de supervisión para el área de trabajo de Log Analytics.

Importe el panel desde la galería de Grafana en panel ContainerLogV2. Puede entonces abrir el panel y seleccionar valores de DataSource, Subscription, ResourceGroup, Cluster, Namespace y Labels.

Captura de pantalla que muestra el panel de grafana.

Nota:

Al cargar inicialmente el panel de Grafana, podría ver algunos errores debido a que las variables aún no están seleccionadas. Para evitar que esto sea recurrente, guarde el panel después de seleccionar un conjunto de variables para que se convierta en el valor predeterminado en la primera apertura.

Registro de varias líneas habilitado

Con el registro de varias líneas habilitado, los registros de contenedor divididos previamente se unen y se envían como entradas únicas a la tabla ContainerLogV2. Si la línea de registro unida es superior a 64 KB, se truncará debido a los límites del área de trabajo de Log Analytics. Esta característica también admite seguimientos de la pila de .NET, Go, Python y Java, que aparecen como entradas únicas en la tabla ContainerLogV2. Habilite el registro de varias líneas con ConfigMap tal como se describe en Configuración de la recopilación de datos en Container Insights mediante ConfigMap.

Nota:

El mapa de configuración ahora incluye una opción de especificación de idioma, donde los clientes pueden seleccionar solo los idiomas en los que están interesados. Esta característica se puede habilitar editando los idiomas de la opción stacktrace_languages del mapa de configuración.

En las capturas de pantalla siguientes se muestra el registro de varias líneas para el seguimiento de la pila de excepciones de Go:

Registro de varias líneas deshabilitado

Captura de pantalla que muestra el registro de varias líneas deshabilitado.

Registro de varias líneas habilitado

Captura de pantalla que muestra la opción Varias líneas habilitada.

Seguimiento de la pila de Java

Captura de pantalla que muestra Multilínea habilitada para Java.

Seguimiento de la pila de Python

Captura de pantalla que muestra Multilínea habilitada para Python.

Pasos siguientes