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