Técnicas avanzadas de
Monitoreo
Javier Villegas – DBA | MCP | MCTS
Utilizando DMV, Extended Events y Service Broker
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
Agenda
3
 Analizando la actividad de SQL Server
 Monitoreo Continuo con Extended Events (XEvents)
 Monitoreo Proactivo (DMV / Powershell)
 Auditoria utilizando Service Broker
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
5
dbo.SP_DBA_CurrentlyExec
Ejemplo
Bloqueos
5
6
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
7
dbo.SP_WhoIsActive
7
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
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
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
11
sp_server_diagnostics
11
Ejemplos
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
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
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
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
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
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
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
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
20
Monitoreo Proactivo utilizando DMV y PowerShell
20
21
Monitoreo Proactivo utilizando DMV y PowerShell
21
22
Monitoreo Proactivo utilizando DMV y PowerShell
22
23
Monitoreo Proactivo utilizando DMV y PowerShell
23
24
Monitoreo Proactivo utilizando DMV y PowerShell
24
25
DEMO
Monitoreo Proactivo
Auditoria
25
Preguntas?
Gracias por asistir
Follow @pass24hop
Share your thoughts with hashtags
#pass24hop & #sqlpass

Tecnicas avanzadas de monitoreo

  • 1.
    Técnicas avanzadas de Monitoreo JavierVillegas – DBA | MCP | MCTS Utilizando DMV, Extended Events y Service Broker
  • 2.
    Speaker Bio 2 Database Administrator Desdeel 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 laactividad de SQL Server  Monitoreo Continuo con Extended Events (XEvents)  Monitoreo Proactivo (DMV / Powershell)  Auditoria utilizando Service Broker
  • 4.
    Analizando la actividadde 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
  • 5.
  • 6.
    6 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
  • 7.
  • 8.
    8 sp_server_diagnostics Captura información dediagnostico 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óndel 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ónde 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
  • 11.
  • 12.
    12 Analizando la actividadde 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 utilizandoExtended 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 utilizandoExtended 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 utilizandoExtended 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 actividadde 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 utilizandoDMV 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 utilizandoDMV 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 ServiceBroker 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
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
    Gracias por asistir Follow@pass24hop Share your thoughts with hashtags #pass24hop & #sqlpass