Saltar al contenido

Registros ​

Abre la tarjeta Logs de un servicio, o haz clic en un despliegue de la lista Deployments del servicio. Los registros tienen su propia página:

  • Despliegue. El desplegable de arriba elige de qué despliegue ves los registros: primero el actual, y los anteriores bajo History (Removed o Failed). Al lado se muestran su estado, su ID (con botón para copiar) y la rama y el commit que desplegó, o la imagen en los servicios basados en imágenes.
  • Build logs muestra la salida de ese despliegue: clonación, compilación, subida y despliegue. Se actualiza en directo mientras se ejecuta y se conserva con el despliegue después. Un despliegue que solo desplegó una imagen no tiene compilación, así que la pestaña está desactivada (salvo si el despliegue falló: entonces sus pasos explican por qué).
  • Runtime logs muestra lo que escribieron los contenedores del servicio, con los eventos de la plataforma de Zenavo sobre ellos intercalados.

Cómo leer la tabla ​

Cada línea es una fila con tres columnas:

ColumnaQué muestra
SeverityERROR, WARN, INFO o DEBUG, con un punto de color.
TimeFecha y hora en la zona horaria de tu navegador, por ejemplo 10/22 18:25:06.
SummaryLa línea en una sola fila. Haz clic en la fila (o en su flecha) para verla entera: el JSON se muestra formateado y Copy copia la línea. La fila expandida también muestra la hora exacta, la instancia y el despliegue.

Zenavo lee la gravedad de la propia línea. Entiende los registradores JSON ("level", "severity", los niveles numéricos de pino), los campos level=, palabras de nivel como INFO:, [WARN] o ERROR - cerca del inicio de la línea (uvicorn, logging de Python, Java, Rails, Go), las líneas E1022 … al estilo de Kubernetes, [error] de nginx y los fallos (Traceback, panic:, …Error:). Los registros de acceso sin nivel son WARN para las respuestas 4xx y ERROR para las 5xx. Una línea sangrada, como un marco de pila, mantiene la gravedad de la línea anterior. Todo lo demás es INFO: Kubernetes no distingue lo escrito en stderr de stdout, así que escribir en stderr no convierte una línea en error.

Usa el buscador y los botones ERROR / WARN / INFO / DEBUG para filtrar la tabla. La tabla sigue la línea más reciente según llega; desplázate hacia arriba para leer con calma y pulsa Jump to latest para volver a seguirla. Export guarda lo que ves como archivo .log (en los registros guardados, todas las líneas del intervalo).

Eventos de la plataforma ​

Entre las líneas de la propia aplicación, los registros de ejecución muestran lo que les pasó a sus instancias, con el prefijo morado [Zenavo] Pod/<instancia>:

EventoSignificado
ScheduledLa instancia se colocó en el servidor.
Pulling, PulledLa imagen se está descargando, o ya está lista.
Failed, ErrImagePull, ImagePullBackOff (ERROR)No se pudo descargar la imagen: revisa su nombre, la etiqueta y el acceso al registro.
Created, StartedSe creó e inició el contenedor.
Unhealthy (WARN)La comprobación de salud falló.
BackOff (WARN)El contenedor sale una y otra vez y se reinicia con esperas cada vez más largas.
OOMKilled (ERROR)El contenedor se quedó sin memoria y se detuvo. Sube su límite de memoria o reduce su uso.
Exited (WARN)El contenedor salió con un código de error.
Killing, StoppedSe está sustituyendo una instancia (un despliegue nuevo, un reinicio o una reducción) y se detuvo como se pidió.
FailedMount, Evicted, FailedScheduling (ERROR)No se pudo montar un volumen, el servidor se quedó sin recursos o no había sitio para ejecutar la instancia.

Un evento que se repite, como una comprobación de salud que sigue fallando, se muestra como mucho una vez por minuto con su recuento, por ejemplo (x7).

Instancias y despliegues ​

Por defecto, los registros de ejecución siguen la instancia más reciente (Newest instance). Elige All instances para ver todas las réplicas (y, durante un despliegue, las instancias antiguas y nuevas juntas); cada línea indica entonces su instancia.

Cada línea y cada evento registran el despliegue que inició su instancia, así que los registros de un despliegue son exactamente los suyos, aunque durante un despliegue convivan instancias antiguas y nuevas. Las líneas guardadas antes de que Zenavo empezara a registrarlo se asignan a un despliegue por tiempo: desde que empezó hasta que terminó el siguiente. La página lo indica cuando muestra esas líneas.

Intervalo y registros guardados ​

Para el despliegue actual, All time sigue los registros en directo: las últimas 200 líneas de cada instancia y después las nuevas según se escriben. Al elegir un intervalo (de la última hora a los últimos 30 días, o uno personalizado) se muestran los registros guardados. Los despliegues retirados siempre muestran registros guardados. Las líneas suelen guardarse en menos de dos minutos desde que se escriben.

El tiempo que se guardan los registros depende del plan del equipo:

PlanSe guardan
Free48 horas
Dev7 días
Pro30 días
Team90 días

Los registros guardados empiezan cuando la función está activada y el servicio se ejecuta. Los Viewer pueden leerlos y descargarlos, igual que pueden leer los registros en directo.

Cómo se guardan ​

  • Los recoge el plano de control. Zenavo lee los registros y los eventos por la misma conexión que ya usa para gestionar tu servidor, y solo en el espacio de nombres del propio proyecto. Tu servidor no recibe credenciales de almacenamiento, así que un servidor comprometido no puede leer ni borrar los registros guardados de nadie.
  • Se censuran y luego se cifran. Primero se quitan los valores de las variables, tanto de la salida de los contenedores como de los mensajes de los eventos (el mensaje de una comprobación de salud fallida puede contener la respuesta recibida). Después cada fragmento se comprime y se cifra (AES-256-GCM) con una clave derivada de la clave maestra del plano de control antes de subirlo. Quien obtenga el bucket o su clave de acceso solo ve texto cifrado.
  • Se borran a tiempo. Los registros que superan la retención del plan se borran cada hora, y también se eliminan los de proyectos y equipos borrados.
  • Tienen un tope. Cada servicio guarda hasta 200 MB de texto de registro por hora; a partir de ahí se guarda una línea de aviso y se omite el resto de la hora. Los registros en directo siguen mostrando todas las líneas. Las líneas de más de 64 KB se recortan.

Para reenviar además los registros a Datadog, Loki o tu propio endpoint, añade un reenvío de registros. Los eventos de la plataforma también se reenvían, como líneas [Zenavo] Pod/<instancia> — <Motivo>: <mensaje>.

Sin relación con Zeabur.