Registro de instancias y grupos de contenedores con registros de Azure Monitor

Las áreas de trabajo de Log Analytics proporcionan una ubicación centralizada para almacenar y consultar datos de registro no solo de los recursos de Azure, sino también de los recursos locales y de los recursos de otras nubes. Azure Container Instances incluye compatibilidad integrada para el envío de registros y datos de evento a los registros de Azure Monitor.

Para enviar un registro de grupo de contenedores y datos de eventos a los registros de Azure Monitor, especifique una clave y un identificador de un área de trabajo de Log Analytics existente al configurar un grupo de contenedores.

En las secciones siguientes se describe cómo crear un grupo de contenedores con el registro habilitado y cómo consultar registros. También puede actualizar un grupo de contenedores con un identificador de área de trabajo y una clave de área de trabajo para habilitar el registro.

Nota:

Este artículo se ha actualizado recientemente para usar el término registros de Azure Monitor en lugar de Log Analytics. Los datos de registro siguen almacenándose en un área de trabajo de Log Analytics y siguen recopilándose y analizándose por el mismo servicio de Log Analytics. Estamos actualizando la terminología para reflejar mejor el rol de los registros de Azure Monitor. Consulte Azure Monitor terminology changes (Cambios en la terminología de Azure Monitor) para obtener más información.

Requisitos previos

Para habilitar el registro en las instancias de los contenedores, necesita lo siguiente:

Obtención de las credenciales de Log Analytics

Azure Container Instances necesita permiso para enviar datos a su área de trabajo de Log Analytics. Para conceder este permiso y habilitar el registro, es preciso proporcionar el identificador del área de trabajo de Log Analytics y una de sus claves (la principal o la secundaria) al crear el grupo de contenedores.

Para obtener el identificador y la clave principal del área de trabajo de Log Analytics:

  1. Vaya al área de trabajo de Log Analytics en Azure Portal
  2. En Configuración, seleccione Agents management (Administración de agentes).
  3. Anote el valor de:
    • Id. de área de trabajo
    • Clave principal

Creación de un grupo de contenedores

Ahora que tiene el identificador y la clave principal del área de trabajo de Log Analytics, ya puede crear un grupo de contenedores con el registro habilitado.

En los ejemplos siguientes se muestran dos maneras de crear un grupo de contenedores formado por un solo contenedor fluentd: CLI de Azure y la CLI de Azure con una plantilla de YAML. El contenedor fluentd genera varias líneas de salida en su configuración predeterminada. Dado que esta salida se envía a su área de trabajo de Log Analytics, sirve para mostrar la visualización y consulta de registros.

Implementación con la CLI de Azure

Para implementar con la CLI de Azure, especifique los parámetros --log-analytics-workspace y --log-analytics-workspace-key en el comando az container create. Antes de ejecutar el siguiente comando, reemplace los dos valores de área de trabajo por los valores obtenidos en el paso anterior (y actualice el nombre del grupo de recursos).

Nota

En el ejemplo siguiente se extrae una imagen de contenedor público de Docker Hub. Se recomienda configurar un secreto de extracción para autenticarse mediante una cuenta de Docker Hub en lugar de realizar una solicitud de extracción anónima. Para mejorar la confiabilidad al trabajar con contenido público, importe y administre la imagen en un registro de contenedor privado de Azure. Más información sobre cómo trabajar con imágenes públicas.

az container create \
    --resource-group myResourceGroup \
    --name mycontainergroup001 \
    --image fluent/fluentd:v1.3-debian-1 \
    --log-analytics-workspace <WORKSPACE_ID> \
    --log-analytics-workspace-key <WORKSPACE_KEY>

Implementación con YAML

Utilice este método si prefiere implementar grupos de contenedores con YAML. El siguiente fragmento de código YAML define un grupo de contenedores con un solo contenedor. Copie el código YAML en un nuevo archivo y sustituya LOG_ANALYTICS_WORKSPACE_ID y LOG_ANALYTICS_WORKSPACE_KEY por los valores que obtuvo en el paso anterior. Guarde el archivo con el nombre deploy-aci.yaml.

