Saltar a contenido

Resumen: Sistema de Monitoreo del Servidor

🎯 Implementación Completada

Se ha implementado exitosamente un sistema de monitoreo en tiempo real de recursos del servidor para DocuCenter.

📂 Archivos Creados

1. Servicio de Métricas

Ubicación: app/Services/ServerMetricsService.php

Servicio que obtiene métricas del sistema operativo: - Uso de disco (disk_free_space/disk_total_space) - Uso de RAM (lectura de /proc/meminfo) - Uso de CPU (sys_getloadavg y /proc/stat) - Información del sistema (hostname, OS, PHP, uptime)

2. Componente Livewire

Ubicación: app/Http/Livewire/Admin/Reports/ServerMonitor.php

Componente con: - Auto-refresh cada 5 segundos (configurable) - Métodos para actualizar métricas individuales - Toggle para activar/desactivar auto-refresh - Integración con sistema de traducciones

3. Vista Blade

Ubicación: resources/views/livewire/admin/reports/server-monitor.blade.php

Interfaz responsive con: - 3 tarjetas principales (Disco, RAM, CPU) - Barras de progreso con código de colores - Botones de refresh individuales - Información del sistema - Leyenda de estados

4. Script de Prueba

Ubicación: scripts/test-server-monitor.sh

Script para verificar funcionamiento en Docker/producción.

5. Documentación

Ubicación: docs/technical/server-monitoring-system.md

Documentación completa del sistema.

🔧 Configuración

Ruta Agregada

// routes/web.php
Route::get('/server_monitor', \App\Http\Livewire\Admin\Reports\ServerMonitor::class)
    ->name('server_monitor');

URL de acceso: /admin/reports/server_monitor

Traducciones

Agregadas en: - lang/es_panel.json (español) - lang/en_panel.json (inglés)

✨ Características Principales

Métricas Monitoreadas

  1. Disco
  2. Total, usado, libre
  3. Porcentaje de uso
  4. Alerta visual según nivel

  5. RAM

  6. Total, usado, libre
  7. Buffers y caché
  8. Porcentaje de uso

  9. CPU

  10. Load average (1, 5, 15 min)
  11. Porcentaje de uso
  12. Desglose: usuario, sistema, idle
  13. Número de CPUs

  14. Sistema

  15. Hostname
  16. Sistema operativo
  17. Versión de PHP
  18. Uptime

Funcionalidades

  • Auto-refresh: Cada 5 segundos (configurable)
  • Refresh manual: Botón por cada métrica
  • Toggle auto-refresh: Activar/desactivar
  • Código de colores:
  • Verde: < 60% (Normal)
  • Amarillo: 60-80% (Advertencia)
  • Rojo: > 80% (Crítico)
  • Responsive: Funciona en móvil y desktop
  • Timestamp: Última actualización visible

🔐 Seguridad

  • Protegido por middleware dynamicAcl y check.active.organization
  • Solo lectura de archivos del sistema
  • Logging de errores
  • Manejo de excepciones

🧪 Testing

Prueba Manual

./scripts/test-server-monitor.sh

Prueba en Navegador

http://localhost/admin/reports/server_monitor

Verificación de Funciones PHP

# Prueba realizada exitosamente:
php -r "echo disk_free_space('/') . PHP_EOL;"
# Resultado: Funciona correctamente

php -r "print_r(sys_getloadavg());"
# Resultado: Array con load averages

📊 Compatibilidad

Producción (Linux sin Docker)

Totalmente funcional - Acceso directo a /proc/* - Métricas reales del servidor - Todas las características disponibles

Desarrollo (Docker)

⚠️ Métricas del contenedor - Muestra datos del contenedor, no del host - Funcional para desarrollo - Para métricas del host requiere configuración adicional

Sistemas Operativos

  • ✅ Linux (Ubuntu, Debian, CentOS)
  • ⚠️ Windows (solo disco)
  • ⚠️ macOS (funcionalidad limitada)

🚀 Uso

Acceso

  1. Iniciar sesión en DocuCenter
  2. Navegar a /admin/reports/server_monitor
  3. Ver métricas en tiempo real

Configuración

El auto-refresh está activado por defecto (5 segundos).

Para cambiar el intervalo, editar en ServerMonitor.php:

public $refreshInterval = 5; // Cambiar a segundos deseados

📝 Convenciones Seguidas

  • ✅ Comentarios en español
  • ✅ NO usar emojis en código
  • ✅ Sistema de traducciones integrado
  • ✅ Middleware de seguridad aplicado
  • ✅ Documentación en docs/technical/
  • ✅ Scripts de testing en scripts/
  • ✅ Logging apropiado de errores

🔄 Próximos Pasos Sugeridos

  1. Históricos: Almacenar métricas para gráficos temporales
  2. Alertas: Email cuando se superan umbrales
  3. Múltiples servidores: Monitorear varios servidores
  4. Métricas de aplicación: Jobs, cache, sesiones de Laravel
  5. Exportación: Generar reportes en PDF/CSV

✅ Verificación de Implementación

  • [x] Servicio de métricas creado
  • [x] Componente Livewire implementado
  • [x] Vista responsive creada
  • [x] Ruta configurada
  • [x] Traducciones agregadas (ES/EN)
  • [x] Middleware de seguridad aplicado
  • [x] Script de prueba creado
  • [x] Documentación completa
  • [x] Pruebas básicas realizadas

📞 Soporte

Para problemas o mejoras: 1. Revisar logs: storage/logs/laravel.log 2. Consultar documentación: docs/technical/server-monitoring-system.md 3. Ejecutar script de prueba: ./scripts/test-server-monitor.sh


Implementación completada siguiendo las convenciones de DocuCenter y listo para uso en producción.