Övervakning av databaser i virtuella miljöer

EXAMENSARBETE
Övervakning av databaser i virtuella
miljöer
Marcus Pesula
Mattias Rönnberg
2015
Högskoleexamen
Datornätverk
Luleå tekniska universitet
Institutionen för system- och rymdteknik
Övervakning av databaser i virtuella miljöer
Examensarbete - D0032D
Luleå Tekniska Universitet
Institutionen för system- och rymdteknik
Marcus Pesula
Mattias Rönnberg
Förord
Detta examensarbete utfördes under fem veckor på företaget Data Ductus kontor i Uppsala och är slutuppgiften för högskoleexamen i Datornätverk på Luleå tekniska universitet.
Inledningsvis vill vi tacka Oualid Burström som gav oss rekommendationer till examensarbetet och Karl Andersson, utbildningsledare. Ett stort tack går även ut till Data Ductus
samt Erik Ohlsson, Pelle Elfström, Gustaf Palmqvist och övriga medarbetare som assisterade oss under arbetets gång.
Vi hoppas att det arbete som vi utfört kommer att vara till nytta i framtiden.
Uppsala, maj 2015
Marcus Pesula och Mattias Rönnberg
Sammanfattning
Virtualisering och övervakning är två snabbt växande områden inom IT-branschen. Denna rapport behandlar övervakningen av databas-servrar med hjälp av två olika verktyg,
op5 monitor samt VMware vCenter.
Det svenska företaget op5 AB har utvecklat op5 monitor och detta verktyg används
idag av flera stora företag för att övervaka deras nätverkselement, Data Ductus är ett av
dem. Ductus ligger i framkant när det kommer till systemövervakning men är i behov att
utöka sin övervakning på databas-servrar. Uppdraget antogs därför av oss att hitta en
lösning som ska kunna implementeras i deras produktionsmiljö.
Beskrivningar presenteras av de teoretiska delar som ingår i övervakning och virtualisering med VMware ESXi. En lösning för att övervaka Microsofts databasserver i op5 tas
fram och testas, lösningen görs så generell som möjligt för att den lätt ska kunna tas i bruk.
Även en jämförelse mellan fysisk och virtuell övervakning granskas och perl-programmet
check mssql health används som mall för att skapa checkar av intressanta mätvärden att
övervaka hos en databas-server.
Felkällor och förbättringar samt framtida arbete diskuteras och slutsatsen dras att op5
är det överlägsna övervakningsverktyget på grund av dess flexibilitet.
Abstract
Virtualization and monitoring are two rapidly growing areas in the IT industry. This report deals with the monitoring of database servers using two different tools, op5 Monitor
and VMware vCenter.
The Swedish company op5 AB has developed op5 Monitor. This tool is now used by
several major companies to monitor their network elements, Data Ductus is one of them.
Ductus is at the forefront when it comes to system monitoring but are in need to expand
the monitoring of their database servers. The task to find a solution that can be implemented in their production environment was therefore adopted by us.
A thorough overview is composed of the theoretical parts involved in the monitoring
and virtualization with VMware ESXi. A solution to monitor Microsofts database server
in op5 is developed and tested, the solution is made as general as possible in order for it
to easily be implemented in a production environment.
A comparison between physical and virtual monitoring is reviewed and the perl program check mssql health is used to monitor interesting metrics in a database server.
Sources of errors, improvements and future work are discussed and it is concluded that
op5 is the superior surveillance tool compared to VMware vCenter.
Innehåll
1.
Introduktion
1.1
1.2
1.3
2.
Bakgrund . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Syfte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Frågeställningar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Teori
2.1
2.2
2.3
2.4
2.5
3.
6
8
ESXi . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.1.1
vSphere Client, vCenter & VMware Workstation
2.1.2
Virtualiserat nätverk . . . . . . . . . . . . . . .
2.1.3
SAN & HP 3PAR . . . . . . . . . . . . . . . . .
Microsoft SQL Server . . . . . . . . . . . . . . . . . . .
2.2.1
Instanser . . . . . . . . . . . . . . . . . . . . . .
2.2.2
Metrics & Counters . . . . . . . . . . . . . . . .
Nagios & op5 monitor . . . . . . . . . . . . . . . . . . .
2.3.1
NRPE, NSClient++ & WMI . . . . . . . . . . .
JSON & Perl . . . . . . . . . . . . . . . . . . . . . . . .
check mssql health . . . . . . . . . . . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Genomförande
3.1
3.2
3.3
3.4
Metod . . . . . . . . . . .
Förundersökning . . . . .
Tester av op5 och MSSQL
Implementering . . . . . .
6
7
7
8
8
9
9
10
10
10
11
11
12
12
13
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
13
13
15
16
4.
Resultat
22
5.
Diskussion & Analys
24
Förkortningar och förklaringar
26
Bilagor
27
Bilaga 1 - MSSQL Counters . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Bilaga 2 - Management Pack . . . . . . . . . . . . . . . . . . . . . . . . . . . .
28
31
Övervakning av databaser i virtuella miljöer
Del 1.
Introduktion
Virtualisering av hårdvara blir allt mer en de facto standard inom enterprise-sektorn.
Nätverkselement, servrar och arbetsstationer virtualiseras för att bland annat öka redundans, tillföra skalbarhet och underlätta underhållsarbete.
Både små och stora företag kan dra nytta av att virtualisera sina IT-miljöer och nästa
steg är att sätta upp en central enhet vars syfte är att övervaka noderna i företagsnätverket.
Detta är två metoder som kan användas för att skapa en bättre IT-plattform och ett
förbättrat arbetssätt för att spara både tid och pengar.
1.1
Bakgrund
Det arbete som ligger som grund för denna rapport utfördes bland annat i Data Ductus
produktionsmiljö. Data Ductus är ett konsultföretag med expertis inom IT. Divisionen i
Uppsala arbetar med Svenska kyrkan och har hand om deras IT-miljö. Denna består av
ett kluster i Uppsala med ungefär 500 virtuella maskiner som drivs av 16 fysiska Blade
servrar och HP’s lagringslösning 3PAR. Miljön består även av ett kluster i Luleå som
innehåller närmare 100 virtuella maskiner och 5 fysiska servrar. Tillsammans klarar de
båda att leverera 700 GHz processorkraft, 6 TB RAM minne och 150 TB lagring för
virtualisering.
Data Ductus ligger i framkant när det kommer till övervakning av servrar i produktionsmiljö. De använder så kallad pollning då en centraliserad enhet skickar förfrågningar
till noderna i nätverket för att försäkra sig om att de fungerar som de ska.
Den mjukvara som används för att möjliggöra denna övervakning är op5 med dess
webgränssnitt och funktioner för att uppmärksamma larm och varningar som sedan visas
på bildskärmar i kontoret och i vissa fall skickas som SMS till deras drifttekniker.
De dedikerade övervakningsservrarna på Data Ductus har växt snabbt det senaste
åren. Från att vara en virtuell enhet med 13 GB lagring och 1 GB RAM minne med
CentOS 5 som grund till att utökas och nu används en fysiskt server med 4 GB RAM
med 300 GB diskutrymme som kör operativsystemet Red Hat 6.6. Redundans garanteras
även med en masterserver i Uppsala samt två slaves som hålls uppdaterade i Luleå och
Göteborg.
6
Övervakning av databaser i virtuella miljöer
1.2
Syfte
Syftet med denna rapport är att ge en grundlig uppfattning om övervakning av MSSQL i en virtuell miljö samt en jämförelse mellan op5’s övervakningslösning och den som
är integrerad i VMware. Det åtagna uppdraget är att ta fram en lösning för att utöka
den övervakning som Data Ductus redan har på sina MSSQL servrar samt undersöka
övervakning i virtuella miljöer. Detta för att skapa en mer grundlig övervakning på databaserna.
1.3
Frågeställningar
Innan arbetet påbörjades togs några frågeställningar fram för att hållå kvar fokus på
uppgiften samt för att underlätta det fortgående arbetet. De frågeställningar som ställdes
var:
• Är det någon skillnad mellan övervakning i fysiska/virtuella miljöer?
• Hur ser Data Ductus nuvarande övervakning av MSSQL ut?
• Vad kan förbättras i övervakningssyfte?
• Vilka metrics och counters är intressanta att övervaka på en MSSQL server?
7
Övervakning av databaser i virtuella miljöer
Del 2.
Teori
2.1
ESXi
ESX eller Elastic Sky X som var utvecklingsnamnet för den hypervisor från VMware
som installeras direkt på fysiska servrar, utan något operativsystem och som möjliggör
partitionering av resurser till virtuella enheter.
ESXi innehåller en kärna som används för att initiera virtualiseringsprocesser och
sköta om hanteringen av resurser som minne och processorkraft. Tidiga versioner av
ESX hade en Linuxbaserad kärna och fungerade som ett gränssnitt mellan serveradministratören och operativsystemet. Denna Linuxkärna är i senare versioner borttagen och
ersatt med en så kallad VMkernel då den allokerade resurser i onödan. [1]
ESXi används som grund i de flesta av VMware’s virtuella miljöer och uppdateras
kontinuerligt för att hålla sig i fas med hårdvaruutvecklingen.
VMware’s infrastruktur har även stöd för virtualisering av nätverk och nätverkselement
som sedan integreras i deras lösningar.
2.1.1
vSphere Client, vCenter & VMware Workstation
VMware Workstation är en hypervisor av typ två vilket innebär att den körs ovanpå ett
annat operativsystem. Den är gratis att prova och tillåter användaren att skapa virtuella
maskiner på en fysisk enhet.
Man kan etablera en fjärranslutning till en ESXi server med hjälp av vSphere Client och från gränssnittet bland annat skapa, editera och styra virtuella maskiner och
dess funktioner. vSphere Client installeras på klientdatorn och kan även användas för
att fjärransluta till en vCenter-server som i sin tur är installerad på en Windows-server
och administrerar ESXi-servern centralt. En vCenter-server har mer kraft och kan utföra
avancerade uppgifter så som att kontrollera realtids-migrering med vMotion och lastbalansering med DRS. [2]
8
Övervakning av databaser i virtuella miljöer
2.1.2
Virtualiserat nätverk
Virtuella nätverk har samma funktion som ett fysiskt nätverk och virtuella switchar
möjliggör kommunikation mellan enheter via samma protokoll som fysiska switchar utan
att behöva köpa in överflödig hårdvara. Switcharna som används i ett virtuellt nätverk
har även stöd för VLAN och kan användas i symbios med de flesta standardiserade
hårdvarutillverkarnas enheter. I Figur 1 demonstreras exempel på ett virtuellt nätverk
vars NIC är kopplade till ett fysiskt core-nät. Det finns möjligheter att bygga enorma
virtuella nät med hjälp av en ESXi server, version 3 av ESXi kan innehålla 248 vSwitchar
på en enda fysisk server.
Eftersom det inte går att koppla ihop flera virtuella switchar med varandra så är det
nästintill omöjligt att skapa en loop i nätverket och således behövs inte STP användas för
att motverka dessa. Detta sparar på resurser som kan användas till annat, till exempel
att ta emot förfrågningar av en administrationsklient. [3]
Figur 1: Illustration av ett virtuellt nätverk
2.1.3
SAN & HP 3PAR
Storage Area Network är ett kluster av lagringsenheter, ofta med olika hastigheter och
storlek, som kopplas samman via ett höghastighetsnätverk för att agera som primär lagring för bland annat servrar och andra enheter. Ett SAN används ofta i virtuella miljöer
för att dela ut resurser till VMs.
3PAR är en lagringslösning från HP som är optimerad för användning i virtuella och
molnmiljöer. Lösningen erbjuder automerad redundant lagring i form av diverse RAIDkonfigurationer och möjligheten att använda olika sorters lagringsmedium så som SSD
och mekaniska diskar. Diskar kan gå sönder och bytas ut utan att den data som lagras
på dem går förlorad eller att någon tjänst som behandlar lagringsutrymmet inte fungerar
som den ska. [4]
9
Övervakning av databaser i virtuella miljöer
2.2
Microsoft SQL Server
Microsoft SQL Server är en databashanterare för relationsdatabaser utvecklad av Microsoft. Information i en relationsdatabas lagras i tabeller där varje kolumn har en bestämd
datatyp. Varje kolumn innehåller data, ofta med en primärnyckel som gör den unik.
Hämtning av data utförs genom att göra förfrågningar mot SQL-servern utformade för
att hämta den data man vill ha. Svaret på en SQL-förfrågan returneras som en tabell.
SQL är ett programspråk som används för att hämta, modifiera och lägga till data
i en databas av relationstyp. SQL togs fram kring 1974 och anpassades till en standard
år 1986 av American National Standards Institute (ANSI) och 1987 av International
Organization for Standardization (ISO). [5]
Eftersom en SQL-server är resursintensiv behövs speciella åtgärder tas vid implementation och övervakning så att till exempel minne och processorkraft kan anpassas vid
behov.
Microsofts egna grafiska verktyg för att hantera databaser heter Microsoft SQL Server
Management Studio.
2.2.1
Instanser
Vid installation av MSSQL så skapas en instans av databasmotorn som körs som en
tjänst på operativsystemet. Denna instans binder sig till en port och lyssnar sedan efter
anrop. För att ansluta till en instans så specificeras portnummer eller instansnamn efter
hostnamnet. Fler än en instans kan förekomma per maskin, men två instanser kan inte
dela samma port.
2.2.2
Metrics & Counters
I MSSQL finns ett antal mätvärden som presenteras genom statistiska grafer i ett program
som heter performance monitor. Administratören väljer själv vilka mätvärden som aktivt
ska samlas och dessa kan sedan hämtas ut av externa nätverkshanteringssystem. Detta
sker via en agent på den övervakade servern för att bli centralt tillgängliga.
10
Övervakning av databaser i virtuella miljöer
2.3
Nagios & op5 monitor
Nagios är ett öppet övervakningssystem som använder sig av lokala kommandon för att
hämta olika variabler och mätvärden. Det stödjer kommandon från många olika språk,
så länge det kan köra dem med en lokal användare som finns på servern som hanterar
anropen. Nagios är en så kallad network manager, och ansluter till olika nätverkselement
via dess agenter.
op5 Monitor är en produkt för nätverksövervakning baserat på det öppna övervakningssystemet
Nagios men vidareutvecklat av företaget op5 AB.
För att övervaka ett objekt i op5 monitor så används webbgränssnittet för att lägga
till en host. På varje host kan det appliceras specificerade kommandon för att hämta
variabler, dessa kallas i op5 för service, och varje hostobjekt kan innehålla flera av dessa.
2.3.1
NRPE, NSClient++ & WMI
NRPE, eller Nagios Remote Plugin Executor är en agent som låter ett NMS exekvera
skript för att övervaka lokala resurser på ett fjärrstyrt system. Observera att Nagios inte är
ett krav för att använda agenten. NRPE kan köras självständigt och check-kommandona
kan exekveras via kommandoraden istället för att låta Nagios sköta den delen. [6]
NSClient++ är en agent för att övervaka Windowsbaserade system, ett kommando körs
på övervakningssystemet för att hämta information om de lokala resurserna, precis som
NRPE.
WMI (Windows Management Instrumentation) är ett gränssnitt för interaktion med Windows för hämtning av underhållsinformation i en enterprise miljö. WMI låter ett NMS
hämta information och exekvera script på en fjärrdator för att schemalägga aktiviteter.
11
Övervakning av databaser i virtuella miljöer
2.4
JSON & Perl
JavaScript Object Notation (JSON) är en öppen standard för att utbyta dataobjekt som
består av attribut och värden i par. JSON används ofta för att skicka data mellan klient
och server i ett format som är lätt att tolka både av program och människor. JSON är
trots sitt namn inte bundet till JavaScript utan kan användas av alla programmeringsspråk som har en JSON tolk. [7]
Perl är ett skriptspråk som ofta används för att hämta och sammanställa information
från en server och formatera det på ett bra sätt. Perl används ofta i övervakningssyfte
för att sammanställa information som sedan införs i ett NMS. [8]
2.5
check mssql health
Check mssql health är en plugin till Nagios som tar ett antal argument för övervakning av
MSSQL servrar. Pluginen använder Perl-modulen DBD::Sybase för att skapa anslutningar
mot en databas och kör med hjälp av SQL förfrågningar för att hämta olika värden. [9]
Vid användning av kommandot kan man även ange tröskelgränser för alarm och varningar som sedan visas i Nagios med respektive allvarlighetsgrad.
12
Övervakning av databaser i virtuella miljöer
Del 3.
Genomförande
3.1
Metod
Arbetet inleddes med att undersöka den goda praxis som används vid installationer av
MSSQL i en virtuell miljö. [10] Till en början så begränsades omfånget med tanke på
de frågeställningar som tidigare tagits fram. Vår uppgift blev att hitta de viktigaste
metoderna att ta i beaktande vid implementering av MSSQL i en virtuell miljö. För att
göra detta konsulterades de anställda i driftenheten på Data Ductus för att använda
deras metoder som referens.
En utförlig genomgång av Data Ductus system och deras VMware-baserade miljö gav
oss en bättre uppfattning av den best practice som idag används inom företaget och
hur miljön ser ut. Huvudfokuset skiftade dock snabbt till övervakningsdelen då vi fick
reda på hur snabb tillväxt systemövervakning undergår. Uppdraget blev att ta fram en
övervakningslösning för MSSQL i Data Ductus produktionsmiljö.
3.2
Förundersökning
Första steget var att få en inblick i hur Data Ductus idag sköter sin övervakning och bilda
oss en uppfattning om hur övervakningen på deras databaser skulle kunna utvidgas och
förbättras. Vi började med att bekanta oss med övervakningsverktyget de använder, op5.
Vårat första intryck var att det har förbättrats enormt i jämförelse med Nagios Core,
antalet funktioner och hanteringen av objekt är de största skillnaderna.
13
Övervakning av databaser i virtuella miljöer
Figur 2 visar en illustrering av det så kallade ‘Tactical view’ i op5 där man får en
grafisk överblick av de tjänster och enheter som övervakas och Figur 3 visar motsvarande
funktion i Nagios.
Tactical view går även att redigera precis som man vill ha den och det finns även
möjligheter att utveckla egna så kallade widgets för att visa specifik information.
Figur 2: Vy som visar övervakade objekt, problem och planerade driftavbrott i op5
Figur 3: Lista av övervakade objekt i Nagios
14
Övervakning av databaser i virtuella miljöer
3.3
Tester av op5 och MSSQL
Härnäst valde vi att sätta upp en egen testmiljö, detta gjordes genom att använda VMware Workstation för att skapa två virtuella maskiner. På den första så installerades
Windows Server 2012 och Microsoft SQL server 2012 med en instans, och den andra
innehöll en virtuell appliance framtagen av op5.
När testmiljön var färdigställd så började vi med att undersöka hur den mall för
övervakning av MSSQL från op5 såg ut. Vi märkte direkt att denna övervakning inte stödjer instanser och eftersom Data Ductus använder sig av flera instanser på varje
MSSQL server så blev detta första problemet som vi stötte på.
Den mall som fanns tillgänglig i op5 innehåller som standard de mätvärden som visas
nedan, dessa använder agenten NSClient++ i Windows Server och kommunicerar med
hjälp av NRPE och WMI.
• Avg. Disk Queue Length
• Disk Read Average Latency DB-Disk
• Disk Write Average Latency DB-disk
• PING
• Physical disk time
• Services - MSSQL
När vi bekantat oss med op5’s MSSQL-övervakning inleddes sökandet efter mer specifika
mätvärden att övervaka hos en MSSQL server. Vi gjorde en lista över de som enligt oss
var intressanta för övervakning, men några av de som fanns tillgängliga var svåra att
förstå. Detta är ett utdrag från den lista som till en början satte ihop samt det vi trodde
att kommandona(checkarna) gjorde:
• connection-time - hur lång tid det tar att logga in
• connected-users - antal anslutna användare
• io-busy - mäter input / output i procent
• transactions - antal transaktioner per sekund
• database-online - kollar om databasen är online
• database-free - ledigt utrymme i en databas
• database-backup-age - tidsenheter sedan senaste backupen
• failed-jobs - antalet jobb som inte kunnat slutföras
• sql-runtime - tid det tar att exekvera ett specifikt sql statement
15
Övervakning av databaser i virtuella miljöer
3.4
Implementering
Med denna information började sedan undersökningen av sätt att implementera dessa i
op5. Vi hittade ett plugin till Nagios som heter check mssql health och märkte snart att
detta plugin stöds av op5 och finns till förfogande vid installationer av övervakningsmjukvaran.
Efter en närmare titt på check mssql health så skrev vi ihop en dokumentation om
vad varje check gjorde och denna översågs av databasadministratören på Data Ductus
för att bestämma vilka checkar som var relevanta för dem. Listan på alla checkar, en kort
beskrivning av vad de utför samt rekommenderade tröskelvärden finns bifogad som en
bilaga till denna rapport.
Nästa steg var att testa de relevanta checkarna, detta gjordes till en början i kommandoraden på den virtuella maskinen som op5 konfigurerats på för att få en uppfattning om
hur de fungerade. För att göra detta användes först ‘find’ funktionen i BASH (vanlig kommandotolk i UNIX-baserade operativsystem) för att lokalisera katalogen som innehåller
de plugins som används av op5.
find / -name check_mssql_health
Det visar sig att de ligger i ‘/opt/plugins’. För att sedan få information om hur check
mssql health syntaxen används så kördes plugin-modulen med -h flaggan.
/opt/plugins/check_mssql_health -h
Nedan visas den output som genererades exekveringen av detta kommando. Det gav oss
en översikt om hur check mssql health fungerar och hur vi ska kunna använda det för att
utveckla den övervakningslösning som passar våra behov.
Copyright (c) 2009 Gerhard Lausser
Check various parameters of MSSQL databases
Usage:
check_mssql_health [-v] [-t <timeout>] --hostname=<db server hostname>
--username=<username> --password=<password> [--port <port>] --mode=<
mode>
check_mssql_health [-v] [-t <timeout>] --server=<db server> --username
=<username> --password=<password> --mode=<mode>
check_mssql_health [-h | --help]
check_mssql_health [-V | --version]
16
Övervakning av databaser i virtuella miljöer
Ytterligare tester utfördes där vi inkluderar vår andra virtuella maskin för att undersöka om op5 servern kunde kommunicera med MSSQL-databasen via check mssql
health. Vi kunde från syntax-hjälpen lista ut hur kommandot skulle formuleras i CLI.
Följande kommando användes för att testa om databasen är online och tar emot anslutningar, vad som programmet ska övervaka specificeras med ’–mode’ flaggan.
/opt/plugins/check_mssql_health --hostname 192.168.72.100 --username ’
Administrator’ --password ’Cisco123’ --mode database-online
Detta genererade ett felmeddelande som påpekar fel vid anslutningen. Efter undersökning
i op5 så visar det sig att istället för att använda flaggan ’–hostname’ så ska ’–server’
användas då MSSQL-servern identifieras med en IP-adress. Detta testades men genererade som visas nedan i Figur 4 ett annat felmeddelande denna gång om autentiseringen.
Figur 4: Felmeddelande vid körning av check mssql health
Vi undersökte då dokumentationen för MSSQL[5] och det visade sig att man måste redigera rättigheterna på instansen för att kunna göra läsningar och skicka fjärrkommandon
till servern.
Det användarnamn som tillämpas är det fördefinierade administrationskontot ‘sa’,
eller system admin, men det är god praxis att använda en speciellt framtagen användare
för övervakning.
17
Övervakning av databaser i virtuella miljöer
Nu genererade kommandot en output som påvisar att databasen är online, vi går
därför vidare och lägger upp ett övervakat objekt, en så kallad host.
För att skapa en host i op5 användes webbgränssnittet. MSSQL-serverns IP-adress
samt två stycken variabler, användarnamn och lösenord läggs till. Dessa kommer att
användas för att autentisera checkarna mot MSSQL-instansen. Figur 5 visar hur det ser
ut i webbgränssnittet när man lägger till en ny host i op5.
Figur 5: Webgränssnitt för skapandet av hostar
18
Övervakning av databaser i virtuella miljöer
Nästa steg var att lägga till så kallade services för alla specifika övervakningscheckarna.
I detta fall valde vi att utgå från listan som presenterats för Data Ductus databasadministratör och lägga till de som enligt honom var relevanta.
Figur 6: Kritiska värden på check mssql health
Som Figur 6 visar så är några värden kritiska, failed-jobs som påvisar att inga jobb
har körts och genererar därför en kritisk varning och checkarna om backup som meddelar
att det inte tagits någon backup på databasen ‘tempdb’.
Vi redovisar detta för Data Ductus och får i uppgift att hitta lösningar på dessa
problem. Vi får även reda på att Data Ductus tillhandahåller flera instanser per MSSQLserver och dessa representeras av olika portar på servern.
Det första problemet vi tacklar är att kunna specificera vilken instans som skall
övervakas, vår första idé är att använda FreeTDS för att ge varje IP-adress/port-relation
ett eget alias. FreeTDS är ett programbibliotek som används för att sköta kommunikationen mellan program och MSSQL-servrar. [11]
[SVR01INST01]
host
port
=
=
192.168.72.100
1433
[SVR01INST02]
host
port
=
=
192.168.72.100
1434
Detta fungerar men vi kom snabbt på att administrationsbördan blir enorm om man ska
lägga till varje MSSQL-instans i FreeTDS samt att varje användare måste ha access för
att ändra i FreeTDS-filen viket skapar ett stort säkerhetshål.
19
Övervakning av databaser i virtuella miljöer
Data Ductus använder även dynamiska portar till några av deras MSSQL-instanser.
Porten kan då ändras vid omstart av servern vilket leder till att FreeTDS pekar på fel
port och relationen brister. Det finns två sätt att ansluta till en MSSQL-instans:
--server <ip-adress> --port <portnummer>
--server <ip-adress>\<instansnamn>
I det första fallet så är portnumret bundet statiskt till den instans man vill ansluta
till, och i det andra så ansluter den till SQL-serverns standardport för databasanslutningar och blir sedan vidarebefordrat till den specificerade instansen. Eftersom Data Ductus
använder sig av dynamiska portar så valde vi att använda det andra alternativet och
införa instansnamnet som en variabel på servicenivå.
För att lösa problemet med databaser som det ej tagits någon backup på så sökte vi
igenom dokumentationen av check mssql health av Gerhard Lausser [9] för att hitta ett
sätt att ta bort användarspecificerade databaser och motverka att checken genererar ett
larm.
Databasen ‘tempdb’ används ej i backupsyfte och bör därför exkluderas ur denna
check. För att lyckas med detta använde vi oss utav ett regular expression och kunde
med hjälp av detta välja att endast övervaka de databaser som användaren inte angett
för exkludering.
En redigering av syntaxutformningen utfördes för att lyckas exkludera databasen
tempdb vi lade även till ett argument($ARG6$) för möjligheten att specificera flera databaser för exkludering.
$USER1$/check_mssql_health --server $HOSTADDRESS$$ARG1$ --username ’
$ARG2$’ --password ’$ARG3$’ --mode database-backup-age --warning
$ARG4$ --critical $ARG5$ --name=’ˆ(?!(tempdb$ARG6$))’ --regexp
20
Övervakning av databaser i virtuella miljöer
När det kommer till tjänsten failed-jobs så började vi med att kolla igenom dokumentationen av syntaxen för att se om det fanns ett sätt att inte generera ett larm då inga
jobs hade körts, men på grund av bristande dokumentation så hittades inget.
Vi letade sedan igenom Perl-skrivna check mssql health för ledtrådar som skulle kunna
hjälpa oss, men efter en stunds letande hittades en bit källkod (Figur 7) som tydde på
att det inte fanns några argument för att förhindra att ett larm genereras.
Figur 7: Källkod från check mssql health pluginet
Vi övervägde att skicka e-post till skaparen, men såg vid mallen för support att man
borde inkludera versionen av skriptet. Detta fick oss att vända oss mot Laussers GitHub
[12], där de senaste ändringarna av pluginet publicerats.
Vi hittade en commit som införde den funktionalitet som eftersträvades, i Figur 8
nedan så visas de ändringar som gjorts. Denna version är dessvärre ej implementerad i
op5 ännu.
Figur 8: Ändring i check mssql health taget från GitHub
För att kunna använda den nya syntaxen på checkarna som skapats i testmiljön
med möjlighet att specificera instansnamn var vi tvungna att exportera till nya checkkommandon.
De nya checkarna som skapades har samma namn som de gamla, med undantaget att
de har ett prefix ’dd’ till exempel ‘dd check mssql health database-online’.
21
Övervakning av databaser i virtuella miljöer
Del 4.
Resultat
Data Ductus nuvarande övervakning är begränsad till operativsystemet som MSSQLservern ligger på, med några enstaka undantag där processer övervakas. För att lägga till
nya övervakade servrar så klonas de existerande objekten och alla services som önskas till
en ny host.
För att exportera arbetet från vår testmiljö används ett så kallat management pack
som innehåller specialutformade checkar samt alla kommandon de använder. Detta exporteras från testmiljöns op5 i JSON format, valideras och finslipas sedan för att förbereda
det för implementering i skarpa MSSQL-servrar. Management-paketet är bifogat som
Bilaga 2 i denna rapport.
Resultatet presenteras sedan och testas i Data Ductus produktionsmiljö för att verifiera att en eventuell implementering är möjlig. Management-paketet importeras, de
tjänster och syntaxkommandon som ska användas klonas över till en övervakningsmall.
Denna mall klonas i sin tur och används för att införa övervakning av nya MSSQL-servrar.
Vi skriver en not till op5’s supportavdelning angående uppdatering av check mssql
health plugin som sedan Data Ductus vidarebefordrar till op5 via deras kontaktpersoner.
Utöver denna rapport så dokumenterades vårt arbete för att underlätta hantering och
implementering av övervakningen. Där dokumenterades bland annat vilka variabler och
argument som kan användas för att definiera till exempel instanser. Vi tog även fram en
lista med de mest intressanta checkarna, vad de gör samt rekommenderade tröskelvärden,
denna finns att läsa i Bilaga 1.
22
Övervakning av databaser i virtuella miljöer
Graferna från vCenter jämfördes med motsvarande grafer ur op5-miljön. Nedan redovisas skillnaden mellan op5’s check mssql health ’CPU-busy’ (Figur 9) och vCenter
servers ’CPU usage in MHz’ (Figur 10).
Figur 9: Graf från op5 som beskriver processoranvändning av en SQL server
Figur 10: Graf från vCenter som beskriver processoranvändning av en SQL server
23
Övervakning av databaser i virtuella miljöer
Del 5.
Diskussion & Analys
Efter de tester som utförts i resultat-delen av rapporten så står det klart att våran lösning
är redo att användas i produktionsmiljöer för en ökad övervakning på företagets MSSQLservrar. Det kvarstår fortfarande finjusteringar som att kalibrera de tröskelvärden då en
check ska varna eller gå in i ett kritiskt läge. Detta kalibreras i efterhand då man fått en
bättre uppfattning om standardvärden, dessa kan även skilja sig från server till server.
I framtiden får vi uppmärksamma om op5 tar vårt råd och uppdaterar kommandot check mssql health i sin övervaknings-lösning. Detta skulle leda till en ökning av
funktionalitet samt att problemet med att failed-jobs visas som ett kritiskt värde när
inga underhållsjobb används på servern, enkelt skulle gå att lösa med hjälp av –mitigate
flaggan i check-kommandot.
En möjlighet för generalisering är att skapa en hostgroup för de kommandon som är
generella för varje MSSQL server, det vill säga de checkar som inte tar ett instansnamn,
då dessa med största sannolikhet är olika från host till host. En hostgroup innehåller
en grupp med services som kan appliceras på host-objekt, men som ej går att ändra på
hostnivå. Övervakning i op5 fungerar så att efter att man lagt till en service så tar man
sällan bort den, och ingen mer konfiguration behöver heller utföras.
Nackdelen med användningen av checkar som administreras på hostnivå är att variabler
måste ändras på servicenivå för varje servicekommando, vilket innebär mycket administration med hundratals övervakade objekt.
När det kommer till hostobjekt i op5 så kan säkerheten ökas genom att använda
krypterade användarnamn och lösenord för lagring i variabler, då klartextlösenord (även
om de endast är åtkomliga med rättigheter) är ett säkerhetshål. DBD::Sybase modulen i
Perl är baserad på FreeTDS som i de tidiga versionerna skickar lösenord i klartext. Det
är därför viktigt att editera filen ’freetds.conf’ och ändra versionen från 4.x till 8.0.
I nuläget så använder Data Ductus kloning av ett liknande serverobjekt i op5 för att
lägga till en ny host. Detta kan leda till överflödig administration på grund av att man
måste ändra tröskelvärden för varningar och kritiska lägen specifikt för varje host. Istället
skulle man kunna använda variabler som sedan propageras ut till nya hostar. Variabler
går i op5 att specificera direkt på servicenivå eller på hostnivå för att sedan hämtas och
användas i check-kommandon.
För att administrera en stor mängd objekt samtidigt så kan man använda op5’s API
(Application Programming Interface) och sedan skapa ett script i till exempel Python.
Eftersom Data Ductus har så många objekt i deras miljö så underlättar detta enormt. Vi
hade gärna laborerat med implementering av vår lösning via API men dessvärre fanns
det inte tid nog för detta.
24
Övervakning av databaser i virtuella miljöer
Med våra undersökningar som grund står det klart att från ett NMS-perspektiv är det
inte någon skillnad mellan övervakningen av virtuella och fysiska enheter. Båda fungerar
på samma sätt och använder samma lösningar för att kommunicera med övervakningsservern.
Avslutningsvis kan vi dra slutsatsen att när det gäller övervakning i VMware och op5
är de väldigt annorlunda och har båda två brister och fördelar. op5 ger en mycket bra
överblick och kan övervaka flertalet mer tjänster än vad VMware’s egna lösning klarar.
Däremot gör VMwares övervakning betydligt bättre grafer och är mer flexibel när det
gäller att skapa rapporter av dessa.
VMwares lösning för övervakning ligger närmare hostobjekten än vad op5 gör och
klarar endast av att övervaka hårdvara. op5 i kontrast till VMwares lösning använder sig
av IP-nätverket och mjukvaruagenter för att samla information och detta gör att det blir
en överlägsen lösning trots sina bristande grafer.
25
Övervakning av databaser i virtuella miljöer
Förkortningar och förklaringar
HP - Hewlett-Packard, amerikanskt företag som tillhandahåller tjänster, hård- och mjukvara.
IP - Internet Protocol, protokoll för överföring av data över internet.
MSSQL - Microsoft Structured Query Language, Microsofts version av frågespråket SQL.
NIC - Networking Interface Controller, fysiskt kort för uppkoppling mot ett nätverk.
NMS - Network Management Station, övervakningsenhet som hämtar information från
nätverkselement
RAID - Redundant Array of Independent Disks, backuplösning på hårdvarunivå.
RAM - Random Access Memory, fysiskt minne som används för att lagra information
under programdrift.
SAN - Storage Area Network, nätverkstyp med syftet att tillhandahålla datalagring.
SQL - Structured Query Language, frågespråk som används för att hämta information
från databaser.
SSD - Solid-State Drive, flashbaserat sekundärminne för datalagring.
Virtual Appliance, grundlösning redo för implementering som kräver minimal konfiguration.
VLAN - Virtual Local Area Network, virtuellt lan som används bland annat för att
separera och klassificera olika trafiktyper.
VM - Virtual Machine, virtuell miljö som emulerar hårdvara för att spara på resurser.
26
Referenser
[1] VMware - ESXi [Online] (Läst 2015-05-18)
URL: http://www.vmware.se/products/esxi-and-esx/overview.html
[2] VMware - Introduction to VMware vSphere [Online] (Läst 2015-05-18)
URL: http://www.vmware.se/pdf/vsphere4/r40/vsp 40 intro vs.pdf
[3] VMware - Virtual Networking Concepts [Online] (Läst 2015-05-18)
URL: http://www.vmware.com/files/pdf/virtual networking concepts.pdf
[4] HP - 3PAR Storage [Online] (Läst 2015-05-19)
URL: http://h18006.www1.hp.com/storage/pdfs/4AA3-2542ENW.pdf
[5] Microsoft - SQL server documentation [Online] (Läst 2015-05-08)
URL: https://msdn.microsoft.com/en-us/library/bb545450.aspx
[6] Nagios - NRPE Documentation [Online] (Läst 2015-05-20)
URL: http://nagios.sourceforge.net/docs/nrpe/NRPE.pdf
[7] JSON - Introducing JSON [Online] (Läst 2015-05-17)
URL: http://json.org/
[8] Perl - Perl Documentation [Online] (Läst 2015-05-17)
URL: http://perldoc.perl.org/
[9] ConSol Labs - Gerhard Lausser, check mssql health [Online] (Läst 2015-05-12)
URL: http://labs.consol.de/lang/en/nagios/check mssql health
[10] VMware - SQL Server Best Practices Guide [Online] (Läst 2015-04-27)
URL:
https://www.vmware.com/files/pdf/solutions/SQL Server on VMwareBest Practices Guide.pdf
[11] FreeTDS - FreeTDS Documentation [Online] (Läst 2015-05-19)
URL: http://www.freetds.org/docs.html
[12] GitHub - Gerhard Lausser, check mssql health [Online] (Läst 2015-05-13)
URL: https://github.com/lausser/check mssql health
Bilagor
Bilaga 1 - ’MSSQL Counters’
Bilaga 2 - ’Management Pack’
Bilaga 1 - MSSQL Counters
Hög
Hög
Hög
Hög
Hög
Hög
Hög
Hög
Hög
Hög
Hög
Hög
Hög
Hög
Hög
Hög
Hög
Hög
Hög
Hög
Hög
Hög
Medel
Medel
Medel
Medel
Medel
Medel
Medel
Medel
Medel
Medel
Låg
Låg
Låg
Check_mssql_health_cpu-busy
Check_mssql_health_io-busy
Check_mssql_health_latches-waits
Check_mssql_health_latches-wait-time
Check_mssql_health_locks-waits
Check_mssql_health_locks-timeouts
Check_mssql_health_locks-deadlocks
Check_mssql_health_sql-recompilations
Check_mssql_health_mem-pool-data-buffer-hit-ratio
Check_mssql_health_page-life-expectancy
Check_mssql_health_free-list-stalls
Check_mssql_health_database-free_all
Check_mssql_health_database-free
Check_mssql_health_database-backup-age_all
Check_mssql_health_database-backup-age
Check_mssql_health_database-logbackup-age_all
Check_mssql_health_database-logbackup-age
Check_mssql_health_database-logfile-auto-growths_all
Check_mssql_health_database-logfile-auto-growths
Check_mssql_health_database-datafile-auto-growths_all
Check_mssql_health_database-datafile-auto-growths
Check_mssql_health_failed-jobs
Check_mssql_health_full-scans
Check_mssql_health_connected-users
Check_mssql_health_transactions_all
Check_mssql_health_transactions
Check_mssql_health_batch-requests
Check_mssql_health_sql-initcompilations
Check_mssql_health_database-online_all
Check_mssql_health_database-online
Check_mssql_health_database-file-auto-growths_all
Check_mssql_health_database-file-auto-growths
Check_mssql_health_total-server-memory
Check_mssql_health_lazy-writes
Check_mssql_health_checkpoint-pages
Antalet Flushed Dirty Pages per sekund
Antalet lazy writes per sekund
Primära minnet som är reserverat för SQL-Servern
Antalet auto grow events av data/log-filer de senaste n minuterna för en specifik databas
Antalet auto grow events av data/log-filer de senaste n minuterna för alla databaser
Kollar om specificerad database är online och accepterar anslutningar
Kollar om alla databaser är online och accepterar anslutningar
Antalet initial compilations per sekund
Antalet batch requests per sekund
Antalet transaktioner per sekund för specificerad databas
Antalet transaktioner per sekund för alla databaser
Antalet anslutna användare
Antalet full table scans per sekund
Antalet jobb som inte kunde avslutas korrekt de senaste n minuterna
Antalet auto grow events av datafiler de senaste n minuterna för en specificerad databas
Antalet auto grow events av datafiler de senaste n minuterna för alla databaser
Antalet auto grow events av logfiler de senaste n minuterna för en specificerad databas
Antalet auto grow events av logfiler de senaste n minuterna för alla databaser
Tid(i timmar) sedan senaste backup av databasloggen (för en specificerad databas)
Tid(i timmar) sedan senaste backup av databasloggen (visar alla databaser)
Tid(i timmar) sedan senaste backup av databasen (för en specificerad databas)
Tid(i timmar) sedan senaste backup av databasen (visar alla databaser)
Ledigt utrymme i databasen (specificera databas)
Ledigt utrymme i databaserna (returnerar alla databaser)
Antalet lediga list stalls per sekund
Genomsnittliga tiden som en sida stannar i minnet
Data buffer cache hit ratio
Antalet re-compilations per sekund
Antalet Deadlocks per sekund
Antalet lock-requests per sekund som resulterade i en timeout
Antalet lock-requests per sekund som inte kunde utföras
Medeltiden ett latch-request måste vänta innan det kan uppfyllas
Antalet latch-request per sekund, som inte kunde uppfyllas
TID IO är upptagen (%)
Tid CPU är upptagen (%)
Intresse Kommentar
Check
0..n
0..n
0..n
0..n
0..n
-
-
0..n
0..n
0..n
0..n
0..n
0..n
0..n
0..n
[0..n]
0..n
[0..n]
0..n
[0..n]
0..n
[0..n]
0%..100%
[0%..100%]
0..n
0..n
0%..100%
0..n
0..n
0..n
0..n
0..n ms
0..n
0%..100%
0%..100%
Tröskelnivå
-
20
-
1
1
-
-
100
100
1000
10000
50
100
1
1
1
1
1
-
-
-
-
5:
5:
4
300:
90:
1
1
1
100
1
10
80
80
Varning
-
40
-
5
5
-
-
200
200
5000
50000
80
500
5
5
5
5
5
-
-
-
-
2:
2:
10
180:
80:
10
5
5
500
5
50
90
90
Kritisk
Låg
Låg
Låg
Låg
Låg
Låg
Låg
Låg
Låg
Låg
Låg
Låg
Låg
Check_mssql_health_database-file-auto-shrinks_all
Check_mssql_health_database-file-auto-shrinks
Check_mssql_health_database-logfile-auto-shrinks_all
Check_mssql_health_database-logfile-auto-shrinks
Check_mssql_health_database-datafile-auto-shrinks_all
Check_mssql_health_database-datafile-auto-shrinks
Check_mssql_health_database-file-dbcc-shrinks_all
Check_mssql_health_database-file-dbcc-shrinks
Check_mssql_health_sql
Check_mssql_health_sql-runtime
Check_mssql_health_list-databases
Check_mssql_health_list-datafiles
Check_mssql_health_list-locks
[0..n]
[0..n]
0..n
[0..n]
0..n
[0..n]
Returnerar en lista med locks
Returnerar en lista med alla datafiler
Returnerar en lista med alla databaser
Körtiden av ett användar-anpassat SQL-anrop i sekunder
Resultatet av ett användar-anpassat SQL-anrop
-
-
-
-
-
Antalet auto shrink events av data/log-filer de senaste n minuterna för en specificerad databa 0..n
Antalet auto shrink events av data/log-filer de senaste n minuterna för alla databaser
Antalet auto shrink events av datafiler de senaste n minuterna för en specificerad databas
Antalet auto shrink events av datafiler de senaste n minuterna för alla databaser
Antalet auto shrink events av logfiler de senaste n minuterna för en specificerad databas
Antalet auto shrink events av logfiler de senaste n minuterna för alla databaser
Antalet auto shrink events av databasfiler de senaste n minuterna för en specificerad databa 0..n
Antalet auto shrink events av databasfiler de senaste n minuterna för alla databaser
-
-
-
-
-
1
1
1
1
1
1
1
1
-
-
-
-
-
5
5
5
5
5
5
5
5
Bilaga 2 - Management Pack
{
"management_pack": {
"management_pack": {
"management_pack_name": "DD Microsoft SQL Template Host",
"hostgroup": "DD Microsoft SQL Hosts",
"icon": "host_database_mssql.png",
"description": "Adds monitoring of several important metrics with the
check_mssql_health plugin on a Microsoft SQL Server.",
"version": 3,
"_DATABASEPWD": "Password for the SQL instance",
"_DATABASEUSR": "Username for the SQL instance"
},
"hostgroup": {
"hostgroup_name": "DD Microsoft SQL Hosts",
"alias": "Data Ductus MSSQL Servers",
"notes": "Monitoring several metrics of an MSSQL server with
check_mssql_health."
},
"services": [
{
"hostgroup_name": "DD Microsoft SQL Hosts",
"service_description": "Batch-requests",
"check_command": "dd_check_mssql_health_batch-requests",
"check_command_args": "$_SERVICEINSTANCE$!$_HOSTDATABASEUSR$!
$_HOSTDATABASEPWD$!100!200",
"parallelize_check": true,
"obsess": true,
"_INSTANCE": "\\\\MSSQLSERVER"
},
{
"hostgroup_name": "DD Microsoft SQL Hosts",
"service_description": "Connected-users",
"check_command": "dd_check_mssql_health_connected-users",
"check_command_args": "$_SERVICEINSTANCE$!$_HOSTDATABASEUSR$!
$_HOSTDATABASEPWD$!50!80",
"parallelize_check": true,
"obsess": true,
"_INSTANCE": "\\\\MSSQLSERVER"
},
{
"hostgroup_name": "DD Microsoft SQL Hosts",
"service_description": "CPU-Busy",
"check_command": "check_mssql_health_cpu-busy",
"check_command_args": "$_HOSTDATABASEUSR$!$_HOSTDATABASEPWD$!80!90",
"parallelize_check": true,
"obsess": true
},
{
"hostgroup_name": "DD Microsoft SQL Hosts",
"service_description": "Database-backup-age-all",
"check_command": "dd_check_mssql_health_database-backup-age_all",
"check_command_args": "$_SERVICEINSTANCE$!$_HOSTDATABASEUSR$!
$_HOSTDATABASEPWD$!24!48",
"parallelize_check": true,
"obsess": true,
"_INSTANCE": "\\\\MSSQLSERVER"
},
{
"hostgroup_name": "DD Microsoft SQL Hosts",
"service_description": "Database-datafile-auto-growths-all",
"check_command": "dd_check_mssql_health_database-datafile-auto-growths_all
",
"check_command_args": "$_SERVICEINSTANCE$!$_HOSTDATABASEUSR$!
$_HOSTDATABASEPWD$!1!5",
"parallelize_check": true,
"obsess": true,
"_INSTANCE": "\\\\MSSQLSERVER"
},
{
"hostgroup_name": "DD Microsoft SQL Hosts",
"service_description": "Database-file-auto-growths-all",
"check_command": "dd_check_mssql_health_database-file-auto-growths_all",
"check_command_args": "$_SERVICEINSTANCE$!$_HOSTDATABASEUSR$!
$_HOSTDATABASEPWD$!1!5",
"parallelize_check": true,
"obsess": true,
"_INSTANCE": "\\\\MSSQLSERVER"
},
{
"hostgroup_name": "DD Microsoft SQL Hosts",
"service_description": "Database-free-all",
"check_command": "dd_check_mssql_health_database-free_all",
"check_command_args": "$_SERVICEINSTANCE$!$_HOSTDATABASEUSR$!
$_HOSTDATABASEPWD$!5:!2:",
"parallelize_check": true,
"obsess": true,
"_INSTANCE": "\\\\MSSQLSERVER"
},
{
"hostgroup_name": "DD Microsoft SQL Hosts",
"service_description": "Database-logbackup-age-all",
"check_command": "dd_check_mssql_health_database-logbackup-age_all",
"check_command_args": "$_SERVICEINSTANCE$!$_HOSTDATABASEUSR$!
$_HOSTDATABASEPWD$!1!5",
"parallelize_check": true,
"obsess": true,
"_INSTANCE": "\\\\MSSQLSERVER"
},
{
"hostgroup_name": "DD Microsoft SQL Hosts",
"service_description": "Database-logfile-auto-growths-all",
"check_command": "dd_check_mssql_health_database-logfile-auto-growths_all",
"check_command_args": "$_SERVICEINSTANCE$!$_HOSTDATABASEUSR$!
$_HOSTDATABASEPWD$!1!5",
"parallelize_check": true,
"obsess": true,
"_INSTANCE": "\\\\MSSQLSERVER"
},
{
"hostgroup_name": "DD Microsoft SQL Hosts",
"service_description": "Database-online-all",
"check_command": "dd_check_mssql_health_database-online_all",
"check_command_args": "$_SERVICEINSTANCE$!$_HOSTDATABASEUSR$!
$_HOSTDATABASEPWD$",
"parallelize_check": true,
"obsess": true,
"_INSTANCE": "\\\\MSSQLSERVER"
},
{
"hostgroup_name": "DD Microsoft SQL Hosts",
"service_description": "Failed-jobs",
"check_command": "dd_check_mssql_health_failed-jobs",
"check_command_args": "$_SERVICEINSTANCE$!$_HOSTDATABASEUSR$!
$_HOSTDATABASEPWD$!1!5",
"parallelize_check": true,
"obsess": true,
"_INSTANCE": "\\\\MSSQLSERVER"
},
{
"hostgroup_name": "DD Microsoft SQL Hosts",
"service_description": "Free-list-stalls",
"check_command": "dd_check_mssql_health_free-list-stalls",
"check_command_args": "$_SERVICEINSTANCE$!$_HOSTDATABASEUSR$!
$_HOSTDATABASEPWD$!4!10",
"parallelize_check": true,
"obsess": true,
"_INSTANCE": "\\\\MSSQLSERVER"
},
{
"hostgroup_name": "DD Microsoft SQL Hosts",
"service_description": "Full-scans",
"check_command": "dd_check_mssql_health_full-scans",
"check_command_args": "$_SERVICEINSTANCE$!$_HOSTDATABASEUSR$!
$_HOSTDATABASEPWD$!100!500",
"parallelize_check": true,
"obsess": true,
"_INSTANCE": "\\\\MSSQLSERVER"
},
{
"hostgroup_name": "DD Microsoft SQL Hosts",
"service_description": "IO-Busy",
"check_command": "dd_check_mssql_health_io-busy",
"check_command_args": "$_SERVICEINSTANCE$!$_HOSTDATABASEUSR$!
$_HOSTDATABASEPWD$!80!90",
"parallelize_check": true,
"obsess": true,
"_INSTANCE": "\\\\MSSQLSERVER"
},
{
"hostgroup_name": "DD Microsoft SQL Hosts",
"service_description": "Latches-wait-time",
"check_command": "dd_check_mssql_health_latches-wait-time",
"check_command_args": "$_SERVICEINSTANCE$!$_HOSTDATABASEUSR$!
$_HOSTDATABASEPWD$!1!5",
"parallelize_check": true,
"obsess": true,
"_INSTANCE": "\\\\MSSQLSERVER"
},
{
"hostgroup_name": "DD Microsoft SQL Hosts",
"service_description": "Latches-waits",
"check_command": "dd_check_mssql_health_latches-waits",
"check_command_args": "$_SERVICEINSTANCE$!$_HOSTDATABASEUSR$!
$_HOSTDATABASEPWD$!10!50",
"parallelize_check": true,
"obsess": true,
"_INSTANCE": "\\\\MSSQLSERVER"
},
{
"hostgroup_name": "DD Microsoft SQL Hosts",
"service_description": "Locks-deadlocks",
"check_command": "dd_check_mssql_health_locks-deadlocks",
"check_command_args": "$_SERVICEINSTANCE$!$_HOSTDATABASEUSR$!
$_HOSTDATABASEPWD$!1!5",
"parallelize_check": true,
"obsess": true,
"_INSTANCE": "\\\\MSSQLSERVER"
},
{
"hostgroup_name": "DD Microsoft SQL Hosts",
"service_description": "Locks-timeouts",
"check_command": "dd_check_mssql_health_locks-timeouts",
"check_command_args": "$_SERVICEINSTANCE$!$_HOSTDATABASEUSR$!
$_HOSTDATABASEPWD$!1!5",
"parallelize_check": true,
"obsess": true,
"_INSTANCE": "\\\\MSSQLSERVER"
},
{
"hostgroup_name": "DD Microsoft SQL Hosts",
"service_description": "Locks-waits",
"check_command": "dd_check_mssql_health_locks-waits",
"check_command_args": "$_SERVICEINSTANCE$!$_HOSTDATABASEUSR$!
$_HOSTDATABASEPWD$!100!500",
"parallelize_check": true,
"obsess": true,
"_INSTANCE": "\\\\MSSQLSERVER"
},
{
"hostgroup_name": "DD Microsoft SQL Hosts",
"service_description": "Mem-pool-data-buffer-hit-ratio",
"check_command": "dd_check_mssql_health_mem-pool-data-buffer-hit-ratio",
"check_command_args": "$_SERVICEINSTANCE$!$_HOSTDATABASEUSR$!
$_HOSTDATABASEPWD$!90:!80:",
"parallelize_check": true,
"obsess": true,
"_INSTANCE": "\\\\MSSQLSERVER"
},
{
"hostgroup_name": "DD Microsoft SQL Hosts",
"service_description": "Page-life-expectancy",
"check_command": "dd_check_mssql_health_page-life-expectancy",
"check_command_args": "$_SERVICEINSTANCE$!$_HOSTDATABASEUSR$!
$_HOSTDATABASEPWD$!300:!180:",
"parallelize_check": true,
"obsess": true,
"_INSTANCE": "\\\\MSSQLSERVER"
},
{
"hostgroup_name": "DD Microsoft SQL Hosts",
"service_description": "SQL-initcompilations",
"check_command": "dd_check_mssql_health_sql-initcompilations",
"check_command_args": "$_SERVICEINSTANCE$!$_HOSTDATABASEUSR$!
$_HOSTDATABASEPWD$!100!200",
"parallelize_check": true,
"obsess": true,
"_INSTANCE": "\\\\MSSQLSERVER"
},
{
"hostgroup_name": "DD Microsoft SQL Hosts",
"service_description": "SQL-Recompilations",
"check_command": "dd_check_mssql_health_sql-recompilations",
"check_command_args": "$_SERVICEINSTANCE$!$_HOSTDATABASEUSR$!
$_HOSTDATABASEPWD$!1!5",
"parallelize_check": true,
"obsess": true,
"_INSTANCE": "\\\\MSSQLSERVER"
},
{
"hostgroup_name": "DD Microsoft SQL Hosts",
"service_description": "Transactions-all",
"check_command": "dd_check_mssql_health_transactions_all",
"check_command_args": "$_SERVICEINSTANCE$!$_HOSTDATABASEUSR$!
$_HOSTDATABASEPWD$!10000!50000",
"parallelize_check": true,
"obsess": true,
"_INSTANCE": "\\\\MSSQLSERVER"
}
],
"commands": [
{
"command_name": "dd_check_mssql_health_batch-requests",
"command_line": "$USER1$/check_mssql_health --server $HOSTADDRESS$$ARG1$ -username ’$ARG2$’ --password ’$ARG3$’ --mode batch-requests --warning
$ARG4$ --critical $ARG5$"
},
{
"command_name": "dd_check_mssql_health_connected-users",
"command_line": "$USER1$/check_mssql_health --server $HOSTADDRESS$$ARG1$ -username ’$ARG2$’ --password ’$ARG3$’ --mode connected-users --warning
$ARG4$ --critical $ARG5$"
},
{
"command_name": "check_mssql_health_cpu-busy",
"command_line": "$USER1$/check_mssql_health --server $HOSTADDRESS$ -username ’$ARG1$’ --password ’$ARG2$’ --mode cpu-busy --warning $ARG3$
--critical $ARG4$"
},
{
"command_name": "dd_check_mssql_health_database-backup-age_all",
"command_line": "$USER1$/check_mssql_health --server $HOSTADDRESS$$ARG1$ -username ’$ARG2$’ --password ’$ARG3$’ --mode database-backup-age --
warning $ARG4$ --critical $ARG5$ --name=’ˆ(?!(tempdb$ARG6$))’ --regexp"
},
{
"command_name": "dd__database-datafile-auto-growths_all",
"command_line": "$USER1$/check_mssql_health --server $HOSTADDRESS$$ARG1$ -username ’$ARG2$’ --password ’$ARG3$’ --mode database-datafile-autogrowths --warning $ARG4$ --critical $ARG5$"
},
{
"command_name": "dd_check_mssql_health_database-file-auto-growths_all",
"command_line": "$USER1$/check_mssql_health --server $HOSTADDRESS$$ARG1$ -username ’$ARG2$’ --password ’$ARG3$’ --mode database-file-auto-growths
--warning $ARG4$ --critical $ARG5$"
},
{
"command_name": "dd_check_mssql_health_database-free_all",
"command_line": "$USER1$/check_mssql_health --server $HOSTADDRESS$$ARG1$ -username ’$ARG2$’ --password ’$ARG3$’ --mode database-free --warning
$ARG4$ --critical $ARG5$"
},
{
"command_name": "dd_check_mssql_health_database-logbackup-age_all",
"command_line": "$USER1$/check_mssql_health --server $HOSTADDRESS$$ARG1$ -username ’$ARG2$’ --password ’$ARG3$’ --mode database-logbackup-age -warning $ARG4$ --critical $ARG5$ --name=’ˆ(?!(tempdb$ARG6$))’ --regexp"
},
{
"command_name": "dd_check_mssql_health_database-logfile-auto-growths_all",
"command_line": "$USER1$/check_mssql_health --server $HOSTADDRESS$$ARG1$ -username ’$ARG2$’ --password ’$ARG3$’ --mode database-logfile-autogrowths --warning $ARG4$ --critical $ARG5$"
},
{
"command_name": "dd_check_mssql_health_database-online_all",
"command_line": "$USER1$/check_mssql_health --server $HOSTADDRESS$$ARG1$ -username ’$ARG2$’ --password ’$ARG3$’ --mode database-online --warning
$ARG4$ --critical $ARG5$"
},
{
"command_name": "dd_check_mssql_health_failed-jobs",
"command_line": "$USER1$/check_mssql_health --server $HOSTADDRESS$$ARG1$ -username ’$ARG2$’ --password ’$ARG3$’ --mode failed-jobs --warning
$ARG4$ --critical $ARG5$"
},
{
"command_name": "dd_check_mssql_health_free-list-stalls",
"command_line": "$USER1$/check_mssql_health --server $HOSTADDRESS$$ARG1$ -username ’$ARG2$’ --password ’$ARG3$’ --mode free-list-stalls --warning
$ARG4$ --critical $ARG5$"
},
{
"command_name": "dd_check_mssql_health_full-scans",
"command_line": "$USER1$/check_mssql_health --server $HOSTADDRESS$$ARG1$ -username ’$ARG2$’ --password ’$ARG3$’ --mode full-scans --warning $ARG4$
--critical $ARG5$"
},
{
"command_name": "dd_check_mssql_health_io-busy",
"command_line": "$USER1$/check_mssql_health --server $HOSTADDRESS$$ARG1$ -username ’$ARG2$’ --password ’$ARG3$’ --mode io-busy --warning $ARG4$ -critical $ARG5$"
},
{
"command_name": "dd_check_mssql_health_latches-wait-time",
"command_line": "$USER1$/check_mssql_health --server $HOSTADDRESS$$ARG1$ -username ’$ARG2$’ --password ’$ARG3$’ --mode latches-wait-time --warning
$ARG4$ --critical $ARG5$"
},
{
"command_name": "dd_check_mssql_health_latches-waits",
"command_line": "$USER1$/check_mssql_health --server $HOSTADDRESS$$ARG1$ -username ’$ARG2$’ --password ’$ARG3$’ --mode latches-waits --warning
$ARG4$ --critical $ARG5$"
},
{
"command_name": "dd_check_mssql_health_locks-deadlocks",
"command_line": "$USER1$/check_mssql_health --server $HOSTADDRESS$$ARG1$ -username ’$ARG2$’ --password ’$ARG3$’ --mode locks-deadlocks --warning
$ARG4$ --critical $ARG5$"
},
{
"command_name": "dd_check_mssql_health_locks-timeouts",
"command_line": "$USER1$/check_mssql_health --server $HOSTADDRESS$$ARG1$ -username ’$ARG2$’ --password ’$ARG3$’ --mode locks-timeouts --warning
$ARG4$ --critical $ARG5$"
},
{
"command_name": "dd_check_mssql_health_locks-waits",
"command_line": "$USER1$/check_mssql_health --server $HOSTADDRESS$$ARG1$ -username ’$ARG2$’ --password ’$ARG3$’ --mode locks-waits --warning
$ARG4$ --critical $ARG5$"
},
{
"command_name": "dd_check_mssql_health_mem-pool-data-buffer-hit-ratio",
"command_line": "$USER1$/check_mssql_health --server $HOSTADDRESS$$ARG1$ -username ’$ARG2$’ --password ’$ARG3$’ --mode mem-pool-data-buffer-hitratio --warning $ARG4$ --critical $ARG5$"
},
{
"command_name": "dd_check_mssql_health_page-life-expectancy",
"command_line": "$USER1$/check_mssql_health --server $HOSTADDRESS$$ARG1$ -username ’$ARG2$’ --password ’$ARG3$’ --mode page-life-expectancy -warning $ARG4$ --critical $ARG5$"
},
{
"command_name": "dd_check_mssql_health_sql-initcompilations",
"command_line": "$USER1$/check_mssql_health --server $HOSTADDRESS$$ARG1$ -username ’$ARG2$’ --password ’$ARG3$’ --mode sql-initcompilations -warning $ARG4$ --critical $ARG5$"
},
{
"command_name": "dd_check_mssql_health_sql-recompilations",
"command_line": "$USER1$/check_mssql_health --server $HOSTADDRESS$$ARG1$ -username ’$ARG2$’ --password ’$ARG3$’ --mode sql-recompilations -warning $ARG4$ --critical $ARG5$"
},
{
"command_name": "dd_check_mssql_health_transactions_all",
"command_line": "$USER1$/check_mssql_health --server $HOSTADDRESS$$ARG1$ -username ’$ARG2$’ --password ’$ARG3$’ --mode transactions --warning
$ARG4$ --critical $ARG5$"
}
]
},
"changes": [
{
"version": 3,
"description": "This is a management pack"
}
],
"vendor": ""
}