¡Hola, chicos!
En este post comentaré un sistema de alertas y monitoreo para SQL Server y Azure Managed Instance, desarrollado por la empresa Ajuste de potencia, cuyo objetivo es proporcionar diversas métricas, análisis e información para identificar rápidamente el estado actual de la base de datos (Health Check), enviar alertas por correo electrónico (incluidos gráficos) cuando ocurre un evento en la base de datos y monitorear cambios en el comportamiento de la base de datos, crecimiento de tablas, archivos de datos y mucho más.

Ya he utilizado otros sistemas de monitoreo y alertas como Redgate SQL Monitor y SolarWinds SQL Database Monitoring, pero PowerAlerts me sorprendió con la cantidad de alertas disponibles, el nivel de detalle y el soporte diferenciado que brinda PowerTuning.

El CEO de PowerTuning y uno de los creadores de PowerAlerts, Fabricio Lima, dijo que “Cualquiera que tenga SQL Server y no use PowerAlerts está loco”. Después de probar mucho el producto, estoy de acuerdo con él jajaja.

Si estás interesado en Power Alerts, contacta con el equipo comercial de Power Tuning: [correo electrónico protegido]

1) ¿Qué son las alertas de energía?

Es una herramienta con 62 mil líneas de código en T-SQL (y creciendo) creada desde DBA SQL Server a DBA SQL Server con decenas de Alertas para monitorear tu base de datos y, ahora, con la función de gráficos para facilitar tu visualización y comprensión del entorno.

Power Alerts es un complemento a cualquier herramienta de seguimiento porque ya devuelve información detallada con gráficos en el propio correo electrónico (sin que tengas que mirar una pantalla de seguimiento o iniciar sesión en el entorno). Cualquiera que tenga un servidor SQL estará feliz de tener estas alertas y registros generados para el DBA.

En este directo podrás ver más detalles sobre las Alertas de Energía:

No hay nada parecido hoy aquí en Brasil (o en el extranjero, que yo sepa).

Dash con clientes que ya recibieron Power Alerts:

 

2) Alertas creadas

Estas son las Alertas que se crean en la Implementación de Power Alerts:

 

Más 1: También se crea un correo electrónico mensual con información de la instancia para ser utilizada en caso de desastre como documentación para saber cómo estaba la instancia ante el entorno.

Esto ayuda a reinstalar el entorno sin el impacto de los cambios (de gran ayuda en casos de desastre).

Plus 2: Creación de un Checklist ambiental diario con gráficos para enviar información de instancia diariamente y ayudar a analizar y comparar información en diferentes períodos.

Esto se puede utilizar para tener un análisis rápido del entorno o para comparar los valores entre dos fechas diferentes.

3) Ejemplo de alerta de registro COMPLETO

Este es el encabezado de alerta que tiene mucha información útil:



Como podemos ver a continuación, el correo electrónico en sí ya muestra el motivo por el que el registro se bloqueó (en este caso, es una falta de copia de seguridad del registro: columna "Espera de reutilización del registro" con el valor "LOG_BACKUP").

También muestra el disco en el que se encuentra este registro y su espacio libre para que te sientas más tranquilo o preocupado cuando llegue esta alerta.

Todavía tenemos cuánto crecerá este tronco y si es limitado (ver si crece mucho o poco ayuda mucho).

La primera información que el DBA tendría que iniciar sesión y descubrir en una alerta como esta ya está contenida en la alerta. Productividad y ahorro de horas DBA ($).

A continuación del correo electrónico, tenemos un gráfico para que le resulte más fácil ver cuándo el tronco empezó a crecer y el tiempo que tardó en explotar.

Últimos 60 minutos para ver el comportamiento de registro reciente:

 

Últimas 48 horas para obtener una vista más amplia del comportamiento del registro:

 

Aún en el correo electrónico, tenemos un gráfico para que sea más fácil ver cómo se está consumiendo el disco donde se encuentra este archivo de registro. Ya sea que termine rápido o lentamente. Ninguna alerta de registro en Internet proporciona esta información.

 

Como uno de los problemas comunes puede ser la falta de copia de seguridad, la alerta también muestra cuándo se realizó la última copia de seguridad del registro base con Registro COMPLETO:

Un dato menos que el DBA tendría que comprobar (más productividad).

Además, se muestran las consultas que tienen una transacción abierta y están consumiendo el log para que el DBA pueda analizar e ir tras el responsable para saber si se puede matar o no:

El DBA tendría que encontrar en sus scripts qué consulta muestra quién está consumiendo la mayor cantidad de registros y luego ejecutarla y averiguarlo. En Power Alerts ya apareció el inserto que coloqué para llenar el Log usando 3.8 GB de log.



