Logotipo de Container Logs

Docker y Portainer Nuevo

Conectar Registros de contenedores a Excel, Hojas de cálculo y IA

Docker escribe un registro para cada contenedor; consúltelos todos a la vez. Los registros en formato JSON que escribe el demonio, registros de Docker Exporta manualmente los archivos que guardas y el registro del servidor de Portainer. Si apuntas Query Streams a la carpeta, cada línea se convierte en una fila que contiene el nombre real del contenedor, su imagen y su servicio Compose, en lugar de un directorio lleno de identificadores de 64 caracteres.

1conexión
0puertos de entrada
solo lecturaaplicado
3 formatos de registro de contenedores Docker · Portainer Nombrado por contenedor, imagen y servicio Solo lectura · nada instalado en el contenedor
La gran idea

Una carpeta de registros de contenedores se convierte en una tabla.

Query Streams lee los archivos que el demonio ya ha escrito, fija el formato y proporciona columnas tipadas con el contenedor especificado junto a cada fila. Sin archivos auxiliares, sin canalización de envío, sin índice que mantener; y una línea que el analizador no puede leer se conserva como una fila con una explicación, en lugar de descartarse silenciosamente.

Carpeta de registroen el presentador
a3f9c1…-json.logEstibador
Estibadorshopfront-stack_api.logexportar
portainer.logPorteador

Rotaciones, archivos comprimidos y archivos releídos: gestionados

contenedores ruidosos.sqlSQL
SELECCIONE aplicación, componer_servicio,
       contar(*) AS pauta
DESDE   eventos del conjunto de archivos
DONDE  flujo = 'stderr'
GRUPO POR aplicación, servicio de composición
ORDENAR POR pauta DESC
Resultadostderr por contenedor
aplicaciónserviciopauta
API de la tiendaAPI1,284
empleado de tiendaobrero417
tienda-webweb62
caché de la fachada de la tiendacache3

Intégrala a la base de datos de tu aplicación en la misma consulta.

Archivos que el demonio ya escribe, ahora una tabla sobre la que puede generar informes.

Fuentes

Dos herramientas, tres formatos, sin sidecar

Cada tarjeta nombra los archivos exactos que lee Query Streams y dónde se encuentran. No es necesario modificar el controlador de registro para que esto funcione. archivo json es el predeterminado de Docker, y el predeterminado es el compatible.

Registros de contenedores compatibles

3 formatos · 2 herramientas
Estibadorcontrolador de registro de archivos JSON
  • Uno {"registro","flujo","tiempo"} sobre por línea, escrito por el demonio
  • El nombre del contenedor proviene del propio Docker. config.v2.json junto al tronco
  • Imagen y componer proyecto/servicio recorrido como columnas
  • Generalmente /var/lib/docker/contenedores
  • Apéndices; rotaciones numeradas y .gz seguido
EstibadorExportación de registros de Docker
  • Archivos que guardaste con Registros de Docker --marcas de tiempo
  • Un sello de nanosegundos RFC 3339, luego la propia línea del contenedor.
  • Las líneas del banner del contenedor se omiten por declaración, no por casualidad.
  • Cualquier carpeta donde guardes las exportaciones
  • Un archivo por servicio; el nombre proviene de la raíz del archivo.
PorteadorRegistro del servidor, consola zerolog
  • portainer.log o la propia salida del contenedor
  • Los códigos de color ANSI se eliminan antes del análisis, por lo que un nivel es un nivel.
  • El clave=valor La cola se convierte en columnas; el resto cae en datos
  • Las líneas con formas diferentes del servidor de túnel integrado también se leen.
  • Sellos con resolución de minutos, leídos en UTC
Más informaciónEste es el comienzo, no el techo.

Con cada nueva versión del Agente, se añaden nuevos formatos de registro de contenedores. Dado que los Agentes se actualizan automáticamente, un formato añadido posteriormente aparece en el conector sin necesidad de que nadie acceda al servidor.

