← Volver a HealthController

🏥 Health Check General

Endpoint para verificación completa del estado del sistema y todos sus componentes

Descripción General

El endpoint Health Check General proporciona una verificación completa del estado de salud del sistema RestMaster. Este endpoint es fundamental para el monitoreo proactivo y la detección temprana de problemas en los componentes críticos del sistema.

🎯 Características del Health Check

  • Verificación Completa: Evalúa todos los componentes críticos del sistema
  • Estado Agregado: Proporciona un estado general basado en todos los componentes
  • Información Detallada: Incluye detalles específicos de cada componente
  • Detección Automática: Identifica automáticamente componentes no saludables
  • Logging Integrado: Registra errores y eventos para auditoría

Endpoint Disponible

GET /api/health

Realiza una verificación completa de salud del sistema. Este endpoint verifica el estado de la base de datos, espacio en disco y uso de memoria, proporcionando un estado general del sistema.
Parámetros:
  • No requiere parámetros de entrada
200 OK - Sistema Saludable
Sistema funcionando correctamente, todos los componentes saludables
{ "status": "Healthy", "message": "The API is running smoothly.", "databaseConnection": { "status": "Healthy", "version": "15.0.2000.5", "level": "RTM", "edition": "Developer Edition (64-bit)", "engineEdition": "3", "isClustered": false, "isFullTextInstalled": true, "isIntegratedSecurityOnly": false, "isXtpSupported": true }, "diskSpace": { "status": "Healthy", "totalSpaceGB": 500.0, "freeSpaceGB": 350.0, "usedSpaceGB": 150.0 }, "memoryUsage": { "status": "Healthy", "totalMemoryMb": 512, "privateMemorySizeMb": 256, "workingSetMb": 384 } }
200 OK - Sistema No Saludable
Uno o más componentes con problemas
{ "status": "Unhealthy", "message": "One or more components are unhealthy.", "databaseConnection": { "status": "Unhealthy", "version": "Database connection error: Login failed for user 'sa'", "level": "", "edition": "", "engineEdition": "", "isClustered": false, "isFullTextInstalled": false, "isIntegratedSecurityOnly": false, "isXtpSupported": false }, "diskSpace": { "status": "Healthy", "totalSpaceGB": 500.0, "freeSpaceGB": 350.0, "usedSpaceGB": 150.0 }, "memoryUsage": { "status": "Healthy", "totalMemoryMb": 512, "privateMemorySizeMb": 256, "workingSetMb": 384 } }
500 Internal Server Error
Error interno del servidor durante la verificación
{ "error": "An unexpected error occurred during health check", "statusCode": 500, "message": "Internal server error" }

Componentes Verificados

🗄️ Base de Datos

Verificación de conexión y estado de SQL Server
  • Conexión: Verifica la conectividad a SQL Server
  • Versión: Obtiene la versión del servidor
  • Edición: Identifica la edición de SQL Server
  • Características: Verifica características especiales
  • Estado: Healthy si la conexión es exitosa

💾 Espacio en Disco

Verificación del espacio disponible en disco
  • Espacio Total: Capacidad total del disco en GB
  • Espacio Libre: Espacio disponible en GB
  • Espacio Usado: Espacio ocupado en GB
  • Umbral: Mínimo 1 GB libre requerido
  • Estado: Healthy si hay suficiente espacio libre

🧠 Uso de Memoria

Verificación del uso de memoria del proceso
  • Memoria Total: Memoria total asignada en MB
  • Memoria Privada: Memoria privada del proceso en MB
  • Working Set: Memoria física en uso en MB
  • Umbral: Máximo 1 GB de memoria total
  • Estado: Healthy si el uso está bajo el umbral

Lógica de Evaluación

🎯 Cálculo del Estado General

El estado general del sistema se determina mediante la siguiente lógica:

  • Healthy: Todos los componentes (Database, DiskSpace, MemoryUsage) están en estado "Healthy"
  • Unhealthy: Al menos uno de los componentes está en estado "Unhealthy"
  • Mensaje: Se actualiza automáticamente según el estado general

