Técnicas avanzadas de Monitoreo Utilizando DMV, Extended Events y Service Broker Javier Villegas – DBA | MCP | MCTS Speaker Bio Picture Here 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 @javier_vill Miembro de la comunidad PASS Desde el año 2008 https://ar.linkedin.com/in/javiervillegas http://sql-javier-villegas.blogspot.com.ar/ 2 Agenda Analizando la actividad de SQL Server Monitoreo Continuo con Extended Events (XEvents) Monitoreo Proactivo (DMV / Powershell) Auditoria utilizando Service Broker 3 Analizando la actividad de SQL Server 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 4 dbo.SP_DBA_CurrentlyExec Ejemplo Bloqueos 5 5 dbo.SP_DBA_CurrentlyExec dbo.SP_DBA_CurrentlyExec @info=1 dbo.SP_DBA_CurrentlyExec @Filter_Name=‘App_Name’, @Filter_Value=‘SSIS’ dbo.SP_DBA_CurrentlyExec @Filter_Name=‘Host_Name’, @Filter_Value=‘WORKSTS01’ 6 6 dbo.SP_WhoIsActive 7 7 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 8 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 9 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 10 sp_server_diagnostics Ejemplos 11 11 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 12 SQL Profiler * Extended Events 12 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 13 I/O Waits Parámetros de un Query Plan de Ejecuciones Lock 13 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 14 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 15 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 16 Monitoreo Proactivo utilizando DMV y PowerShell Recolección continua y de información importante relacionada con los signos vitales del entorno 17 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 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 18 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 19 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 Monitoreo Proactivo utilizando DMV y PowerShell 20 20 Monitoreo Proactivo utilizando DMV y PowerShell 21 21 Monitoreo Proactivo utilizando DMV y PowerShell 22 22 Monitoreo Proactivo utilizando DMV y PowerShell 23 23 Monitoreo Proactivo utilizando DMV y PowerShell 24 24 DEMO Monitoreo Proactivo Auditoria 25 25 Preguntas? Gracias por asistir Follow @pass24hop Share your thoughts with hashtags #pass24hop & #sqlpass