WPC074 - SQL Server monitoring con DMVs

WPC074 - SQL Server
monitoring con DMVs,
Powershell e Python
Danilo Dominici
MVP Data Platform
[email protected]
P R E S E N TA
Agenda
•  Monitoring di SQL Server
•  Gli strumenti a disposizione
– DMVs
– Powershell
•  Monitorare SQL Server da… Linux
www.wpc2016.it – [email protected] - +39 02 365738.11
2
Chi sono ?
• Consulente freelance, Trainer, Speaker, Autore
• Uso SQL Server da… un sacco di tempo!
• Microsoft MVP dal 2014 e MCT dal 2000
• Mentor @ SolidQ
• DBA SQL Server/PostgreSQL e VMWare admin
@ Regione Marche
• Speaker @ UGISS dal 2011
• Co-leader del PASS Global Italian Virtual Chapter
http://globalitalian.sqlpass.org
www.wpc2016.it – [email protected] - +39 02 365738.11
3
Monitoring
Introduzione
www.wpc2016.it – [email protected] - +39 02 365738.11
4
Monitoring: perché ?
•  Valutare lo stato di salute di SQL Server e ricevere
avvisi quando qualcosa non va
•  Ottimizzazione delle performance
– Costituisce una baseline per il confronto nel tempo
•  Memorizzazione delle informazioni necessarie per il
troubleshooting
– Es. Long running queries, missing indexes, disk &
database size
www.wpc2016.it – [email protected] - +39 02 365738.11
5
Quali strumenti a disposizione ?
•  Inclusi in SQL Server
– DMVs (2005+)
– Management Data Warehouse (2008+)
– Policy-Based management (2008+)
– System Health XE session (2012+)
•  Esterne/di terze parti
– Microsoft Operations Management suite
– SentryOne, Red-Gate, ApexSQL, Spiceworks, Solarwinds,
Idera, etc
www.wpc2016.it – [email protected] - +39 02 365738.11
6
Perché un proprio sistema di monitoring?
•  Flessibilità
– Istanze multiple su domini diversi
– Scelta delle KPI da monitorare e quali informazioni
archiviare
•  Costi
– I prodotti di monitoring più diffusi costano diverse
migliaia di euro per il monitoraggio di un numero
limitato di istanze
www.wpc2016.it – [email protected] - +39 02 365738.11
7
Che cosa monitorare ?
•  KPI
– Sono stati effettuati i backup ?
– L’uso della CPU/memoria è sopra una determinata soglia ?
– Lo spazio di un certo disco è al di sotto di una determinata
soglia ?
– I contatori di performance principali sono nei parametri ?
– …
•  Storicizzazione
– Wait stats
– Utilizzo dei dischi
– Utilizzo dei database
– …
www.wpc2016.it – [email protected] - +39 02 365738.11
8
Quali strumenti utilizzare ?
•  Query su DMVs
– Dynamic Management Views e Functions
– Già pronte:
– Glenn Berry’s Diagnostic queries
– Brent Ozar’s sp_blitz e sp_blitzcache
– Jason Strate’s sp_IndexAnalysis
•  Query WMI
www.wpc2016.it – [email protected] - +39 02 365738.11
9
DEMO
Query su DMVs per ottenere informazioni su SQL Server
www.wpc2016.it – [email protected] - +39 02 365738.11
10
Powershell
www.wpc2016.it – [email protected] - +39 02 365738.11
11
Powershell
•  E’ un linguaggio di scripting con interfaccia a riga di
comando, basato sulla programmazione ad oggetti e sul
framework .NET
•  Dalla versione 6 è disponibile in formato sorgente
– https://github.com/PowerShell/PowerShell
•  Può essere utilizzato per attingere ai dati di SQL Server
– SQLPS
– SQL Server Management Objects (SMO)
– Query T-SQL
– Query WMI
www.wpc2016.it – [email protected] - +39 02 365738.11
12
Powershell
•  Utilizzabile in molteplici scenari
– Da un server di monitoring nello stesso dominio
– Da un server di monitoring fuori dominio o in un dominio
non trusted
•  E’ possibile eseguire gli script da remoto via
PSRemoting
– Va abilitato su versioni precedenti Windows Server 2012
– Enable-PSRemoting
– Eseguirlo da Powershell 3.0: la versione 2.0 ha dei bugs
– Funziona anche con il “double-hop”
www.wpc2016.it – [email protected] - +39 02 365738.11
13
Powershell – Community Functions
•  Invoke-SqlCmd2 ritorna un dataset o una tabella
•  Out-DataTable – scrive un oggetto Powershell in una
tabella
•  Add-SqlTable – Crea una nuova tabella in SQL Server a
partire dall’oggetto passato
•  Write-DataTable – copia bulk dei dati in SQL Server (la
tabella deve esistere)
www.wpc2016.it – [email protected] - +39 02 365738.11
14
DEMO
Powershell
www.wpc2016.it – [email protected] - +39 02 365738.11
15
Monitorare SQL
Server da… Linux
www.wpc2016.it – [email protected] - +39 02 365738.11
16
www.wpc2016.it – [email protected] - +39 02 365738.11
17
Ambienti sempre più eterogenei
•  Client o server possono essere Linux-based
– O Mac-based J
•  SQL Server non è più solamente su Windows
– https://www.microsoft.com/en-us/sql-server/sql-server-vnextincluding-Linux
•  Powershell non è più solamente su Windows
•  Quindi…
– Perché non poter monitorare SQL Server anche da Linux ?
– Con quali strumenti ?
www.wpc2016.it – [email protected] - +39 02 365738.11
18
A questo proposito…
•  Disponibile la preview di SQL Server vNext CTP1 su
Linux (14.0.1.246-6)
– Red Hat Enterprise Linux 7.2 Workstation, Server, and Desktop
– Ubuntu 16.04LTS
– Docker Engine 1.8+ on Windows, Mac, or Linux
•  Istruzioni per l’uso
–  https://docs.microsoft.com/en-us/sql/linux/sql-server-linux-setup
•  Per installarla come container docker
–  https://blogs.sentryone.com/aaronbertrand/vs-code-mac-sql-linux-docker/
www.wpc2016.it – [email protected] - +39 02 365738.11
19
A questo proposito…
•  Per ora solamente l’engine con funzionalità ridotte
– Alcune saranno implementate nelle prossime build
– Altre non saranno disponibili a causa delle differenze tra i
sistemi operativi (Es. Filetable)
•  Quello che manca nella CTP1:
– https://docs.microsoft.com/en-us/sql/linux/sql-serverlinux-release-notes
www.wpc2016.it – [email protected] - +39 02 365738.11
20
A questo proposito…
•  Va gestita tramite:
– SQL Server Management Studio 17.0.1
– SQL Server Data Tools for Visual Studio 17.0
– Visual Studio Code + mssql extension (0.1.5)
www.wpc2016.it – [email protected] - +39 02 365738.11
21
DEMO
SQL Server su Ubuntu
www.wpc2016.it – [email protected] - +39 02 365738.11
22
Accedere a SQL Server da node.js
•  Node.js (https://nodejs.org/it/)
– Runtime Javascript costruito sul motore Javascript V8 di
Chrome
– Basato su un modello di I/O non bloccante e ad eventi
•  Per utilizzarlo con SQL Server:
– richiede una libreria per la connessione a SQL Server
– Es. Tedious (implementazione del protocollo TDS)
https://github.com/tediousjs/tedious
www.wpc2016.it – [email protected] - +39 02 365738.11
23
Accedere a SQL Server da Python
•  Python (http://www.python.it)
–  linguaggio di programmazione dinamico orientato agli
oggetti utilizzabile per molti tipi di sviluppo software
•  Esistono framework per lo sviluppo veloce di siti web
come Flask o Django
•  Per utilizzarlo con SQL Server:
– richiede una libreria per la connessione a SQL Server
– Es. Pymssql
http://www.lfd.uci.edu/~gohlke/pythonlibs/#pymssql
www.wpc2016.it – [email protected] - +39 02 365738.11
24
DEMO
Monitoring di SQL Server da node.js e Python
www.wpc2016.it – [email protected] - +39 02 365738.11
25
Domande e Risposte
Q&A
www.wpc2016.it – [email protected] - +39 02 365738.11
26
•  DMV
– Glenn Berry Diagnostic Queries
Risorse
http://www.sqlskills.com/blogs/glenn/category/dmv-queries/
– First Responder Kit (Brent Ozar)
https://github.com/BrentOzarULTD/SQL-Server-First-Responder-Kit
•  Powershell
– Varie funzioni per SQL Server e non solo
https://github.com/RamblingCookieMonster/PowerShell
•  Open source
– SQL Server on Linux
https://blogs.sentryone.com/aaronbertrand/vs-code-mac-sql-linux-docker/
– Connettersi al database SQL tramite Python
https://docs.microsoft.com/it-it/azure/sql-database/sql-database-develop-python-simple
– Connettersi al database SQL tramite Node.js
https://docs.microsoft.com/it-it/azure/sql-database/sql-database-develop-nodejs-simple
www.wpc2016.it – [email protected] - +39 02 365738.11
27
OverNet Education
Contatti
OverNet
Education
[email protected]
www.overneteducation.it
Tel. 02 365738
@overnete
www.facebook.com/OverNetEducation
www.linkedin.com/company/overnet-solutions
www.wpc2016.it
www.wpc2016.it – [email protected] - +39 02 365738.11
28