Lo que se está ejecutando en ese momento todavía se muestra con una foto del whoisactive:



Podemos ver el inserto llenando el registro nuevamente.

Por último, también podemos ver la gráfica de alertas por día y por hora, ayudándonos a identificar el historial de esta alerta.

Si recibo muchas alertas por día, tenemos que intentar hacer algo para reducirlas:

También podemos identificar si hay un momento del día que genera más alertas para ayudar a encontrar la rutina culpable:

Al final del correo electrónico está el logo y nuestra información de registro de alerta:

Este es un producto licenciado por Power Tuning en el INPI (Instituto Nacional de la Propiedad Industrial), bajo el número 512022002100-5, y no puede ser compartido ni utilizado sin contrato de compra o autorización previa.

4) Rutinas DBA creadas

Mucho más allá de los bonitos gráficos, nuestro sistema de alerta también crea más de 25 rutinas que almacenan datos en tablas y ayudan al DBA a monitorear y actuar de manera más eficiente en el entorno. Power Alerts utiliza estas rutinas para enviar correos electrónicos y gráficos.

Rutinas DBA que se crean en el entorno (+25 rutinas):

  • Rutina para monitorear Deadlocks.
  • Rutina para monitorear errores de Script que ocurren en bases de datos.
  • Rutina para monitorear las mayores esperas del ambiente en un intervalo de tiempo determinado.
  • Rutina para monitorear si las estadísticas están actualizadas.
  • Rutina para monitorear consultas que utilizan tempdb.
  • Rutina para monitorear el crecimiento del archivo de datos tempdb.
  • Rutina para monitorear el crecimiento de tablas y bases de datos. Con esto, podemos predecir el crecimiento del medio ambiente y realizar nuevas inversiones sólo cuando sea necesario.
  • Rutina de monitoreo de contadores de SQL Server.
  • Rutina para monitorear las consultas que consumen más tiempo en el entorno.
  • Rutina para monitorear el uso de memoria del entorno.
  • Rutina para monitorear fallas de inicio de sesión.
  • Rutina para monitorear lo que se ejecuta en el entorno cada minuto (whoisactive).
  • Rutina para monitorear el crecimiento del Log de Bases de Datos.
  • Rutina de seguimiento del historial laboral.
  • Rutina para monitorear el uso de índices ambientales.
  • Rutina para monitorear la fragmentación del índice.
  • Rutina para monitorear si las columnas de identidad se desbordan.
  • Rutina para monitorear la cola de E/S pendientes en SQL Server.
  • Rutina para monitorear el tiempo de respuesta y el uso de registros y archivos de datos de SQL Server.
  • Rutina para monitorear el registro de errores de SQL Server.
  • Rutina para monitorear el espacio en disco.
  • Rutina para monitorear el uso de la CPU.
  • Rutina para monitorear las consultas que utilizan más CPU.
  • Rutina para monitorear la ejecución de CheckDB en las bases.
  • Rutina para monitorear el historial de respaldo.
  • Si tiene un clúster, realice una rutina para monitorear el estado de los nodos del clúster.
  • Si tienes Mirror, rutina para monitorear el estado y rendimiento del mirror.
  • Si tiene AlwaysOn AG, rutina para monitorear el estado y desempeño del AG.
  • Rutina para eliminar datos antiguos de todos los registros creados.

5) Monitor de energía

Con toda esta información almacenada para Power Alerts, nuestro equipo de BI creó un Dash en Power BI para ayudar a monitorear los bancos de nuestros clientes:

El cliente debe cumplir algunos requisitos previos para utilizar Power monitor, como por ejemplo:

    •   Cuenta de Power BI
    •   Puerta de enlace de datos que tiene acceso a la base de seguimiento.
    •   Se debe habilitar la instalación de aplicaciones que no figuran en appsource

6) Informes de energía

Además de mejorar mucho el núcleo de alertas e incluir gráficos sensacionales, también se crearon unos procedimientos de informes (Power Report) para ayudar a analizar el entorno en el día a día.

Simplemente ingrese su correo electrónico y los parámetros de fecha de inicio y finalización para obtener la información deseada (cuando corresponda).

Ejemplo real de uso de Power Reports:

Queremos ver cómo se desempeñó el entorno entre las 6 p. m. del 27/11 y las 6 p. m. del 28/11.

En lugar de que el DBA ingrese al entorno, busque varias consultas y valide manualmente la información sobre lo sucedido durante ese período, hay un procedimiento en el que le pasa el correo electrónico, la fecha de inicio y la fecha de finalización y se le enviarán a su correo electrónico varios gráficos como los siguientes.