Los tres analizadores se construyeron y probaron con registros de contenedores reales: registros en formato json, grandes registros de Docker Exporta desde un host Swarm y el registro del servidor de Portainer CE 2.39.1. Una cosa que debes saber de antemano: en Docker Desktop para Windows y Mac, los registros del archivo json se encuentran dentro de su máquina virtual, donde un agente que se ejecuta como un servicio no puede acceder a ellos. Exporta con Registros de Docker --marcas de tiempo y utilice el segundo perfil.
En cualquier lugar donde se pueda correr

Contenedores en cada región, registros leídos donde se sientan

Es raro que todos los contenedores se ejecuten en un mismo lugar. Un host en la oficina, un clúster Swarm en una región de la nube, un único servidor en otro país. Cada ubicación ejecuta un Agente de red que lee los archivos de registro donde ya se encuentran y se conecta a Query Streams. Para su firewall, se trata de una conexión saliente normal: no hay nada que abrir ni ninguna VPN que configurar.

Oficina central Un host Docker en el disco local, registros en formato JSON en la carpeta del demonio. marca fuera
eu-oeste Un clúster Swarm, uno registros de Docker exportación por servicio marca fuera
nosotros-este Portainer gestiona un puñado de hosts, su propio registro de servidor junto a marca fuera

Tres conexiones salientes, un solo lugar para consultarlas: sin puerto de entrada, sin VPN, sin cambios en el firewall.

Un agente por ubicación

Un agente cubre todo un sitio en lugar de una sola carpeta: cada formato de registro que desee utilizar se convierte en su propio conector de conjunto de archivos en ese mismo agente. Lo habitual es un agente por ubicación. El plan gratuito ejecuta un solo agente y los planes superiores ejecutan más.

1 sitio = 1 agente = muchos conectores

Nada que abrir

El agente establece una conexión saliente cifrada, y tanto la solicitud saliente como las filas recibidas viajan a través de ella. No se requiere ningún puerto de entrada, VPN ni modificación del firewall; además, las credenciales permanecen dentro de su red.

una conexión, en ambas direcciones

Una consulta en varios sitios

Cada fuente en un consulta federada Asigna su propio agente, de modo que una sola instrucción puede leer un registro en un país y otro en un país diferente, y devolver un único resultado, o bien combinarlos en una base de datos. Incluido en los planes Business y Enterprise.

2 países → 1 conjunto de resultados

Se mantienen al día

Los agentes se actualizan automáticamente, por lo que un formato de registro de contenedores añadido en una versión posterior llega a todos los sitios sin que nadie tenga que iniciar sesión en un servidor para instalarlo. Eso es lo que convierte el muro anterior en un punto de partida, en lugar de una lista fija.

Llegan nuevos formatos con el Agente

La parte difícil

Nombres, relojes y códigos de color

Un registro de contenedor no es un archivo de texto con una fecha. Suelen surgir tres problemas al intentar tratarlo como datos, y aquí se abordan mediante una declaración explícita en lugar de conjeturas.

Nombres, no identificadores hexadecimales

Docker nombra cada carpeta de registro según el ID del contenedor, lo que hace que una consulta agrupada sea ilegible. Query Streams lee el registro que Docker escribe junto al archivo de registro y toma el nombre real, manteniendo el ID como una columna aparte.

a3f9c1…-json.log → app = shopfront-api

El reloj del demonio

Un contenedor que imprime su propia marca de tiempo en segundos de época aterriza en 1970, si se le da crédito. La hora del evento es la hora de captura del demonio; la marca de tiempo del propio contenedor se guarda como una columna en lugar de ser considerada fiable.

tiempo de envoltura → tiempo_evento

Códigos de color en el archivo

Los registradores de consola escriben las secuencias de escape de terminal directamente en el registro. Estas se eliminan antes del análisis, por lo que un nivel se lee como un nivel en lugar de como un nivel envuelto en caracteres de escape, y los bytes originales permanecen intactos.

Códigos de escape eliminados → nivel = INF

Nada contó dos veces

