Alerts
UID:
alertsVersión: 1.3.3 Paneles: ~10
Propósito
Este dashboard centraliza las alertas críticas del sistema de monitorización Coyote, proporcionando:
- Monitorización de uptime del sistema
- Estado del espacio en disco
- Conexiones de usuario
- Tamaño de logs de transacción
- Estado de servicios SQL
- Indicadores de bloqueos
Alertas Configuradas
System Up Time
System Up Time timeseries
El uptime del sistema ha caído por debajo de 24 horas.
Condición de alerta: El sistema puede haber experimentado un reinicio, mantenimiento programado o una interrupción inesperada.
Importancia: Un reinicio inesperado puede indicar problemas de hardware, actualizaciones automáticas no controladas, errores críticos del sistema operativo o fallos de energía. Si no se investiga, pueden ocurrir reinicios recurrentes que afecten la disponibilidad del servicio, pérdida de transacciones en vuelo y corrupción de datos si el apagado no fue limpio.
Runbook de Respuesta
Diagnóstico:
- Revisar el Event Viewer de Windows en System > buscar eventos con ID 1074 (apagado planificado) o 6008 (apagado inesperado)
- Verificar logs de SQL Server para errores previos al reinicio
- Comprobar si hubo Windows Update pendiente
- Revisar hardware: temperatura, voltaje, discos (SMART status)
Remediación:
- Si fue mantenimiento planificado: documentar y cerrar alerta
- Si fue inesperado: revisar dumps de memoria en C:\Windows\Minidump
- Verificar integridad de bases de datos con DBCC CHECKDB
- Comprobar que todos los servicios SQL están ejecutándose
- Validar que los jobs de SQL Agent se reanudaron correctamente
Escalamiento:
- No escalar: Si fue mantenimiento planificado documentado
- Escalar a Nivel 2: Si el reinicio fue inesperado y no hay causa clara en logs
- Escalar a Nivel 3/Infraestructura: Si hay indicios de fallo de hardware o reinicios recurrentes (más de 2 en una semana)
Acciones recomendadas:
- Verificar la causa del reinicio
- Revisar logs de eventos de Windows
- Comprobar que todos los servicios estén funcionando
Disk Free Space
Disk Free Space bargauge
El espacio libre en disco ha caído por debajo del 20%.
Condición de alerta: El espacio disponible puede indicar crecimiento acelerado, uso ineficiente o acumulación inesperada de datos.
Importancia: El espacio en disco insuficiente es una de las causas más comunes de interrupciones no planificadas en SQL Server. Sin espacio disponible, las bases de datos no pueden crecer, los logs de transacción se llenan causando que las transacciones fallen, y los backups no pueden completarse. En casos extremos, SQL Server puede detenerse completamente, causando pérdida de servicio para todas las aplicaciones dependientes.
Umbrales:
| Espacio Libre | Color | Estado |
|---|---|---|
| < 10% | Rojo | Crítico |
| 10% - 20% | Naranja | Advertencia |
| > 20% | Verde | Normal |
Runbook de Respuesta
Diagnóstico:
- Identificar qué disco está afectado usando la vista
[Maintenance].[vwDisksFreeSpace] - Analizar qué está consumiendo espacio: datos, logs, backups, tempdb
- Revisar tendencia de crecimiento de los últimos 30 días
- Verificar si hay archivos de backup antiguos sin purgar
Remediación inmediata (< 10%):
- Liberar espacio eliminando backups antiguos (mantener retención mínima requerida)
- Truncar logs de transacción si hay backups de log recientes
- Vaciar carpetas temporales del sistema
- Mover archivos de backup a almacenamiento secundario
Remediación planificada (10-20%):
- Implementar políticas de retención de backups
- Configurar shrink automático de logs (con precaución)
- Evaluar extensión de capacidad de almacenamiento
- Revisar índices duplicados o no utilizados que consumen espacio
Escalamiento:
- No escalar: Si espacio > 15% y hay plan de limpieza en curso
- Escalar a Nivel 2: Si espacio < 15% y la limpieza no libera suficiente espacio
- Escalar a Infraestructura/Storage: Si espacio < 10% y se requiere extensión de almacenamiento urgente
- Escalar a Gestión: Si el crecimiento indica necesidad de inversión en infraestructura
Acciones recomendadas:
- Revisar uso de disco
- Limpiar archivos innecesarios
- Extender capacidad si es necesario
- Verificar crecimiento de logs
User Connections
User Connections timeseries
Las conexiones activas han superado las 25,000.
Condición de alerta: El exceso de conexiones puede indicar:
- Actividad de aplicación inusualmente alta
- Problemas de connection pooling
- Proceso desbocado
Importancia: SQL Server tiene un límite máximo de 32,767 conexiones. Alcanzar este límite impide que nuevos usuarios o aplicaciones se conecten, causando errores inmediatos en las aplicaciones. Además, un número excesivo de conexiones consume memoria del servidor (cada conexión usa aproximadamente 1-2 MB), puede degradar el rendimiento general y dificulta la gestión de recursos del sistema.
Umbrales:
| Conexiones | Estado |
|---|---|
| < 25,000 | Normal |
| >= 25,000 | Crítico (límite SQL: 32,767) |
Runbook de Respuesta
Diagnóstico:
- Identificar las aplicaciones con más conexiones usando
sys.dm_exec_sessionsagrupado porprogram_nameyhost_name - Revisar si hay conexiones huérfanas o en estado sleeping prolongado
- Verificar configuración de connection pooling en aplicaciones .NET (Min/Max Pool Size)
- Analizar si hay procesos batch ejecutándose que abren múltiples conexiones
Remediación:
- Contactar a los equipos de desarrollo de las aplicaciones con más conexiones
- Cerrar conexiones inactivas con más de X minutos usando
KILL(con precaución) - Revisar y ajustar configuración de connection pooling:
- Reducir
Max Pool Sizeen connection strings - Habilitar
Connection Lifetimepara reciclar conexiones
- Reducir
- Implementar retry logic con exponential backoff en aplicaciones
- Considerar Resource Governor para limitar conexiones por grupo de carga
Escalamiento:
- No escalar: Si las conexiones están entre 20,000-25,000 y estables
- Escalar a Desarrollo: Si se identifica una aplicación específica causando el problema
- Escalar a Nivel 2: Si las conexiones superan 28,000 y siguen creciendo
- Escalar a Gestión: Si se requiere intervención de terceros (vendors) para ajustar aplicaciones
Acciones recomendadas:
- Revisar patrones de carga de trabajo
- Verificar connection pooling
- Identificar aplicaciones con muchas conexiones
Used Log Size
Used Log Size timeseries
El tamaño del log de transacciones ha superado los 80 GB.
Condición de alerta: Puede ocurrir debido a:
- Transacciones de larga duración
- Backups de log insuficientes
- Operaciones con alto logging
Importancia: Un log de transacciones excesivamente grande puede llenar el disco, causando que la base de datos deje de aceptar transacciones (error 9002). Esto detiene completamente las operaciones de escritura en la base de datos. Además, los backups de log tardarán más tiempo, los restore serán más lentos, y si el log sigue creciendo sin control, puede indicar un problema más grave como una transacción huérfana o replicación rota.
Umbral:
| Tamaño Log | Color | Estado |
|---|---|---|
| < 80 GB | Verde | Normal |
| >= 80 GB | Rojo | Crítico |
Runbook de Respuesta
Diagnóstico:
- Identificar qué base de datos tiene el log grande usando
sys.master_files - Verificar el modelo de recuperación (FULL requiere backups de log frecuentes)
- Buscar transacciones activas de larga duración con
DBCC OPENTRAN - Revisar si hay replicación, mirroring o AlwaysOn con retrasos
- Comprobar el estado de
log_reuse_wait_descensys.databases
Remediación:
- Si
log_reuse_wait_desc= 'LOG_BACKUP': ejecutar backup de log inmediatamente - Si
log_reuse_wait_desc= 'ACTIVE_TRANSACTION': identificar y resolver la transacción bloqueante - Si
log_reuse_wait_desc= 'REPLICATION': verificar estado del Log Reader Agent - Después de liberar espacio, considerar shrink del log (solo si es necesario)
- Ajustar frecuencia de backups de log (cada 15-30 minutos para bases activas)
Escalamiento:
- No escalar: Si el backup de log resuelve el problema y el log se reduce
- Escalar a Nivel 2: Si el log sigue creciendo después del backup o hay transacción bloqueante que no se puede resolver
- Escalar a DBA Senior: Si está relacionado con replicación o AlwaysOn
- Escalar a Infraestructura: Si el disco está en riesgo de llenarse antes de poder resolver
Acciones recomendadas:
- Validar jobs de backup de logs
- Monitorizar transacciones activas
- Asegurar mantenimiento apropiado de logs
SQL Alerts Global
SQL Alerts Global table
Tabla resumen del estado de alertas SQL.
Indicadores:
| Indicador | OK | KO |
|---|---|---|
| Blocked | 0 | >= 1 |
| Long_Blocked | 0 | >= 1 |
| SQL Agent Status | 0 | >= 1 |
| SQL Mail Status | 0 | >= 1 |
Blocked / Long_Blocked
Importancia: Los bloqueos en SQL Server pueden causar timeouts en aplicaciones, degradación del rendimiento y en casos severos, deadlocks que abortan transacciones. Los bloqueos prolongados (Long_Blocked) son especialmente críticos porque afectan a múltiples usuarios y pueden indicar problemas de diseño de aplicación o índices faltantes.
Runbook de Respuesta - Bloqueos
Diagnóstico:
- Identificar la cadena de bloqueo usando
sys.dm_exec_requestsysys.dm_os_waiting_tasks - Obtener el query del proceso bloqueante con
sys.dm_exec_sql_text - Revisar si el bloqueo es por lock escalation o página/fila específica
Remediación:
- Si es una transacción olvidada: contactar al usuario/aplicación para commit o rollback
- Si es un proceso batch: considerar ejecutarlo en horario de bajo uso
- Implementar
READ_COMMITTED_SNAPSHOTpara reducir bloqueos de lectura - Revisar índices para reducir lock escalation
- Como último recurso:
KILLdel proceso bloqueante (coordinando con el negocio)
Escalamiento para Bloqueos:
- No escalar: Bloqueos menores de 30 segundos que se resuelven solos
- Escalar a Nivel 2: Bloqueos mayores de 5 minutos o que afectan múltiples usuarios
- Escalar a Desarrollo: Si el bloqueo es causado por código de aplicación deficiente
- Escalar a Gestión: Si se requiere matar un proceso de negocio crítico
SQL Agent Status
Importancia: SQL Server Agent es responsable de ejecutar jobs programados incluyendo backups, mantenimiento de índices, y procesos ETL. Si el servicio está detenido, ningún job se ejecutará, lo que puede resultar en backups faltantes (incumplimiento de RPO), datos desactualizados en reportes, y acumulación de tareas de mantenimiento.
Runbook de Respuesta - SQL Agent
Diagnóstico:
- Verificar el estado del servicio en Windows Services
- Revisar el Event Log de Windows para errores del servicio
- Comprobar el SQL Server Agent Error Log
- Verificar que la cuenta de servicio tenga permisos válidos
Remediación:
- Intentar reiniciar el servicio SQL Server Agent
- Si falla el inicio, revisar los logs para identificar la causa
- Verificar que la cuenta de servicio no esté bloqueada o con contraseña expirada
- Comprobar conectividad a la base de datos msdb
- Si persiste, reiniciar SQL Server como último recurso (coordinando el impacto)
Escalamiento para SQL Agent:
- No escalar: Si el reinicio del servicio resuelve el problema
- Escalar a Nivel 2: Si el servicio no inicia después del reinicio
- Escalar a Infraestructura: Si hay problemas con la cuenta de servicio o permisos
- Escalar a Gestión: Si se requiere reinicio de SQL Server en horario de producción
SQL Mail Status
Importancia: Database Mail es el mecanismo para enviar notificaciones de alertas, reportes programados y confirmaciones de jobs. Si está fallando, el equipo de operaciones no recibirá alertas críticas, lo que puede resultar en problemas no detectados a tiempo y violación de SLAs.
Runbook de Respuesta - SQL Mail
Diagnóstico:
- Verificar el estado de Database Mail con
sysmail_help_status_sp - Revisar la cola de correos fallidos en
sysmail_faileditems - Comprobar la configuración SMTP en
sysmail_help_account_sp - Verificar conectividad de red al servidor SMTP
Remediación:
- Reiniciar Database Mail:
EXEC msdb.dbo.sysmail_stop_sp; EXEC msdb.dbo.sysmail_start_sp; - Verificar que el servidor SMTP acepta conexiones desde SQL Server
- Comprobar que no hay cambios en credenciales SMTP
- Revisar límites de envío (algunos SMTP tienen rate limiting)
- Reenviar correos fallidos desde la cola si es necesario
Escalamiento para SQL Mail:
- No escalar: Si el reinicio de Database Mail resuelve el problema
- Escalar a Infraestructura/Redes: Si hay problemas de conectividad al SMTP
- Escalar a Nivel 2: Si hay problemas de configuración o credenciales
Código de Colores de Alertas
| Color | Código | Significado |
|---|---|---|
| Verde | #00db88 / #6be38d | OK - Estado normal |
| Naranja | #ff780a | Warning - Advertencia |
| Magenta | #ad21d8e8 | KO - Requiere atención |
| Rojo | #E02F44 | Critical - Acción inmediata |
Guía de Respuesta a Alertas
Prioridad Alta
| Alerta | Acción Inmediata |
|---|---|
| Disk < 10% | Liberar espacio urgentemente |
| Log > 80 GB | Ejecutar backup de log |
| User Connections > 25000 | Investigar aplicaciones |
Prioridad Media
| Alerta | Acción Planificada |
|---|---|
| Disk 10-20% | Planificar limpieza |
| Uptime < 24h | Investigar causa de reinicio |
| SQL Agent KO | Reiniciar servicio |
Mejores Prácticas de Configuración de Alertas
Evitar Alert Fatigue
La "fatiga de alertas" ocurre cuando el equipo recibe tantas notificaciones que comienza a ignorarlas, incluyendo las críticas. Para evitarlo:
Clasificar alertas por severidad: No todas las alertas deben notificar igual
- Críticas: Notificación inmediata (SMS, llamada, Teams)
- Advertencia: Email con revisión en 4 horas
- Informativas: Dashboard solo, sin notificación activa
Configurar umbrales progresivos: Escalar la urgencia según la gravedad
- Disco 20%: Advertencia en dashboard
- Disco 15%: Email al equipo
- Disco 10%: Notificación Teams + ticket automático
- Disco 5%: Llamada al on-call
Agrupar alertas relacionadas: Una falla de disco puede generar múltiples alertas (disco, log, backup). Configurar supresión de alertas secundarias.
Revisar y ajustar umbrales regularmente: Lo que era crítico para un servidor pequeño puede ser normal para uno más grande.
Umbrales Recomendados
| Métrica | Advertencia | Crítico | Notas |
|---|---|---|---|
| Disco libre | < 20% | < 10% | Ajustar según tamaño total |
| Log de transacciones | > 50 GB | > 80 GB | Depende del volumen transaccional |
| Conexiones | > 20,000 | > 25,000 | Considerar el baseline normal |
| Bloqueos | > 30 seg | > 5 min | Long_Blocked es siempre crítico |
| CPU SQL | > 80% (5 min) | > 95% (5 min) | Sostenido, no picos |
| PLE | < 300 seg | < 100 seg | Depende de la memoria total |
Documentación y Runbooks
- Mantener runbooks actualizados: Cada alerta debe tener pasos claros de diagnóstico y remediación
- Registrar acciones tomadas: Documentar qué se hizo para resolver cada alerta
- Post-mortem de incidentes: Después de incidentes mayores, revisar si las alertas fueron efectivas
- Entrenar al equipo: Asegurar que todos conozcan los runbooks y sepan cuándo escalar
Horarios y Guardias
- Definir horarios de notificación: Algunas alertas de advertencia pueden esperar hasta horario laboral
- Rotación de on-call: Distribuir la carga para evitar burnout
- Escalamiento automático: Si una alerta crítica no se reconoce en X minutos, escalar automáticamente
Vistas Utilizadas
| Vista | Descripción |
|---|---|
[Maintenance].[vwDisksFreeSpace] | Espacio libre en discos |
[Alert].[vwSQLAlertsGlobal] | Estado global de alertas SQL |
Tablas de Performance Counters
| Contador | Descripción |
|---|---|
Seconds Since Start | Tiempo desde inicio del sistema |
User Connections | Conexiones activas |
Log File(s) Used Size (KB) | Tamaño utilizado de logs |
Configuración de Notificaciones
Las alertas de Grafana pueden configurarse para enviar notificaciones a través de:
- Email: Envío directo a administradores
- Teams/Slack: Canales de notificación
- Webhook: Integración con sistemas externos
Referencias de Microsoft
Documentación Oficial de Monitorización
- Monitor and Tune for Performance (SQL Server) - Guía completa de monitorización de rendimiento
- SQL Server Performance Counters - Referencia de contadores de rendimiento
- Dynamic Management Views (DMVs) - Vistas de gestión dinámica para diagnóstico
Gestión de Espacio y Logs
- Manage the Size of the Transaction Log File - Gestión del log de transacciones
- Troubleshoot a Full Transaction Log (Error 9002) - Solución de problemas de log lleno
- Database File Initialization - Inicialización de archivos de base de datos
Bloqueos y Rendimiento
- Understand and Resolve SQL Server Blocking Problems - Resolución de bloqueos
- Monitoring Resource Usage (System Monitor) - Monitorización de recursos
- Lock Modes - Guía de bloqueos y versionado de filas
SQL Server Agent
- SQL Server Agent - Documentación de SQL Server Agent
- Automate Administration Tasks (SQL Server Agent) - Automatización de tareas administrativas
- SQL Server Agent Error Log - Registro de errores del Agent
Database Mail
- Database Mail - Documentación de Database Mail
- Configure Database Mail - Configuración de Database Mail
- Check the Status of E-Mail Messages Sent With Database Mail - Verificar estado de correos
Mejores Prácticas
- SQL Server Best Practices - Mejores prácticas de rendimiento
- Backup and Restore Strategy - Estrategia de backup y restore
