Personalización Data Collectors

783 views

Published on

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

Published in: Education
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
783
On SlideShare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
4
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Personalización Data Collectors

  1. 1. REL-319Personalización de DataCollectorEnrique Catalá BañulsMentor – Área relacionalMCT – MCTS – MCITP – MAP 2010ecatala@solidq.com
  2. 2. Objetivos de la sesiónα 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
  3. 3. DataCollectorRequisitosα 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
  4. 4. DataCollectorIntroducciónα 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
  5. 5. DataCollectorConceptos• 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).
  6. 6. DatacollectorConfiguración estandardα Lo primero siempre es crear la instancia recolectora
  7. 7. DataCollectorSuscripción de nueva instanciaα Lo segundo será ir suscribiendo instancias para monitorizar
  8. 8. Reportes estandardUso de disco
  9. 9. Reportes estandardEstadísticas de consultas
  10. 10. Reportes estandardActividad de servidor
  11. 11. Colectores estandardα 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
  12. 12. InternalsDependencias y relaciones
  13. 13. InternalsArquitectura de data collector
  14. 14. InternalsMSDBα 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.
  15. 15. InternalsInstancia Datawarehouseα Instancia normal y corriente con una BBDDα Se encuentra como script de ejecución directo en $INSTALL_PATHMSSQLINSTALL β C:Program FilesMicrosoft SQL ServerMSSQL10_50.SQL2008R2_2MSSQLInstallα 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 
  16. 16. InternalsInstancias suscriptorasα 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
  17. 17. Datacollector predeterminado
  18. 18. InternalsAlgunas interioridades básicasα 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
  19. 19. InternalsCore.source_info_internalα 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
  20. 20. Internalscore.snapshots_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
  21. 21. InternalsSnapshots.performance_counter_instancesα 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
  22. 22. InternalsSnapshots.performance_counter_valuesα 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
  23. 23. InternalsAñadir-modificar colectoresα Debe cumplir un simple esquema, medianamente documentado en BOL
  24. 24. InternalsEstimacion de costesα Con valor de 6 instancias y una captura por minuto 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
  25. 25. Código para crear tus reports
  26. 26. Reportes personalizados¿Dónde está el límite?
  27. 27. Arquitectura final
  28. 28. SolidQDataCollector
  29. 29. Objetivos de la sesiónConclusionesα Modelo de arquitectura DataCollector «sencillo»α Crear nuestros propios colectores es la gran potenciaα Modelo relacional β No es todo lo eficiente que nos gustaria
  30. 30. Si quieres disfrutar de las mejores sesiones denuestros mentores de España y Latino América, ésta es tu oportunidad. http://summit.solidq.com/madrid/

×