Optimización de Swarm: Mantenimiento, Logs y Monitoreo Avanzado

Clase 23 de 24Curso de Swarm

Resumen

Si vas a usar Docker Swarm en producción, evita caídas y downtime con tres prácticas clave: housekeeping de disco, gestión de logs y monitoreo. Aquí se explican riesgos reales, cómo mitigarlos con modo global, elegir log drivers y limitar su tamaño, además de visualizar métricas con herramientas probadas.

¿Cómo hacer housekeeping de disco en Docker Swarm?

Mantener limpio el disco es crítico. Aunque los servicios parezcan stateless, bajo el capó se acumulan imágenes y capas en cada nodo, y con deployments frecuentes el espacio se agota. Swarm depende del algoritmo Raft, por lo que un nodo sin disco puede degradar el clúster.

  • Implementa un servicio de cleanup que borre imágenes sin contenedores activos y contenedores detenidos tras N tiempo.
  • Ejecútalo en todos los nodos con modo global. Así siempre habrá un contenedor limpiando por nodo.
  • Conéctalo al Docker daemon vía el socket para usar comandos como eliminación de imágenes y contenedores.
  • Recuerda: las imágenes son locales a cada host. No se gestionan desde el plano de Swarm.

¿Qué es el modo global y cuándo usarlo?

El modo global asegura una tarea por nodo, incluido cualquier nodo nuevo que se una. Es perfecto para utilidades de sistema como cleanup. A diferencia de mode replicated, no defines réplicas; defines cobertura total por nodo.

docker service ls

Verás servicios comunes en mode replicated y, para la limpieza, en mode global. Esto garantiza que cada host mantenga su disco bajo control.

¿Por qué “stateless” no evita llenar disco?

Con muchas versiones y rollouts, los layers se acumulan. Al cabo de días o semanas, el disco puede llenarse. Sin espacio, el Docker daemon no descarga nuevas imágenes ni escribe metadatos, y el nodo puede quedar inutilizable.

¿Cómo limitar y enrutar los logs en Swarm?

Los logs también consumen disco. Un servicio ruidoso como un pinger puede crecer sin control y bloquear el nodo. La elección del log driver importa: necesitas ver logs desde Swarm y, a la vez, limitar su tamaño.

  • json-file es el predeterminado y junto con journald soporta docker service logs.
  • También puedes enviar logs a Logstash de AWS, Splunk o syslog de Linux.
  • Si quieres ver los logs vía Swarm, usa journald o json-file y configura límites.

¿Qué configuración mínima evita sorpresas?

Define rotación con tamaño y conteo de archivos. Ejemplo: un máximo de 1 MB y 2 archivos. Cuando el segundo llega a 1 MB, se borra el primero y se reinicia el ciclo. Así garantizas que un servicio nunca supere el espacio asignado a logs.

¿Cuándo usar servicios externos de logs?

Cuando necesites centralización, búsqueda y retención amplia, envía logs a Logstash, Splunk o syslog. Aun así, mantén límites locales para que un pico de logs no consuma todo el disco del host.

¿Qué monitoreo necesitas para un Swarm productivo?

Además de fijar límites de CPU y RAM por servicio, necesitas ver qué sucede. Sin visibilidad no hay diagnóstico. El enfoque recomendado es adoptar monitoreo desde el primer día y activar alertas.

  • Usa herramientas abiertas como Prometheus con Grafana y CI2. Permiten tableros y alertas por Slack.
  • Considera opciones de pago como Datadog o New Relic si buscas menos mantenimiento.
  • Visualiza estrés por nodo, consumo por servicio y eventos del clúster.
  • Principio clave: no puedes arreglar lo que no puedes ver.

¿Qué prácticas incorporar desde el primer día?

  • Definir límites de CPU y RAM por servicio. Evita acaparamiento de recursos.
  • Desplegar tableros de métricas y alertas operativas. Reacciona a tiempo.
  • Probar escenarios de disco lleno por logs. Verifica que la rotación funciona.
  • Auditar la limpieza periódica en todos los nodos. Evita acumulación silenciosa.

¿Qué estrategia de limpieza, logs y monitoreo estás aplicando en tu Swarm? Comparte tu enfoque y dudas en los comentarios.

      Optimización de Swarm: Mantenimiento, Logs y Monitoreo Avanzado