Cada archivo se identifica mediante sus primeros 4 KB, de modo que un archivo rotado se reconoce como el mismo archivo en lugar de leerse de nuevo desde el principio. Una ventana de duplicados deslizante detecta la superposición cuando un escritor reproduce su cola.

Hash de prefijo de 4 KB · ventana de 20.000 registros

El esquema

Las columnas que realmente obtienes

No se trata de un bloque de texto con una marca de tiempo al lado. Cada formato se analiza y se convierte en columnas tipificadas que se pueden filtrar, agrupar y agregar directamente; y cuando un contenedor registra JSON estructurado, sus propios campos también se descomponen en columnas.

Logotipo de Docker
registro del contenedor de archivos jsondemonio Docker
arroyonivelleñadormensajeanfitriónserviciodatos
Logotipo de Docker
Exportación de registros de DockerInterfaz de línea de comandos de Docker
mensaje
Logotipo de Portainer
Registro de consola zerologPorteador
nivelllamadormensajeerrordatos

Cada fila también lleva tiempo_del_evento, el sello original del que se leyó y el archivo del que proviene. Cada formato agrega su columna de identidad: aplicación para archivos json y Portainer, recipiente para una exportación — y las filas del archivo json además contienen imagen, componer_proyecto, servicio_componer y ID del contenedor. El único mensaje La columna en una exportación es intencional: la línea del propio contenedor se mantiene intacta en lugar de adivinarse.

Una conexión, cada superficie

Dónde se pueden almacenar los datos de registro de su contenedor.

Los archivos de registro no son un callejón sin salida. Conecta la carpeta una sola vez y la misma conexión de solo lectura alimenta todas las superficies que admite Query Streams; no se requiere una segunda configuración, ni una segunda copia de los datos, ni hay diferencias en el tratamiento por parte de un conector de base de datos.

Compatible

Registros de contenedores a Excel

Microsoft Excel · Complemento de Excel

Obtenga los resultados de los registros de contenedores en tiempo real directamente en una hoja de cálculo y actualícelos cuando lo necesite: Excel de escritorio, Excel Online, Microsoft 365.

Cómo funciona Excel
Compatible

Registros de contenedores en Google Sheets

Complemento de hojas

Ejecute una consulta de registro de contenedor guardada desde la barra lateral y arrastre las filas a la hoja. Los colaboradores compartidos pueden actualizarla ellos mismos.

Cómo funciona Google Sheets
Compatible

Servidor MCP de registros de contenedores

Claude, Cursor y clientes MCP · Servidor MCP

Otorgue a un asistente de IA acceso de solo lectura al registro del contenedor con el esquema que necesita para escribir SQL correcto; no se requieren credenciales en el chat.

Cómo funciona MCP
Compatible

API REST de registros de contenedores

punto final HTTP

Publica una consulta de registro de contenedor como un punto final JSON autenticado al que cualquier aplicación puede llamar, con una especificación OpenAPI 3.1 y colecciones predefinidas para Postman, Insomnia y Hoppscotch. No se abre ningún puerto de base de datos.

Cómo funciona la API REST
Compatible

Registros de contenedores en Airtable

Plataforma de automatización

Sincroniza las filas del registro del contenedor con una base de datos de Airtable según un cronograma, o recupéralas dentro de un script de automatización de Airtable.

Cómo funciona Airtable
Compatible

Registros del contenedor en Baserow

Plataforma de automatización

Alimenta una tabla de Baserow desde el registro del contenedor a través del punto final REST, ya sea en servidores propios o en la nube de Baserow.

Cómo funciona Baserow
Compatible

Registros de contenedores a SeaTable

Plataforma de automatización

Mantén actualizada una base de datos SeaTable con los datos de registro de los contenedores sin exportar ningún archivo ni exponer la base de datos.

Cómo funciona SeaTable
Compatible

Registros de contenedores en Smartsheet

Plataforma de automatización

Los resultados del registro de contenedores se insertarán en una cuadrícula de Smartsheet para que los planes e informes se lean desde el sistema de origen, y no desde la exportación de la semana pasada.

Cómo funciona Smartsheet
Compatible