📊 Umbrales de Evaluación

  • Base de Datos: Conexión exitosa y consulta ejecutada correctamente
  • Espacio en Disco: Mínimo 1 GB de espacio libre disponible
  • Memoria: Máximo 1 GB (1024 MB) de memoria total utilizada

⚠️ Manejo de Errores

  • SQLException: Errores específicos de base de datos se capturan y registran
  • Exception General: Errores inesperados se manejan de forma segura
  • Logging: Todos los errores se registran para auditoría
  • Estado de Error: Los componentes con error se marcan como "Unhealthy"

Modelos de Respuesta

HealthCheckResponse - Respuesta Principal:
  • Status (string): Estado general del sistema ("Healthy" o "Unhealthy")
  • Message (string): Mensaje descriptivo del estado general
  • DatabaseConnection (DatabaseConnectionDetails): Detalles de la conexión a BD
  • DiskSpace (DiskSpaceDetails): Información del espacio en disco
  • MemoryUsage (MemoryUsageDetails): Información del uso de memoria
DatabaseConnectionDetails - Detalles de Base de Datos:
  • Status (string): Estado de la conexión ("Healthy" o "Unhealthy")
  • Version (string): Versión de SQL Server o mensaje de error
  • Level (string): Nivel de producto de SQL Server
  • Edition (string): Edición de SQL Server
  • EngineEdition (string): Edición del motor de base de datos
  • IsClustered (bool): Si el servidor está en cluster
  • IsFullTextInstalled (bool): Si tiene Full-Text Search instalado
  • IsIntegratedSecurityOnly (bool): Si solo usa autenticación integrada
  • IsXtpSupported (bool): Si soporta In-Memory OLTP (XTP)
DiskSpaceDetails - Detalles de Espacio en Disco:
  • Status (string): Estado del espacio en disco ("Healthy" o "Unhealthy")
  • TotalSpaceGB (double): Espacio total del disco en GB
  • FreeSpaceGB (double): Espacio libre disponible en GB
  • UsedSpaceGB (double): Espacio usado en GB
MemoryUsageDetails - Detalles de Uso de Memoria:
  • Status (string): Estado del uso de memoria ("Healthy" o "Unhealthy")
  • TotalMemoryMb (long): Memoria total asignada en MB
  • PrivateMemorySizeMb (long): Memoria privada del proceso en MB
  • WorkingSetMb (long): Memoria física en uso (working set) en MB

Casos de Uso

🎯 Escenarios de Monitoreo

  • Monitoreo Proactivo: Verificación regular del estado del sistema
  • Alertas de Sistema: Detección temprana de problemas críticos
  • Diagnóstico de Problemas: Identificación específica de componentes fallidos
  • Capacidad de Planificación: Monitoreo de recursos del sistema
  • Auditoría de Salud: Registro histórico del estado del sistema
  • Integración con Herramientas: Compatible con sistemas de monitoreo externos

🔍 Ejemplos de Uso

  • Monitoreo Continuo: Verificación cada 5 minutos para detectar problemas
  • Alertas de Disco: Detección cuando el espacio libre es menor a 1 GB
  • Alertas de Memoria: Detección cuando el uso de memoria excede 1 GB
  • Alertas de Base de Datos: Detección de problemas de conectividad
  • Dashboard de Salud: Visualización del estado en tiempo real
  • Reportes de Capacidad: Análisis de tendencias de uso de recursos

Configuración y Dependencias

Configuración Requerida en appsettings.json:
{ "ConnectionStrings": { "PerseforeConnection": "Server=localhost;Database=master;User Id=sa;Password=password;TrustServerCertificate=true;" }, "Access": { "UserID": "sa", "Password": "password" } }
Dependencias del Sistema:
  • SQL Server: Servidor de base de datos accesible
  • System.Diagnostics: Para información del proceso actual
  • Microsoft.Data.SqlClient: Cliente SQL Server
  • IOptions<AppSettings>: Configuración de la aplicación
  • ILogger: Para logging de errores y eventos