← Volver a Back.Domain

HealthCheckResponse

Respuesta de verificación de salud del sistema

📊 Descripción General

La clase HealthCheckResponse representa la respuesta completa de un health check del sistema RestMaster. Esta clase proporciona información detallada sobre el estado de salud de diferentes componentes del sistema, incluyendo la base de datos, espacio en disco y uso de memoria.

🎯 Propósito de la Clase

  • Monitoreo del Sistema: Estado general de salud
  • Diagnóstico de Problemas: Identificación de fallos
  • Métricas de Rendimiento: Uso de recursos
  • Alertas Proactivas: Detección temprana de problemas
  • APIs de Health: Endpoints de monitoreo

📋 Propiedades de HealthCheckResponse

Status

string
Estado general del sistema (Healthy, Unhealthy, Degraded)

Message

string
Mensaje descriptivo del estado del sistema

DatabaseConnection

DatabaseConnectionDetails
Detalles de la conexión a la base de datos

DiskSpace

DiskSpaceDetails
Información sobre el espacio en disco

MemoryUsage

MemoryUsageDetails
Información sobre el uso de memoria

📋 Clases Relacionadas

🗄️ DatabaseConnectionDetails

Proporciona información detallada sobre el estado de la conexión a la base de datos.

Status

string
Estado de la conexión a la BD

Version

string
Versión de SQL Server

Level

string
Nivel de compatibilidad

Edition

string
Edición de SQL Server

EngineEdition

string
Edición del motor de BD

IsClustered

bool
Indica si está en cluster

IsFullTextInstalled

bool
Indica si Full-Text Search está instalado

IsIntegratedSecurityOnly

bool
Indica si solo usa autenticación integrada

IsXtpSupported

bool
Indica si soporta In-Memory OLTP

💾 DiskSpaceDetails

Proporciona información sobre el uso del espacio en disco del sistema.

Status

string
Estado del espacio en disco

TotalSpaceGB

double
Espacio total en GB

FreeSpaceGB

double
Espacio libre en GB

UsedSpaceGB

double
Espacio usado en GB

🧠 MemoryUsageDetails

Proporciona información sobre el uso de memoria del proceso.

Status

string
Estado del uso de memoria

TotalMemoryMb

long
Memoria total disponible en MB

PrivateMemorySizeMb

long
Memoria privada del proceso en MB

WorkingSetMb

long
Working set del proceso en MB

💡 Ejemplo de Uso

// Crear respuesta de health check var healthResponse = new HealthCheckResponse { Status = "Healthy", Message = "Sistema funcionando correctamente", DatabaseConnection = new DatabaseConnectionDetails { Status = "Connected", Version = "15.0.2000.5", Level = "150", Edition = "Standard Edition (64-bit)", EngineEdition = "3", IsClustered = false, IsFullTextInstalled = true, IsIntegratedSecurityOnly = false, IsXtpSupported = true }, DiskSpace = new DiskSpaceDetails { Status = "Healthy", TotalSpaceGB = 500.0, FreeSpaceGB = 350.0, UsedSpaceGB = 150.0 }, MemoryUsage = new MemoryUsageDetails { Status = "Healthy", TotalMemoryMb = 16384, PrivateMemorySizeMb = 512, WorkingSetMb = 1024 } }; // Verificar estado general if (healthResponse.Status == "Healthy") { Console.WriteLine("✅ Sistema saludable"); } else if (healthResponse.Status == "Degraded") { Console.WriteLine("⚠️ Sistema degradado"); } else { Console.WriteLine("❌ Sistema no saludable"); } // Verificar espacio en disco var diskUsagePercentage = (healthResponse.DiskSpace.UsedSpaceGB / healthResponse.DiskSpace.TotalSpaceGB) * 100; if (diskUsagePercentage > 90) { Console.WriteLine($"⚠️ Espacio en disco crítico: {diskUsagePercentage:F1}% usado"); } // Verificar uso de memoria var memoryUsagePercentage = (double)healthResponse.MemoryUsage.PrivateMemorySizeMb / healthResponse.MemoryUsage.TotalMemoryMb * 100; if (memoryUsagePercentage > 80) { Console.WriteLine($"⚠️ Uso de memoria alto: {memoryUsagePercentage:F1}%"); } // Verificar conexión a BD if (healthResponse.DatabaseConnection.Status != "Connected") { Console.WriteLine("❌ Problema con la conexión a la base de datos"); } // Serializar a JSON var jsonResponse = JsonSerializer.Serialize(healthResponse, new JsonSerializerOptions { WriteIndented = true }); // Enviar respuesta HTTP return Ok(healthResponse); // Ejemplo de health check degradado var degradedResponse = new HealthCheckResponse { Status = "Degraded", Message = "Algunos componentes tienen problemas", DatabaseConnection = new DatabaseConnectionDetails { Status = "Connected", Version = "15.0.2000.5", Level = "150", Edition = "Standard Edition (64-bit)", EngineEdition = "3", IsClustered = false, IsFullTextInstalled = true, IsIntegratedSecurityOnly = false, IsXtpSupported = true }, DiskSpace = new DiskSpaceDetails { Status = "Warning", TotalSpaceGB = 500.0, FreeSpaceGB = 25.0, // Solo 5% libre UsedSpaceGB = 475.0 }, MemoryUsage = new MemoryUsageDetails { Status = "Healthy", TotalMemoryMb = 16384, PrivateMemorySizeMb = 512, WorkingSetMb = 1024 } };

🔗 Integración con Otros Componentes

📚 Componentes Relacionados

  • HealthController: Endpoint que devuelve este DTO
  • HealthService: Servicio que genera el health check
  • Middleware: Middleware de health checks
  • Monitoring: Sistemas de monitoreo externos

🎯 Casos de Uso

  • Monitoreo en Tiempo Real: Estado actual del sistema
  • Alertas Automáticas: Notificaciones de problemas
  • Dashboards: Paneles de control
  • Load Balancers: Balanceo de carga
  • DevOps: Automatización de despliegues
  • Troubleshooting: Diagnóstico de problemas

🔧 Consideraciones Técnicas

⚙️ Estados del Sistema

  • Healthy: Sistema funcionando correctamente
  • Degraded: Sistema funcionando con limitaciones
  • Unhealthy: Sistema con problemas críticos

🔒 Seguridad

  • Información Sensible: No exponer datos confidenciales
  • Autenticación: Proteger endpoints de health
  • Rate Limiting: Limitar frecuencia de consultas
  • Logging: Registrar health checks