Registros de contenedores en Anvil

Anvil Works · Plataforma de aplicaciones

Realice una copia de seguridad de una aplicación Python de Anvil con registro de contenedor a través del punto final REST en lugar de incrustar las credenciales de la base de datos en la aplicación.

Cómo funciona Anvil
Compatible

Registros de contenedores en Power BI

Power Query M

Pegue la consulta Power Query M generada en el Editor avanzado de Power BI y el informe leerá los resultados del registro del contenedor en tiempo real a través de HTTPS, sin controlador ODBC ni puerto de base de datos abierto.

Cómo funciona Power BI
Compatible

Registros de contenedores, alertas e informes

Slack · Discord · Correo electrónico · Webhook

Programe una consulta de registro de contenedor y haga que las filas se envíen a Slack, Discord, correo electrónico o un webhook firmado, o bien, retenga el mensaje hasta que un recuento de filas, un umbral o un cambio porcentual supere la línea que haya establecido.

Cómo funcionan las alertas y los informes
La tarjeta de alertas es la que merece una segunda mirada para los contenedores: una consulta programada sobre el recuento de errores no requiere que nadie supervise una terminal, por lo que un bucle de reinicio llega a Slack automáticamente. Aún no se han escrito guías paso a paso específicas para los registros; las páginas enlazadas explican cómo funciona cada interfaz.

Lo que esto deliberadamente no hace

No se trata de una lectura en tiempo real. Query Streams lee los archivos tal como están en el disco al ejecutar la consulta, por lo que un bucle de reinicio se muestra como filas en lugar de como un flujo que se puede observar. Si necesita alertas con precisión de subsegundos sobre una línea a medida que se imprime, una canalización de registros es la herramienta adecuada.

La salida de un contenedor es de formato libre, y esto tiene una consecuencia que conviene aclarar: lo que imprime tu aplicación es lo que se guarda en la tabla. Si registra un token o un correo electrónico de un cliente, esa cadena ya está en el archivo de registro y también aparecerá en la columna. No hay un mapa de encabezados para excluir, como ocurre con el registro de un servidor web; trata la tabla resultante con el mismo cuidado que el archivo.

Dos límites más pequeños, nombrados en lugar de ocultos. En un registros de Docker La exportación de la propia línea del contenedor se mantiene intacta en una mensaje columna; el análisis de esa línea interna según su propio formato aún no está implementado. Además, los atributos opcionales que Docker puede adjuntar a una etiqueta de registro se reconocen únicamente por su forma; ningún contenedor del corpus capturado los utilizó, por lo que esa ruta se declara, no se demuestra.

El resto sigue el diseño habitual. El agente se conecta y lee archivos; no se instala nada en el contenedor, no se escribe nada, el socket y la API de Docker nunca se modifican y el acceso es de solo lectura. El campo de retención comienza en 30 días para esta configuración predeterminada y usted puede modificarlo.

Cómo funciona

Tres pasos y no se instala nada en un contenedor.

01

Señala la carpeta de registro.

Otorgue a un agente de Query Streams acceso de lectura a la ubicación donde ya se almacenan los registros. /var/lib/docker/contenedores en un host Docker, una carpeta de exportaciones guardadas o un recurso compartido donde las recopile.

02

Reconoce el formato

Query Streams identifica el formato a partir del contenido de las líneas, no del nombre del archivo; por lo tanto, una copia renombrada aún se puede leer, y un archivo que no coincide con el formato fijado se archiva con una explicación en lugar de dañar la tabla.

03

Consúltalo o únete a él.

Ejecute consultas SQL desde el portal, impórtelas directamente en Microsoft Excel o Google Sheets, o utilice una consulta federada para combinar los registros de contenedores con los usuarios y pedidos de la base de datos de su aplicación, todo en una sola instrucción.

Preguntas frecuentes sobre el registro de contenedores

¿Tengo que cambiar mi controlador de registro de Docker?

No. archivo json es el controlador predeterminado de Docker, y es el compatible. Si nunca has configurado el registro, los archivos ya están ahí y con el formato correcto.

