Configuración de la recopilación de datos en Container Insights mediante ConfigMap

En este artículo se describe cómo configurar la recopilación de datos en Container Insights mediante ConfigMap. ConfigMaps es un mecanismo de Kubernetes que permite almacenar datos no confidenciales, como el archivo de configuración o las variables de entorno.

ConfigMap se usa principalmente para configurar la recopilación de datos de los registros de contenedor y las variables de entorno del clúster. Puede configurar individualmente los registros stdout y stderr y también habilitar el registro de varias líneas. La configuración específica que puede realizar con ConfigMap incluye lo siguiente:

  • Habilitar o deshabilitar y filtrar espacios de nombres para los registros stdout y stderr
  • Habilitar o deshabilitar la recopilación de variables de entorno para el clúster
  • Filtrar eventos normales de Kube
  • Seleccionar un esquema de registro
  • Habilitar o deshabilitar el registro de varias líneas
  • Omitir la configuración del proxy

Importante

La configuración completa de la recopilación de datos en Container Insights puede requerir la edición de ConfigMap y de la regla de recopilación de datos (DCR) para el clúster, ya que cada método permite la configuración de un conjunto diferente de opciones.

Consulta Configuración de la recopilación de datos en Container Insights mediante la regla de recopilación de datos para ver una lista de opciones y el proceso para configurar la recopilación de datos mediante DCR.

Requisitos previos

  • ConfigMap es una lista global y solo puede haber un objeto ConfigMap aplicado al agente para Container Insights. Al aplicar otro objeto ConfigMap, se sobreescribe la configuración anterior de la recopilación de ConfigMap.
  • La versión de agente mínima admitida para recopilar los registros stdout, stderr y las variables de entorno de las cargas de trabajo de contenedor es ciprod06142019 o posterior. Para comprobar la versión del agente, en la pestaña Nodo, seleccione un nodo. En el panel de Propiedades, anote el valor de la propiedad Etiqueta de imagen del agente. Para más información sobre las versiones del agente y lo que se incluye en cada una, consulte las notas de la versión del agente.

Configuración e implementación de ConfigMap