En menos de 5 minutos ya tiene mucha información disponible para su análisis y de forma visual.

EJECUTIVO stpPowerReport_SQL_Performance @Ds_Email='[correo electrónico protegido]',@Dt_Inicio='20221127 18:32',@Dt_End='20221127 18:32',@Ds_Query = NULO

El resultado de ejecutar este procedimiento genera todos los siguientes gráficos.

Gráfico con información de CPU:

Gráfico con información del contador de memoria PLE:

Gráfico con información de conexión en SQL Server:

Grafica con el número de consultas en la tabla con el Registro Whoisactive:

Gráfico con información del contador de E/S pendiente:

Gráfico con información del contador de memoria física disponible:

Gráfico con el número de consultas que tardaron más de 3 segundos (y su promedio):

Gráfico con información de crecimiento de tempdb (datos):

Gráfico con información de las consultas más largas:

*Después de este cuadro viene parte del código de consulta en el correo electrónico (Query Id). No lo mostraré aquí para ahorrar espacio.

Cuadro con información sobre los trabajos de mayor duración:

*Después de este cuadro viene el nombre de los trabajos en el correo electrónico (Id. del trabajo). No lo mostraré aquí para ahorrar espacio.

Gráfico con información de las mayores esperas de SQL Server:

Aquí terminan los gráficos que pudimos enviar con solo un F5 en el procedimiento: stpPowerReport_SQL_Performance

¿Cuánto tiempo le tomaría al DBA recopilar toda esta información?

Una vez más, Power Alerts aumenta la productividad y ahorra horas de DBA ($).

Otros Power Reports que puedes utilizar a diario:

Informe con el crecimiento de una base de datos:

EXEC [dbo].[stpPowerReport_Database_Size] @Nm_Database=@Database_Name,@Ds_Email=@correo electrónico

Informe con el crecimiento de una tabla:

EXEC [dbo].[stpPowerReport_Table_Size] @Nm_Database=DB_Name, @Nm_Table = Table_Name, @Ds_Email = Su_correo electrónico

Informe para monitorear la fragmentación de los índices actuales del banco. Las empresas de ERP piden mucho esto cuando abren por la lentitud.

EXEC [dbo].[stpPowerReport_Index_Fragmentation] @Ds_Email = Su_correo electrónico

Informe para validar cómo están las estadísticas en el entorno. En opinión de Power Tuning, las estadísticas actualizadas son mucho más importantes que los índices desfragmentados. Este trabajo tiene que ser una prioridad.

EXEC [dbo].[stpPowerReport_Update_Statistics] @Ds_Email = Su_correo electrónico

7) Comentarios de los clientes

A continuación se muestran algunas capturas de pantalla de los comentarios de los clientes que PowerTuning recopiló a lo largo de nuestras implementaciones:

8) Alertas de poder de inversión

Power Alerts tiene licencia por instancia a los precios siguientes:

  • Licencias para Instancias 1 a 4: R$ 240,00 mensuales por instancia.
  • Licencias para Instancias 5 a 9: R$ 180,00 mensuales por instancia.
  • Licencias para Instancias 10 a 19: R$ 120,00 mensuales por instancia.
  • Más de 20 instancias, negociaciones directamente por correo electrónico: [correo electrónico protegido]

Valor Mensual por 1 instancia = R$ 240,00

Descuentos:
Plan Anual con 20% de descuento

Valor del plan anual para 1 instancia = R$ 2.304,00 (R$ 192,00 por mes)

  • Plan de 3 años con 40% de descuento

Precio fijo de 3 años para 1 instancia = R$ 5.184,00 (R$ 144,00 por mes)

Clientes que cuentan con soporte mensual con Power Tuning:

  • Los clientes que tienen un contrato de monitoreo con Power Tuning no pagan nada extra al mes por Power Alerts.
  • Los clientes que tengan un contrato de guardia DBA 24×7 con Power Tuning tienen un 50% de descuento.

También hay un costo único por instancia (Valor total R$ 1.400,00) para trabajos de instalación y configuración de la realidad del entorno y seguimiento inicial. Este importe único no se descuenta ya que son horas de DBA que siempre habrá que trabajar.

Este es un producto que seguirá evolucionando con el tiempo y el cliente tendrá derecho a todas las mejoras.

Lo que no está incluido en esta propuesta:

  • Acciones de mejora técnica en el medio ambiente tras la implementación de Alertas:
    • Disco lleno
    • Registro completo
    • Base sin respaldo
    • Ambiente lento
    • Otros problemas comunes del DBA del día a día
  • Implementación de rutinas pesadas de Administración:
    • En el entorno no se implementarán mantenimiento de índices, actualización de estadísticas y rutinas CheckDB.