Monitoreo de Contenedores
Monitorear tus contenedores en producción es esencial para mantener la confiabilidad. Necesitas rastrear el uso de recursos, la salud de la aplicación y los logs para identificar y resolver problemas rápidamente.
Monitoreo Incorporado de Docker
# Uso de recursos en tiempo real
docker stats
# Salida formateada
docker stats --format "table {{.Name}}\t{{.CPUPerc}}\t{{.MemUsage}}"
Health Checks
# En docker-compose.yml
services:
api:
build: .
healthcheck:
test: ["CMD", "wget", "-qO-", "http://localhost:3000/health"]
interval: 30s
timeout: 10s
retries: 3
Logging en Docker
# Ver logs del contenedor
docker logs api
docker logs -f api # Seguir (en vivo)
docker logs --tail 100 api # Últimas 100 líneas
docker logs --since 1h api # Última hora
Logging Estructurado
// Usar logging JSON estructurado para fácil análisis
const pino = require('pino');
const logger = pino({ level: process.env.LOG_LEVEL || 'info' });
logger.info({ port: 3000 }, 'Servidor iniciado');
logger.error({ err, userId: req.user.id }, 'Solicitud fallida');
Buenas Prácticas de Monitoreo
- ✅ Siempre implementa endpoints de health check
- ✅ Usa logging JSON estructurado (no texto plano)
- ✅ Monitorea CPU, memoria, disco y uso de red
- ✅ Configura alertas para reinicios y fallos de salud de contenedores
- ✅ Usa un sistema de logging centralizado para producción