Upload
solidq
View
372
Download
1
Embed Size (px)
DESCRIPTION
En SQL Server 2008 apareció una característica no muy aprovechada por los equipos de administración de SQL Server de las empresas. Se trata de una API de fácil programación para captura de información de múltiples servidores de SQL Server para su posterior explotación. En esta sesión os daremos detalles de cómo hemos construido en SolidQ nuestra herramienta SolidQDataCollector, para que veáis qué cosas podéis llegar a conseguir con esta tecnología de desarrollo rápido
Citation preview
Personalización de DataCollector
Enrique Catalá Bañuls
REL-319
Mentor – Área relacional MCT – MCTS – MCITP – MAP 2010
α Comprensión del modelo de arquitectura DataCollector
α Internals β Aprender su modelo relacional
β Explotar la información
β Construir tus propios reportes! POR FIN ALGUIEN LO EXPLICA!!!!!
α Arquitectura de SolidQ
Objetivos de la sesión
α Active Directory β SQL Server y SQL Agent levantados con cuenta de AD
α Instancia con el datawarehouse SQL Server 2008 en adelante
α Instancias suscriptoras SQL Server 2008 en adelante
α Instancias de reporting SQL Server 2008 R2
DataCollector Requisitos
α Es el framework que enlaza capturas, análisis, solución de problemas y persistencia de los informes de diagnóstico de SQL Server
α Consiste en una suite de herramientas para β Captura de datos con poca sobrecarga
β Monitor de rendimiento, solucionador de problemas y optimización
β Persistencia de datos de diagnósticos
β Reporting
DataCollector Introducción
• Proveedor de datos
– Fuentes de información – Ej. SQL Trace, Perform counters, DMVs, consultas T-SQL, logs
• Tipo colector
– Conoce como leer y exponer datos de un proveedor de datos específico
• Elemento colección
– Instancia de un tipo colector
– Determina las entradas de datos y su frecuencia Ej. Solo recoge wait_time_ms y max_wait_time_ms desde sys.dm_os_wait_stats DMV cada 5
segundos).
DataCollector Conceptos
α Lo primero siempre es crear la instancia recolectora
Datacollector Configuración estandard
α Lo segundo será ir suscribiendo instancias para monitorizar
DataCollector Suscripción de nueva instancia
Reportes estandard Uso de disco
Reportes estandard Estadísticas de consultas
Reportes estandard Actividad de servidor
α Disk Usage (retained for 730 days)
β Disk Usage – Data Files: Transact-SQL data collection in non-cached mode – gathered and immediately uploaded every 6 hours
β Disk Usage – Log Files: Transact-SQL data collection in non-cached mode – gathered and immediately uploaded every 6 hours
α Query Statistics (retained for 14 days)
β Query Activity: special Query Activity collector type in cached mode – gathered every 10 seconds and uploaded every 15 minutes
α Server Activity (retained for 14 days)
β DMV Snapshots: Transact-SQL data collection in cached mode – gathered every 60 seconds and uploaded every 15 minutes
β Performance Counters: Performance Monitor collection in cached mode – gathered every 60 seconds and uploaded every 15 minutes
Colectores estandard
Internals Dependencias y relaciones
Internals Arquitectura de data collector
α Almacena información de configuración, información en tiempo de ejecución, auditorías e información de historial de recopilación.
α Todo los datos necesarios para configurar y ejecutar el recopilador de datos están en ella
α La configuración de la recopilación de datos puede implementarse en varios servidores sin tener que usar el sistema de archivos.
α El recopilador de datos puede usar los mecanismos de seguridad existentes de SQL Server para proteger los datos. Además, las funciones de base de datos pueden proporcionar seguridad granular y no es necesario implementar el encadenamiento entre bases de datos.
α Puesto que msdb es una base de datos relacional, es posible garantizar la integridad referencial de los datos de configuración y en tiempo de ejecución.
α Además de almacenar la información específica del recopilador, msdb también se usa para almacenar información de trabajo del Agente SQL Server e información de los paquetes de SSIS.
Internals MSDB
α Instancia normal y corriente con una BBDD
α Se encuentra como script de ejecución directo en $INSTALL_PATH\MSSQL\INSTALL
β C:\Program Files\Microsoft SQL Server\MSSQL10_50.SQL2008R2_2\MSSQL\Install
α Se chequea que no sea instancia SQL Express
α ¿Creías que era una BBDD mágica? β Eso si, nadie ha dicho que estuviera bien optimizada
Internals Instancia Datawarehouse
α Almacenan en MSDB la info critica!!! β Dbo.syscollector_*
β Por culpa de eso tendremos que ingeniarnoslas
α Tienen un job por cada accion de carga y captura hacia datawarehouse
α Imperativamente se crean, configuran y arrancan los colectores del sistema
α No se puede desconfigurar, solo deshabilitar
Internals Instancias suscriptoras
Datacollector predeterminado
α Esquemas β Core: Objetos de sistema de configuración de suscripciones
β Sysutility_ucp_core: Tablas de Utility Control Point
γ Solo SQL Server 2008 R2 y superior
γ Si, funciona con esta tecnologia
β Snapshots: Objetos de sistema relacionados con la captura de datos
β Custom_snapshots
γ Este es el esquema sobre el que trabajaremos si queremos añadir funcionalidad
α Triggers de base de datos β Solo sysadmin y mdw_admin pueden eliminar objetos
β A toda tabla creada sobre custom_snapshots se le añade una restricción que chequea el operador para ver si tiene permisos mdw_writer
Internals Algunas interioridades básicas
α Una fila por cada colector registrado β Collector_set_uid: identificación UID del colector
β Instance_name: Nombre de instancia registrada para seguimiento
β Days_until_expiration: Dias antes de que sea lanzado el purgado de datos
β Operator: Login encargado de realizar la conexión de carga
Internals Core.source_info_internal
α Contiene una fila por cada snapshot ocurrido en suscriptor
α Tabla intermedia con identificadores
α Imprescindible para correlacionar capturas con instancias
α Columnas β Snapshot_id: pk e identificador de la tabla
β Snapshot_time_id: fk hacia tabla que contiene la hora de captura
β Source_id: Importantisimo. Relaciona la captura con el colector y por tanto con la instancia
Internals core.snapshots_internal
α Tabla que contiene los contadores de rendimiento
α Columnas: β Performance_counter_id: Identificador del contador
β Path: Path completo al contador
β Object_name: Grupo al que pertenece el contador
β Counter_name: Contador
β Instance_name: Instancia al que se le aplica
β Counter_type: Id numerico identificando counter_name
Internals Snapshots.performance_counter_instances
α Tabla que contiene datos de captura de contadores
α Es la tabla mas gorda del entorno β Para que nos hagamos una idea, pensad en 100Millones de filas
α No está particionada de serie
α No utiliza compresión
Internals Snapshots.performance_counter_values
α Debe cumplir un simple esquema, medianamente documentado en BOL
Internals Añadir-modificar colectores
α Con valor de 6 instancias y una captura por minuto
Internals Estimacion de costes
Cálculos Tiempos Descripcion
horas/pagina/contador 2,016666667 horas se tardan en llenar una página
Paginas/h/contador 0,033611111 Páginas ocupadas por hora por un solo contador
horas/pagina 0,013908046 horas se tardan en llenar una página capturando todos los contadores
Horas/Gb/contador 2114628,267 horas para llenar 1Gb por contador para una instancia
Horas/Gb 14583,64322 horas para llenar 1Gb por todos los contadores para una instancia
Dias/Gb/Instancia 607,6518008 dias para llenar 1Gb por todos los contadores para una instancia
Meses/Gb/Instancia 20,25506003 Meses para llenar 1Gb por todos los contadores para una instancia
Dias/Gb 101,2753001 dias para llenar 1Gb por todos los contadores para todas las instancias
Meses/Gb 3,375843338 meses para llenar 1Gb por todos los contadores para todas las instancias
Código para crear tus reports
Reportes personalizados ¿Dónde está el límite?
Arquitectura final
SolidQDataCollector
α Modelo de arquitectura DataCollector «sencillo»
α Crear nuestros propios colectores es la gran potencia
α Modelo relacional β No es todo lo eficiente que nos gustaria
Objetivos de la sesión Conclusiones
Si quieres disfrutar de las mejores sesiones de
nuestros mentores de España y Latino América,
ésta es tu oportunidad.
http://summit.solidq.com/madrid/