Use el siguiente procedimiento para configurar e implementar el archivo de configuración de ConfigMap en el clúster:

  1. Descargue el archivo YAML de ConfigMap de plantilla y ábralo en un editor. Si ya tiene un archivo ConfigMap, puede usarlo.

  2. Edite el archivo YAML de ConfigMap con las personalizaciones mediante la configuración descrita en Configuración de recopilación de datos

  3. Ejecute el siguiente comando kubectl para crear un ConfigMap:

    kubectl apply -f <configmap_yaml_file.yaml>
    

    Ejemplo:

    kubectl apply -f container-azm-ms-agentconfig.yaml
    

    El cambio de configuración puede tardar unos minutos en finalizar antes de surtir efecto. A continuación, se reiniciarán todos los pods del agente de Azure Monitor del clúster. El reinicio es un reinicio continuo para todos los pods de Azure Monitor Agent, por lo que no todos se reinician al mismo tiempo. Cuando finalicen los reinicios, recibirá un mensaje similar al resultado siguiente:

    configmap "container-azm-ms-agentconfig" created`.
    

Configuración de la colección de datos

En la tabla siguiente se describen los valores que puede configurar para controlar la recopilación de datos.

Configuración Tipo de datos Value Descripción
schema-version Cadena (distingue mayúsculas de minúsculas) v1 Lo usa el agente al analizar este objeto ConfigMap. La versión de esquema que se admite actualmente es v1. No se admite la modificación de este valor y se rechazará cuando ConfigMap se evalúe.
config-version Cadena Le permite realizar un seguimiento de la versión de este archivo de configuración en el sistema o repositorio de control de código fuente. El número máximo de caracteres permitido es 10 y todos los demás caracteres se truncan.
[log_collection_settings]
[stdout] enabled Boolean true
false
Controla si se habilita la recopilación de registros del contenedor stdout. Cuando se establece en true y los espacios de nombres no se excluyen de la recopilación de registros de stdout, los registros de stdout se recopilarán a partir de todos los contenedores en todos los pods o nodos del clúster. Si no se especifica en ConfigMap, el valor predeterminado es true.
[stdout] exclude_namespaces Cadena Matriz separada por comas Matriz de espacios de nombres de Kubernetes para la que no se recopilarán los registros de stdout. Esta configuración es efectiva únicamente si enabled se establece en true. Si no se especifica en ConfigMap, el valor predeterminado es
["kube-system","gatekeeper-system"].
[stderr] enabled Boolean true
false
Controla si está habilitada la recopilación de registros de contenedor de stderr. Cuando se establece en true y los espacios de nombres no se excluyen de la recopilación de registros de stderr, los registros de stderr se recopilarán a partir de todos los contenedores en todos los pods o nodos del clúster. Si no se especifica en ConfigMap, el valor predeterminado es true.
[stderr] exclude_namespaces Cadena Matriz separada por comas Matriz de espacios de nombres de Kubernetes para la que no se recopilarán los registros de stderr. Esta configuración es efectiva únicamente si enabled se establece en true. Si no se especifica en ConfigMap, el valor predeterminado es
["kube-system","gatekeeper-system"].
[env_var] enabled Boolean true
false
Este valor controla la recopilación de variables de entorno en todos los pods y nodos del clúster. Si no se especifica en ConfigMap, el valor predeterminado es true. Si la recopilación de variables de entorno está habilitada globalmente, puede deshabilitarla para un contenedor específico al establecer la variable de entorno AZMON_COLLECT_ENV en False con un valor de Dockerfile o en el archivo de configuración para el Pod en la sección env:. Si la recopilación de variables de entorno está deshabilitada globalmente, no se puede habilitar la recopilación para un contenedor específico. La única invalidación que se puede aplicar en el nivel de contenedor es deshabilitar la recopilación cuando ya está habilitada globalmente.
[enrich_container_logs] enabled Boolean true
false
Controla el enriquecimiento de los registros de contenedor para rellenar los valores de propiedad de Name y Image de cada entrada de registro escrita en la tabla ContainerLogV2 o ContainerLog de todos los registros de contenedor del clúster. Si no se especifica en ConfigMap, el valor predeterminado es false.
[collect_all_kube_events] enabled Boolean true
false
Controla si se recopilan eventos Kube de todos los tipos. De forma predeterminada, no se recopilan los eventos de Kube con el tipo Normal. Cuando este valor es true, ya no se filtran los eventos con el tipo Normal y se recopilan todos los eventos. Si no se especifica en ConfigMap, el valor predeterminado es false.
[schema] containerlog_schema_version Cadena (distingue mayúsculas de minúsculas) v2
v1
Establece el formato de ingesta de registros. Si es v2, se usa la tabla ContainerLogV2. Si es v1, se usa la tabla ContainerLog (esta tabla está en desuso). En el caso de los clústeres que habilitan Container Insights mediante la versión 2.54.0 o posterior de la CLI de Azure, el valor predeterminado es v2. Consulte Esquema de registro de Container Insights para obtener más información.
[enable_multiline_logs] enabled Boolean true
false
Controla si los registros de contenedor de varias líneas están habilitados. Consulte Registro de varias líneas en Container Insights para obtener más información. Si no se especifica en ConfigMap, el valor predeterminado es false. Esto requiere que el valor schema sea v2.
[metric_collection_settings]
[collect_kube_system_pv_metrics] enabled Boolean true
false
Permite recopilar métricas de uso de volumen persistente en el espacio de nombres kube-system. De forma predeterminada, no se recopilan las métricas de uso de los volúmenes persistentes con notificaciones de volumen persistentes en el espacio de nombres kube-system. Si esta opción se establece en true, se recopilarán las métricas de uso de volumen persistente para todos los espacios de nombres. Si no se especifica en ConfigMap, el valor predeterminado es false.
[agent_settings]
[proxy_config] ignore_proxy_settings Boolean true
false
Cuando es true, se omite la configuración del proxy. En ambos entornos de AKS y Kubernetes habilitado para Arc K8s, si el clúster está configurado con un proxy de desvío, la configuración del proxy se aplicará y se usará automáticamente para el agente. Para determinadas configuraciones, como con AMPLS + Proxy, es posible que se omita la configuración del proxy. Si no se especifica en ConfigMap, el valor predeterminado es false.

Comprobación de la configuración

Para comprobar que la configuración se ha aplicado correctamente en un clúster, use el comando siguiente para revisar los registros de un pod de agente.

kubectl logs ama-logs-fdf58 -n kube-system

Si hay errores de configuración de los pods del agente de Azure Monitor, la salida mostrará errores similares al ejemplo siguiente:

***************Start Config Processing******************** 
config::unsupported/missing config schema version - 'v21' , using defaults

Los errores relacionados con la aplicación de cambios de configuración también están disponibles para su revisión. Las siguientes opciones están disponibles para solucionar problemas adicionales de los cambios de configuración:

  • Desde un registro de pod del agente con el mismo comando kubectl logs.

  • Desde los registros en vivo. Los registros en vivo muestran errores similares al siguiente ejemplo:

    config::error::Exception while parsing config map for log collection/env variable settings: \nparse error on value \"$\" ($end), using defaults, please check config map for errors
    
  • Desde la tabla KubeMonAgentEvents en el área de trabajo de Log Analytics. Los datos se envían cada hora con la gravedad Error para los errores de configuración. Si no hay errores, la entrada en la tabla tendrá datos con información de gravedad, que informa de que no hay errores. La propiedad Tags contiene más información sobre el pod y el identificador de contenedor en el que se ha producido el error, así como la primera repetición, la última y el recuento en la última hora.

Comprobación de la versión del esquema

Las versiones de esquema de configuración admitidas están disponibles como anotación de pod (versiones de esquema) en el pod del agente de Azure Monitor. Puede verlas con el siguiente comando kubectl.

kubectl describe pod ama-logs-fdf58 -n=kube-system.

La salida similar al ejemplo siguiente aparece con las versiones del esquema de anotación:

    Name:           ama-logs-fdf58
    Namespace:      kube-system
    Node:           aks-agentpool-95673144-0/10.240.0.4
    Start Time:     Mon, 10 Jun 2019 15:01:03 -0700
    Labels:         controller-revision-hash=589cc7785d
                    dsName=ama-logs-ds
                    pod-template-generation=1
    Annotations:    agentVersion=1.10.0.1
                  dockerProviderVersion=5.0.0-0
                    schema-versions=v1 

Preguntas más frecuentes

¿Cómo habilitar la recopilación de registros para contenedores en el espacio de nombres kube-system mediante Helm?

La recopilación de registros de contenedores en el espacio de nombres kube-system está deshabilitada de forma predeterminada. Puede habilitar la colección de registro mediante la configuración de una variable de entorno en el agente de Azure Monitor. Consulte la página de GitHub sobre Container Insights.

Pasos siguientes