Nota

En el ejemplo siguiente se extrae una imagen de contenedor público de Docker Hub. Se recomienda configurar un secreto de extracción para autenticarse mediante una cuenta de Docker Hub en lugar de realizar una solicitud de extracción anónima. Para mejorar la confiabilidad al trabajar con contenido público, importe y administre la imagen en un registro de contenedor privado de Azure. Más información sobre cómo trabajar con imágenes públicas.

apiVersion: 2019-12-01
location: eastus
name: mycontainergroup001
properties:
  containers:
  - name: mycontainer001
    properties:
      environmentVariables: []
      image: fluent/fluentd:v1.3-debian-1
      ports: []
      resources:
        requests:
          cpu: 1.0
          memoryInGB: 1.5
  osType: Linux
  restartPolicy: Always
  diagnostics:
    logAnalytics:
      workspaceId: LOG_ANALYTICS_WORKSPACE_ID
      workspaceKey: LOG_ANALYTICS_WORKSPACE_KEY
tags: null
type: Microsoft.ContainerInstance/containerGroups

A continuación, ejecute el siguiente comando para implementar el grupo de contenedores. Reemplace myResourceGroup por un grupo de recursos de su suscripción (o bien cree antes un grupo de recursos denominado "myResourceGroup"):

az container create --resource-group myResourceGroup --name mycontainergroup001 --file deploy-aci.yaml

Debería recibir una respuesta de Azure con detalles de implementación poco después de emitir el comando.

Ver registros

Después de implementar el grupo de contenedores, las primeras entradas de registro pueden tardar varios minutos (hasta 10) en aparecer en Azure Portal.

Para ver los registros del grupo de contenedores en la tabla ContainerInstanceLog_CL:

  1. Vaya al área de trabajo de Log Analytics en Azure Portal
  2. En General, seleccione Registros.
  3. Escriba la consulta siguiente: ContainerInstanceLog_CL | limit 50
  4. Seleccione Ejecutar.

Debería ver que la consulta muestra varios resultados. Si no ve ninguno, espere unos minutos y seleccione el botón Ejecutar para volver a ejecutar la consulta. De forma predeterminada, las entradas del registro aparecen en formato de tabla. Luego puede expandir una fila para ver el contenido de una entrada de registro individual.

Resultados de Búsqueda de registros en Azure Portal

Ver eventos

También puede ver los eventos de las instancias de contenedor en Azure Portal. Los eventos incluyen la hora en que se crea la instancia y cuándo se inicia. Para ver los datos de evento en la tabla ContainerEvent_CL:

  1. Vaya al área de trabajo de Log Analytics en Azure Portal
  2. En General, seleccione Registros.
  3. Escriba la consulta siguiente: ContainerEvent_CL | limit 50
  4. Seleccione Ejecutar.

Debería ver que la consulta muestra varios resultados. Si no ve ninguno, espere unos minutos y seleccione el botón Ejecutar para volver a ejecutar la consulta. De forma predeterminada, las entradas aparecen en formato de tabla. Luego puede expandir una fila para ver el contenido de una entrada individual.

Resultados de la búsqueda de registros en Azure Portal

Consulta de registros de contenedores

Los registros de Azure Monitor incluyen un amplio lenguaje de consulta para poder extraer información de miles de líneas de la salida del registro.

La estructura básica de una consulta consiste en la tabla de origen (en este artículo, ContainerInstanceLog_CL o ContainerEvent_CL) seguida de una serie de operadores separados por el carácter de barra vertical (|). Puede encadenar varios operadores para refinar los resultados y realizar funciones avanzadas.

Para ver los resultados de una consulta de ejemplo, pegue la siguiente consulta en el cuadro de texto de consulta y seleccione el botón Ejecutar para ejecutar la consulta. Esta consulta muestra todas las entradas de registro cuyo campo "Message" contiene la palabra "warn":

ContainerInstanceLog_CL
| where Message contains "warn"

