En esta charla estaremos demostrando Tecnicas avanzadas de Monitoreo tales como
- Analizando la actividad de SQL Server
- Utilizando Extended events para realizar monitoreo en SQL Server
- monitoreo proactivo
- Auditoria Utilizando Service Broker
2. Speaker Bio
2
Database Administrator
Desde el año 1997 – SQL 6.0 -> SQL 2016
MCP - MCTS
DBA en Mediterranean Shipping Company (MSC)
Desde el año 2006
Miembro de la comunidad PASS
Desde el año 2008
Picture Here
@javier_vill
http://sql-javier-villegas.blogspot.com.ar/
https://ar.linkedin.com/in/javiervillegas
3. Agenda
3
Analizando la actividad de SQL Server
Monitoreo Continuo con Extended Events (XEvents)
Monitoreo Proactivo (DMV / Powershell)
Auditoria utilizando Service Broker
4. Analizando la actividad de SQL Server
4
dbo.SP_DBA_CurrentlyExec
http://1drv.ms/1j9es6f
• Nos permite visualizar rápida y ágilmente toda la actividad de SQL.
• Cada fila representa una sesión activa dentro de la instancia
• Podemos ver:
• SPID, Uso total de CPU, Estado, Hora de Inicio, tiempo de ejecución, Tiempos de Lectura/Escritura, SQL
Statement, Nombre de Base de Datos y utilización del transaction log de la misma, Nombre de objeto, Tipo de
Wait Stat, Login, Host y nombre de la aplicación
• En caso de detectar bloqueos aparecerá un segundo resultset mostrando solo las sesiones
involucradas en los mismos
• Útil para detectar rápidamente problemas de performance
8. 8
sp_server_diagnostics
Captura información de diagnostico y datos sobre estado de salud del entorno
SQL Server para detectar posibles fallos en el sistema.
Es un proceso que se ejecuta constantemente y que actualiza la información
de salida periódicamente
8
9. 9
sp_server_diagnostics
Create_Time
Timestamp de creación del registro
Component_Type
Tipo de Componente
Component_Name
Informa el componente involucrado o del nombre de un Availability Group de AlwaysOn
State
Informa el estado del componente, los valores pueden ser 0, 1, 2 o 3
State_Desc
Descripción del estado de lo que ha sido informado en “State” , los valores pueden ser
“Unknown”, “Clean”, “Warning”, “Error”
Data
Registro XML con los datos recopilados del componente en cuestión
9
10. 10
sp_server_diagnostics
System
Datos de utilización de CPU, Dumps, Pages, etc.
Resource
Datos de memoria
Query_processing
Datos de procesamientos de Queries (Tasks, Wait Stats, bloques, etc.)
IO_subsystem
Datos de I/O
Events
Datos de los eventos del server
Availability Group
Datos relacionados al Availability Group en caso de que la instancia utilice AlwaysOn
10
12. 12
Analizando la actividad de SQL Server
Otras herramientas
Performance Monitor
Activity Monitor
SQL Server Performance Dashboard
https://www.microsoft.com/en-us/download/details.aspx?id=29063
SQL Profiler *
Extended Events
12
13. 13
Monitoreo Continuo utilizando Extended Events
Extended Events
Sistema de control de eventos general
Correlación de base de datos y sistema operativo
Herramienta de seguimiento (Performance Monitor / SQL Trace)
Configuración de control de eventos basado en T-SQL
Útil para realizar troubleshooting sin impactar la performance (Carga adicional mínima)
Recolectar datos desde cualquier lado
I/O
Waits
Parámetros de un Query
Plan de Ejecuciones
Lock
13
14. 14
Monitoreo Continuo utilizando Extended Events
Extended Events - Componentes
Session
Contiene la definición de lo que voy a recolectar, cuando recolectarlo y donde almacenarlo
Target (Destino)
Memoria (Ring Buffer)
A un archivo
Package (Paquete)
Contenedores Lógicos
SQLOS, SQLSERVER, SecAudit, SQLCLR, etc.
Events
Recolección de datos de la actividad de SQL Actions
14
15. 15
Monitoreo Continuo utilizando Extended Events
Extended Events
Podemos realizar los mismos tipos de capturas que con SQL Profiler
Mucho mas ágil que SQL Profiler.
Fácil de manipular.
15
16. 16
DEMO
Visualizando la actividad de SQL Server
SP_DBA_CurrentlyExec
SP_Server_Diagnostics
Extended Events
Errores de SQL
Deadlocks
Statements que se ejecutan por tiempo prolongado
16
17. 17
Monitoreo Proactivo utilizando DMV y PowerShell
Recolección continua y de información importante relacionada con los signos vitales del
entorno
Versión, Edición de SQL y Windows
MAXDOP
Cluster
Database Mirroring/AlwaysOn
Network
Transacciones Activas
Transacciones por segundo
Conexiones Numero de Requerimientos por Segundo
Contadores de Performance Monitor relacionados con I/O utilizando PowerShell
Latencias de IO
17
18. 18
Monitoreo Proactivo utilizando DMV y PowerShell
Adicionalmente…
SQL Job que se ejecuta cada minuto y realiza las siguientes tareas
Ejecuta “currently executing”. Almacena el resultado solo si hay bloqueos o si hay algún Statement
ejecutándose por mas de 2 minutos.
Envía email con reportes de bloqueos (configurable)
La tabla utilizada para guardar la salida de “Currently Executing” es útil cuando tenemos que investigar problemas
de performance en el pasado.
Detecta Statements corriendo por mas de N minutos (Envía email con reporte)
Chequea utilización del porcentaje de uso del transaction log de todas las bases (Envía email con
reporte)
Espacio libre en los discos (envía email cuando quedan menos de 1 GB o 7 % del total)
Detecta transacciones abiertas por mas de N minutos
Detecta SQL Dumps
Detecta errores críticos en el SQL Error Log
Utilización de los discos utilizado contadores de PerfMon
Reporte de Latencia de los discos
18
19. 19
Auditoria
Utilizando Service Broker podemos realizar un sistema de que nos permitirá auditar la
manipulación de objetos dentro de una base de datos de usuario,
Tendremos un registro identificando el CREATE , DROP o ALTER
Cada registro nos informara lo siguiente:
TimeStamp del Evento
Tipo de Evento
CREATE_PROCEDURE, DROP_TABLE, etc.
Login con el que se realizo dicho evento
Esquema y Nombre de Objeto
Tipo de Objeto
Session ID con el que se realizo el evento
HostName (*)
Detalle del Evento XML
19