Si se ha cambiado a un controlador diferente, el Registros de Docker --marcas de tiempo La exportación es la ruta de entrada: funciona independientemente del controlador, porque la CLI lee a través del demonio.

¿Cómo sabe el nombre del contenedor y no solo su ID?

Docker escribe su propio registro de un contenedor en la misma carpeta que el registro. Query Streams lee el nombre de ese archivo y lo usa como columna de identidad, con la imagen y el proyecto y servicio de Compose mantenidos como columnas adyacentes. El ID de carpeta de 64 caracteres se conserva como ID del contenedor, así que no se pierde nada.

Si ese registro falta, es ilegible o no tiene nombre, se utiliza el nombre de la carpeta y el sistema cuenta con qué frecuencia ocurrió, de modo que la solución alternativa aparece como un número que se puede consultar, no como una sustitución silenciosa.

Estoy usando Docker Desktop para Windows o Mac. ¿Esto funciona?

No se trata de acceder directamente a los registros en formato JSON. Docker Desktop los mantiene dentro de su propia máquina virtual, y un agente que se ejecuta como servicio en el host no puede acceder a ellos.

La solución es el perfil de exportación: docker logs --timestamps <contenedor> Se redirige a un archivo, en cualquier carpeta que el Agente pueda leer. Este es un formato compatible en sí mismo, no una solución alternativa; es el mismo método que ya se utiliza para conservar una copia de un registro después de que un contenedor desaparece.

¿Esto es en tiempo real?

Se trata de un sistema bajo demanda, no de transmisión continua. Los archivos se leen tal como están cuando se ejecuta la consulta, por lo que aparecen nuevas líneas a medida que los contenedores las escriben y se procesa el archivo; no se realiza según un horario fijo nocturno, pero tampoco se realiza un seguimiento en tiempo real.

Para hacer una pregunta sobre las últimas semanas en cada contenedor y obtener la respuesta en una hoja de cálculo, esa es la forma útil y requiere considerablemente menos maquinaria que una pila de troncos.

¿Qué hay de Kubernetes o Podman?

Ninguno de los dos tiene un perfil propio hoy en día, y preferimos decirlo en lugar de implicar cobertura. Lo que sí aplica es el formato de exportación: el perfil está vinculado a la forma exacta. Registros de Docker --marcas de tiempo escribe: un sello de nanosegundos RFC 3339, un espacio, luego la línea propia del contenedor, un archivo por servicio. Las herramientas que escriben con esa misma forma leen con ella.

La forma más fiable de comprobarlo para tus propios archivos es mediante la prueba de conexión, que informa de lo que ha detectado antes de que confirmes nada.

Mis contenedores registran datos en formato JSON. ¿Debo obtener sus campos como columnas?

Sí, para los registros de archivos JSON. El paquete del demonio se desempaqueta y el propio JSON del contenedor en su interior se aplana en columnas: nivel, registrador, mensaje, host y servicio, donde estén presentes. Todo lo que no se asigna a una columna con nombre se mantiene en un datos columna en lugar de descartarse, por lo que un campo inusual aún se puede consultar.

Lo único que no se toma del JSON del contenedor es la marca de tiempo. Esta proviene del demonio, ya que la marca de tiempo de una aplicación puede tener cualquier formato y un error en ella provoca una desincronización temporal silenciosa de la fila.

¿Qué ocurre con una línea que el analizador sintáctico no puede leer?

Se conserva, no se descarta. Una línea que no coincide con el formato fijado se mantiene como una fila sin formato con una explicación adjunta, de modo que una entrada mal formada o un cambio de formato inesperado se muestra como algo visible y consultable, en lugar de como un hueco silencioso en los números.

Tus contenedores ya están hablando.

Conecta una carpeta de registros y ejecuta tu primera consulta en pocos minutos. Plan gratuito, sin tarjeta de crédito, sin necesidad de instalar nada en un contenedor.

Solo lectura · Solo conexión saliente · Tus registros permanecen en tu host