Aprenda a recopilar, procesar y analizar registros de contenedores Kubernetes con SLS y LoongCollector. Este tema aborda los conceptos fundamentales, los modos de despliegue, los flujos de trabajo de recopilación y las mejores prácticas.
En la consola de ACK, la vista Pod logs muestra un máximo de 500 entradas de registro. Si requiere los registros completos de sus contenedores, utilice SLS para recopilar los registros de los contenedores del clúster de Kubernetes; esto le permite conservar y consultar todos los datos de registro. Para obtener instrucciones de configuración, consulte Collect container logs from a Kubernetes cluster by using a CRD (standard output/file).
Funciones
SLS ofrece las siguientes capacidades para la recopilación de registros de contenedores Kubernetes:
-
Compatibilidad con registros de múltiples orígenes
Recopila diversos log types: stdout, stderr y registros de archivos de texto del contenedor.
-
Filtrado detallado de contenedores
Incluya o excluya contenedores según el nombre del namespace, el nombre del pod, el nombre del contenedor, las etiquetas del contenedor o las variables de entorno.
-
Procesamiento avanzado de registros
Recopile multi-line logs: combine entradas multilínea, como trazas de pila de Java, en eventos de registro únicos.
Preprocese los registros: descarte datos no válidos con un Data filtering plugin, o enmascare y estructure datos confidenciales con los plugins Data masking and encryption plugins y Field processing plugins.
Analice campos: estructure los registros sin procesar antes del almacenamiento mediante plugins de análisis basados en Data parsing plugins.
-
Asociación inteligente de metadatos
Automatically associate metadata con los registros del contenedor, como el nombre del contenedor, la imagen, el pod, el namespace y las variables de entorno.
-
Fiabilidad
Un mecanismo de checkpoint registra la posición actual de recopilación para garantizar la integridad de los registros.
Handles logs when a container stops al proporcionar diferentes estrategias para diversos entornos de ejecución de contenedores.
Limitaciones
-
Entorno de ejecución de contenedores: Solo se admiten Docker y Containerd.
Docker:
Requiere permisos para acceder a docker.sock.
Para la recopilación de salida estándar, solo se admite el controlador de registro
json-file.Solo se admiten los controladores de almacenamiento
overlayyoverlay2. Para otros controladores de almacenamiento, debe montar el directorio de registros mediante un volumen.
Containerd:
Requiere permisos para acceder a containerd.sock.
-
Límite de registros multilínea:
La última línea recopilada se almacena en búfer durante 3 segundos de forma predeterminada para evitar que los registros multilínea se dividan por retrasos en la salida. Ajuste este comportamiento con el parámetro
BeginLineTimeoutMs(mínimo: 1,000 ms). -
Salida estándar:
El tamaño máximo predeterminado de una entrada de registro es de 512 KB (524,288 bytes), con un límite superior de 8 MB (8,388,608 bytes). Para aumentar este límite, establezca la variable de entorno
max_read_buffer_sizeen el contenedor de LoongCollector.ImportanteNo habilite la recopilación de stdout y stderr simultáneamente. Esto puede provocar que las entradas de registro se intercalen incorrectamente.
Descripción general del flujo de trabajo de recopilación
Prepare el origen de los registros: identifique los registros de stdout o de archivos de texto que desea recopilar.
Instale LoongCollector: despliegue el recopilador para transmitir los registros a SLS.
Configure las reglas de recopilación: defina las reglas de recopilación de registros y los plugins de análisis.
Consulte y analice los registros: supervise sus servicios con los datos de registro recopilados.
Procesos clave
Requisitos de origen de registros y punto de montaje
Para los registros de salida estándar, LoongCollector descubre automáticamente la ruta del archivo de registro según los metadatos del contenedor.
-
Para los registros de archivos de texto del contenedor, LoongCollector monta el directorio raíz del host en
/logtail_hostde forma predeterminada. Por lo general, no es necesario realizar un montaje manual. Si utiliza un punto de montaje personalizado, asegúrese de que cumpla con estos requisitos:
Instalación del recopilador
LoongCollector admite dos modos de despliegue:
Modo de despliegue: DaemonSet o sidecar.
-
Modo DaemonSet: despliega un agente de LoongCollector en cada nodo automáticamente. Es adecuado para la mayoría de los escenarios.
-
En el modo DaemonSet, el método de despliegue depende del tipo de clúster y de la relación de cuentas de SLS.
Para clústeres de Container Service for Kubernetes (ACK), el componente loongcollector-ds viene preintegrado. Habilítelo en la consola de ACK para completar la instalación. De forma predeterminada, los registros se almacenan en el proyecto de SLS de la cuenta propietaria del clúster. Installation and configuration.
Para recopilar registros de un clúster de ACK en un proyecto de SLS bajo una cuenta diferente de Alibaba Cloud, instale manualmente LoongCollector y configúrelo con el ID de la cuenta de destino o su AccessKey. Installation and configuration.
Para clústeres autogestionados, instale manualmente LoongCollector y configúrelo con el ID de la cuenta de Alibaba Cloud de destino o su AccessKey. Installation and configuration.
Debe instalar LoongCollector antes de comenzar la recopilación de registros. Collect container logs from a Kubernetes cluster by using a CRD (standard output/file) .
-
Modo sidecar: inyecta un contenedor de LoongCollector en cada pod de aplicación. Utilice este modo para contenedores serverless, pods de alto volumen que superan la capacidad de DaemonSet o clústeres con entornos de ejecución de contenedores seguros. Collect Kubernetes pod text logs (sidecar mode).
Reglas de recopilación
SLS admite dos métodos para definir reglas de recopilación:
Método de configuración | Funciones | Casos de uso | Notas |
| Recomendado para clústeres de producción y entornos CI/CD. |
| |
| Ideal para clústeres pequeños, depuración o entornos que no son de producción. |
Conceptos clave
Kubernetes: plataforma de orquestación de contenedores de código abierto que automatiza el despliegue, el escalado y la gestión de aplicaciones en contenedores.
Registros de salida estándar, error estándar y archivos de texto: Stdout captura la salida normal del programa (registros de negocio, registros operativos). Stderr captura errores y advertencias (trazas de pila, fallos de inicio). Ambos se dirigen a la terminal y son capturados por el motor de contenedores. Los registros de archivos de texto son escritos en archivos por las aplicaciones (por ejemplo, Nginx
access.log) y se eliminan cuando se destruye el contenedor, a menos que se conserven mediante un volumen.Mecanismo de checkpoint: registra la posición de recopilación en un archivo, guardado en
/tmp/logtail_checkpointde forma predeterminada. Garantiza una recopilación fiable tras reinicios de LoongCollector o fallos en los nodos.LoongCollector (Logtail): recopilador de registros de alto rendimiento desarrollado por Alibaba Cloud que admite el despliegue mediante DaemonSet y sidecar en Kubernetes. LoongCollector es el sucesor de Logtail y es totalmente compatible con versiones anteriores.
CRD de Kubernetes: definición de recurso personalizado (CustomResourceDefinition) que permite definir recursos personalizados para la configuración. SLS utiliza AliyunPipelineConfig como su tipo de CRD.
Configuración de recopilación: define reglas para tipos de registro, rutas de recopilación, filtrado, análisis y ubicación de almacenamiento. What is a collection configuration?.
Plugin de análisis: unidad de procesamiento dentro de processing plugin configuration para estructurar, dividir, filtrar o desensibilizar el contenido de los registros. Admite modos de expresión regular, separador, JSON y multilínea.
Cómo funciona
Un usuario crea un recurso personalizado (CR) mediante
kubectlpara definir una regla de recopilación.El
loongcollector-operatorsupervisa continuamente los cambios en los CR del clúster.Cuando se detecta un cambio, el Operator convierte el CR en una configuración de LoongCollector y la aplica a Simple Log Service.
El agente de LoongCollector envía periódicamente latidos a Simple Log Service para obtener actualizaciones de configuración, recupera la configuración de recopilación más reciente y la aplica dinámicamente.
El agente
loongcollector-dsrecopila los registros según la nueva configuración y los envía a SLS a través del endpoint configurado.
Modo DaemonSet
Despliega un agente de LoongCollector en cada nodo para recopilar registros de todos los contenedores en ese nodo. Ofrece operaciones sencillas, bajo consumo de recursos y configuración flexible, pero un aislamiento de inquilinos más débil.
Modo sidecar
Inyecta un sidecar de LoongCollector junto al contenedor de la aplicación en cada pod. El directorio de registros de la aplicación se comparte mediante un volumen de Kubernetes (emptyDir, hostPath o PVC), lo que permite a LoongCollector leer los archivos de registro directamente. Proporciona un fuerte aislamiento de inquilinos y alto rendimiento, pero consume más recursos.
Descubrimiento de contenedores
LoongCollector debe identificar los contenedores en ejecución en el nodo antes de recopilar sus registros. Este proceso se denomina descubrimiento de contenedores.
LoongCollector se comunica directamente con el daemon del entorno de ejecución de contenedores en el nodo, no con el kube-apiserver del clúster. Esto evita carga adicional en el kube-apiserver.
LoongCollector accede al socket del entorno de ejecución de contenedores (Docker o Containerd) en el host. Admite incluir o excluir contenedores por namespace, nombre del pod, etiquetas del pod o variables de entorno.
Recopilación de salida estándar
LoongCollector identifica automáticamente la API o el controlador de registro correcto para cada entorno de ejecución de contenedores (Docker, Containerd) según los metadatos. Lee el flujo stdout directamente sin acceder a los sistemas de archivos de los contenedores.
LoongCollector guarda periódicamente el progreso de la recopilación en un archivo de checkpoint y reanuda desde la última posición tras un reinicio.
Recopilación de registros de archivos de texto del contenedor
Kubernetes aísla los sistemas de archivos de los contenedores, por lo que un recopilador no puede acceder directamente a los archivos en otros contenedores. LoongCollector monta el sistema de archivos raíz del host para acceder indirectamente a los archivos del contenedor de la aplicación.
De forma predeterminada, el sistema de archivos raíz del host se monta en
/logtail_host. Por lo general, no es necesario realizar un montaje manual. Por ejemplo, si un archivo de registro del contenedor se encuentra en/log/app.logy su ruta en el host es/var/lib/docker/containers/<container-id>/log/app.log, LoongCollector lo lee desde/logtail_host/var/lib/docker/containers/<container-id>/log/app.log.
Análisis de registros multilínea
LoongCollector utiliza una expresión regular definida por el usuario para coincidir con el inicio de una línea de registro.
Coincidencia exitosa: la línea se trata como el inicio de una nueva entrada de registro.
Coincidencia fallida: la línea se añade a la entrada de registro actual.
Cuando otra línea coincide con la expresión regular de inicio de línea, se completa la entrada de registro actual y comienza una nueva.
Procesamiento de registros cuando se detiene un contenedor
|
Entorno de ejecución |
Riesgo de latencia de destrucción |
Integridad de los registros |
Optimización |
|
Docker |
Cuando se detiene un contenedor, LoongCollector libera inmediatamente el manejador de archivos del contenedor, lo que permite que el contenedor finalice normalmente. |
Si la recopilación se retrasa antes de que se detenga el contenedor, por ejemplo, debido a latencia de red o alto uso de recursos, es posible que se pierdan algunos registros generados justo antes de la detención. |
Aumente la frecuencia de envío de registros (disminuya |
|
Containerd |
Si la recopilación se retrasa, por ejemplo, debido a latencia de red o alto uso de recursos, es posible que el contenedor de la aplicación no se destruya de inmediato. |
Cuando se detiene un contenedor, LoongCollector continúa reteniendo los manejadores de archivos del contenedor, manteniendo abiertos los archivos de registro hasta que se haya enviado todo el contenido. |
Configure |
Después de eliminar un pod, los registros que ya se han recopilado en el LogStore de Simple Log Service no se ven afectados. Los registros se conservan durante el período de retención de datos del LogStore y permanecen consultables dentro de ese período. Puede modificar el período de retención en la consola de Simple Log Service.
Después de eliminar un pod, las configuraciones de recopilación basadas en etiquetas o en namespaces se aplican automáticamente a los nuevos pods que tengan las mismas etiquetas. Cuando una actualización continua de Deployment elimina pods antiguos y crea nuevos, Simple Log Service recopila automáticamente los registros de los nuevos pods, por lo que no es necesario volver a configurar las reglas de recopilación.
Obtención de metadatos del contenedor
LoongCollector obtiene los metadatos de Kubernetes directamente a través de la API de CRI (Container Runtime Interface), lo que permite el etiquetado de metadatos en tiempo real y sin intrusiones durante la recopilación.
-
Docker: LoongCollector utiliza el cliente de Docker para comunicarse con el daemon de Docker y obtener metadatos. Las principales API incluyen:
ContainerList: enumera los contenedores en ejecución en el nodo.
ContainerInspect: devuelve la configuración detallada y el estado del contenedor.
Events: escucha eventos del ciclo de vida del contenedor en tiempo real.
Campos de metadatos clave obtenidos a través del cliente de Docker:
LogPath: la ruta en el host del archivo de registro stdout del contenedor.
GraphDriver.Data: la ruta en el host del rootfs del contenedor, utilizada para el acceso al sistema de archivos y la solución de problemas.
-
Containerd: LoongCollector utiliza la CRI para ser compatible con entornos
containerdy CRI-O, recopilando metadatos de entornos de ejecución subyacentes comorunco Kata Containers.-
La CRI proporciona la ruta en el host del archivo de registro stdout, pero no la ruta del rootfs del contenedor. LoongCollector utiliza estos métodos para encontrarla:
Búsqueda de ruta de archivo: busca la ruta del rootfs del contenedor en el sistema de archivos del host utilizando el ID del contenedor.
Interacción directa con containerd: LoongCollector puede omitir la CRI y comunicarse directamente con containerd para obtener la ruta del rootfs y otros metadatos no disponibles a través de la CRI.
-
Mejores prácticas
Consulta unificada entre entornos
Para consultar registros en distintos entornos (por ejemplo, pruebas y producción), utilice uno de estos métodos:
Almacene todos los datos de los entornos en el mismo LogStore y añada etiquetas para distinguirlos. Collect container logs from a cluster by using the console (standard output/file).
Recopile datos en LogStores o proyectos separados. Cree un StoreView para consultas entre LogStores. Este método no tiene costos de almacenamiento adicionales, pero es de solo lectura y no admite alertas. Utilice un campo
tagpara identificar el LogStore de origen de cada entrada de registro.(Recomendado) Recopile datos en LogStores o proyectos separados. Utilice data manipulation para copiar datos seleccionados a un LogStore centralizado. Admite análisis previo al almacenamiento y alertas, pero es una función de pago.
Recopilación de registros de múltiples orígenes
Cada configuración de recopilación tiene como objetivo un único origen. Cree una configuración independiente para cada origen de registros.
Recopilación detallada y aislamiento multiinquilino
En un entorno multiinquilino, utilice proyectos separados para aislar los datos. Los datos entre proyectos son inaccesibles entre sí, y cada proyecto puede tener permisos de acceso independientes.
Operaciones automatizadas e integración CI/CD
Utilice el método CRD para incorporar configuraciones de recopilación en flujos de trabajo GitOps o IaC, logrando una gestión de la recopilación de registros automatizada y rastreable.