← Volver a Back.API

HealthController

Controlador para monitoreo de salud del sistema y verificación de estado de componentes

📊 Resumen del Controlador

2
Servicios Inyectados
1
Endpoint Principal
3
Componentes Monitoreados
174
Líneas de Código

El HealthController es un controlador especializado del sistema RestMaster encargado de proporcionar información detallada sobre el estado de salud de la aplicación y sus componentes críticos. Este controlador es fundamental para el monitoreo proactivo y la detección temprana de problemas en el sistema.

🎯 Funcionalidades Principales

  • Health Check General: Verificación completa del estado del sistema (1 endpoint)
  • Monitoreo de Base de Datos: Verificación de conexión y estado de SQL Server
  • Monitoreo de Espacio en Disco: Verificación de espacio disponible y usado
  • Monitoreo de Memoria: Verificación de uso de memoria del proceso
  • Análisis de Estado: Evaluación automática del estado general del sistema
  • Logging Detallado: Registro de errores y eventos de salud
  • Respuestas Estructuradas: Información detallada en formato JSON
  • Detección de Problemas: Identificación automática de componentes no saludables

🔧 Servicios Utilizados

Servicios Inyectados por Constructor:

  • IOptions<AppSettings> - Configuración de la aplicación
  • ILogger<HealthController> - Logging de errores y eventos

📊 Dependencias de Configuración

  • AppSettings: Configuración general de la aplicación
  • ConnectionStrings: Cadena de conexión a la base de datos
  • System.Diagnostics: Información del proceso actual
  • Microsoft.Data.SqlClient: Cliente SQL Server

⚠️ Configuración Requerida

El controlador requiere la siguiente configuración en appsettings.json:

  • ConnectionStrings:PerseforeConnection (string, requerido): Cadena de conexión a SQL Server
  • Access:UserID (string, opcional): Usuario de base de datos
  • Access:Password (string, opcional): Contraseña de base de datos

📋 Categorías de Endpoints

🏥 Health Check General

Verificación completa del estado del sistema y todos sus componentes
Monitoring
System

Endpoints: 1 método

  • GET /api/health
Ver detalles →

🔗 Estructura de Rutas

Ruta Base: /api/health

El controlador utiliza la ruta /api/health siguiendo las convenciones de ASP.NET Core para health checks.

Patrones de URL:

📊 Códigos de Respuesta

✅ 200 - OK

Sistema saludable, todos los componentes funcionando correctamente
{ "status": "Healthy", "message": "The API is running smoothly.", "databaseConnection": { "status": "Healthy", ... }, "diskSpace": { "status": "Healthy", ... }, "memoryUsage": { "status": "Healthy", ... } }

⚠️ 200 - Unhealthy

Sistema no saludable, uno o más componentes con problemas
{ "status": "Unhealthy", "message": "One or more components are unhealthy.", "databaseConnection": { "status": "Unhealthy", ... }, "diskSpace": { "status": "Healthy", ... }, "memoryUsage": { "status": "Healthy", ... } }

❌ 500 - Internal Server Error

Error interno del servidor durante la verificación
{ "error": "An unexpected error occurred during health check", "statusCode": 500 }

🔍 Características Técnicas

🎯 Características del Controlador

  • Constructor Injection: Inyección de dependencias por constructor
  • Async/Await: Operaciones asíncronas para mejor rendimiento
  • Error Handling: Manejo robusto de excepciones con logging
  • SQL Server Integration: Verificación directa de SQL Server
  • System Monitoring: Monitoreo de recursos del sistema
  • Structured Logging: Logging detallado de errores y eventos
  • Configuration Binding: Configuración flexible desde appsettings
  • Health Assessment: Evaluación automática del estado general

⚠️ Consideraciones de Seguridad

  • El endpoint puede exponer información sensible del sistema
  • Se recomienda proteger el endpoint en producción
  • Los errores se loguean pero no exponen información sensible
  • Validación de configuración antes de ejecutar verificaciones

📝 Patrones de Diseño Utilizados

  • Health Check Pattern: Patrón estándar para verificación de salud
  • Dependency Injection: Inversión de control para servicios
  • Configuration Pattern: Configuración centralizada
  • Error Handling Pattern: Manejo centralizado de errores
  • Monitoring Pattern: Patrón de monitoreo de recursos

📈 Estadísticas Detalladas

174
Líneas de Código
3
Métodos Privados
1
Método Público
3
Componentes Monitoreados

Distribución de Funcionalidades:

🔗 Integración con Otros Componentes

🎯 Componentes Relacionados

  • ErrorHandlingMiddleware: Manejo de errores no controlados
  • GrafanaLoggingMiddleware: Logging de eventos de salud
  • AppSettings: Configuración de conexiones y parámetros
  • SQL Server: Base de datos principal del sistema
  • System Resources: Recursos del sistema operativo

📋 Casos de Uso

  • Monitoreo Proactivo: Verificación regular del estado del sistema
  • Alertas de Sistema: Detección temprana de problemas
  • Diagnóstico de Problemas: Identificación de componentes fallidos
  • Capacidad de Planificación: Monitoreo de recursos del sistema
  • Auditoría de Salud: Registro histórico del estado del sistema

📋 Modelos de Respuesta

🏥 HealthCheckResponse

Respuesta principal del health check
  • Status: Estado general del sistema (Healthy/Unhealthy)
  • Message: Mensaje descriptivo del estado
  • DatabaseConnection: Detalles de la conexión a BD
  • DiskSpace: Información del espacio en disco
  • MemoryUsage: Información del uso de memoria

🗄️ DatabaseConnectionDetails

Detalles de la conexión a la base de datos
  • Status: Estado de la conexión
  • Version: Versión de SQL Server
  • Level: Nivel de producto
  • Edition: Edición de SQL Server
  • EngineEdition: Edición del motor
  • IsClustered: Si está en cluster
  • IsFullTextInstalled: Si tiene Full-Text Search
  • IsIntegratedSecurityOnly: Solo autenticación integrada
  • IsXtpSupported: Soporte para XTP

💾 DiskSpaceDetails

Información del espacio en disco
  • Status: Estado del espacio en disco
  • TotalSpaceGB: Espacio total en GB
  • FreeSpaceGB: Espacio libre en GB
  • UsedSpaceGB: Espacio usado en GB

🧠 MemoryUsageDetails

Información del uso de memoria
  • Status: Estado del uso de memoria
  • TotalMemoryMb: Memoria total en MB
  • PrivateMemorySizeMb: Memoria privada en MB
  • WorkingSetMb: Working set en MB