También se admiten consultas más complejas. Por ejemplo, esta consulta muestra solo las entradas de registro del grupo de contenedores "mycontainergroup001" generadas en la última hora:

ContainerInstanceLog_CL
| where (ContainerGroup_s == "mycontainergroup001")
| where (TimeGenerated > ago(1h))

Esquema de registro

Nota:

Algunas de las columnas enumeradas en la tabla siguiente solo existen como parte del esquema y no tendrán datos emitidos en los registros. Estas columnas se indican con una descripción de "Empty".

ContainerInstanceLog_CL

Columna Type Descripción
Computer string Vacío
ContainerGroup_s string Nombre del grupo de contenedores asociado al registro.
ContainerID_s string Identificador único para el contenedor asociado al registro.
ContainerImage_s string Nombre de la imagen de contenedor asociada al registro.
Location_s string Ubicación del recurso asociado al registro.
Message string Si procede, el mensaje del contenedor.
OSType_s string Nombre del sistema operativo en el que se basa el contenedor.
RawData string Vacío
ResourceGroup string Nombre del grupo de recursos al que está asociado el registro.
Source_s string Nombre del componente de registro, "LoggingAgent".
SubscriptionId string Identificador único de la suscripción a la que está asociado el registro.
TimeGenerated datetime Marca de tiempo de cuando el servicio de Azure generó el evento que procesó la solicitud correspondiente al evento.
Tipo string Nombre de la tabla.
_ResourceId string Identificador único del recurso al que está asociado el registro.
_SubscriptionId string Identificador único de la suscripción a la que está asociado el registro.

ContainerEvent_CL

Columna Type Descripción
Computer string Vacío
ContainerGroupInstanceId_g string Identificador único del grupo de contenedores asociado al registro.
ContainerGroup_s string Nombre del grupo de contenedores asociado al registro.
ContainerName_s string Nombre del contenedor asociado al registro.
Count_d real Número de veces que se ha producido el evento desde el último sondeo.
FirstTimestamp_t datetime Marca de tiempo de la primera vez que se produjo el evento.
Location_s string Ubicación del recurso asociado al registro.
Message string Si procede, el mensaje del contenedor.
OSType_s string Nombre del sistema operativo en el que se basa el contenedor.
RawData string Vacío
Reason_s string Estado actual del grupo de contenedores
ResourceGroup string Nombre del grupo de recursos al que está asociado el registro.
SubscriptionId string Identificador único de la suscripción a la que está asociado el registro.
TimeGenerated datetime Marca de tiempo de cuando el servicio de Azure generó el evento que procesó la solicitud correspondiente al evento.
Tipo string Nombre de la tabla.
_ResourceId string Identificador único del recurso al que está asociado el registro.
_SubscriptionId string Identificador único de la suscripción a la que está asociado el registro.

Uso de la configuración de diagnóstico

La configuración de diagnóstico para grupos de contenedores es una característica en versión preliminar y se puede habilitar a través de las opciones de características en versión preliminar en Azure Portal. Una vez habilitada esta característica para una suscripción, la configuración de diagnóstico se puede aplicar a un grupo de contenedores. La aplicación de la configuración de diagnóstico hace que se reinicie un grupo de contenedores.

Por ejemplo, aquí se muestra cómo se puede usar el comando New-AzDiagnosticSetting para aplicar un objeto Diagnostic Settings a un grupo de contenedores.

$log = @()
$log += New-AzDiagnosticSettingLogSettingsObject -Enabled $true -Category ContainerInstanceLog -RetentionPolicyDay 7 -RetentionPolicyEnabled $true
 
New-AzDiagnosticSetting -Name test-setting -ResourceId <container-group-resource-id> -WorkspaceId <log-analytics-workspace-id> -Log $log

Pasos siguientes

Registros de Azure Monitor

Para más información acerca de cómo realizar consultas en registros y configurar alertas en registros de Azure Monitor, consulte:

Supervisión de la CPU y la memoria de los contenedores

Para obtener información acerca de la supervisión de los recursos de CPU y de memoria de un instancia de contenedor, consulte: