'# SQL Server monitorization plugin for Pandora FMS agent
'# Author: Manuel A. GulĂn Bejarano
'# Version: 2.0
'# Date: 26/04/2013
'#
'# This program is free software: you can redistribute it and/or modify
'# it under the terms of the GNU General Public License as published by
'# the Free Software Foundation, either version 3 of the License, or
'# (at your option) any later version.
'#
'# This program is distributed in the hope that it will be useful,
'# but WITHOUT ANY WARRANTY; without even the implied warranty of
'# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
'# GNU General Public License for more details.
'#
'# You should have received a copy of the GNU General Public License
'# along with this program. If not, see .
'#
'#
'# Load with:
'# module_plugin cscript.exe //B "%ProgramFiles%\pandora_agent\plugins\sqlserver_plugin.vbs"
'#
'# On SQL Server a user with at least "VIEW SERVER STATE" privileges is needed. It can be created with:
'# CREATE LOGIN []
'# WITH PASSWORD=N'',
'# DEFAULT_DATABASE=[master],
'# DEFAULT_LANGUAGE=[us_english],
'# CHECK_EXPIRATION=OFF, CHECK_POLICY=OFF
'# GRANT VIEW SERVER STATE to []
'#
'# The drivers available on the system can be viewed in the "Data Sources (ODBC)" section
Option Explicit
'On Error Resume Next
Dim aux, args
' Class to define connection settings
Class SQL_CONNECTION_PROPERTIES_CLASS
Dim SQL_DRIVER, SQL_USER, SQL_PASS, SQL_SERVER, SQL_DB
End Class
' Define default connection settings
Dim SQL_CONN_PRT
Set SQL_CONN_PRT = New SQL_CONNECTION_PROPERTIES_CLASS
SQL_CONN_PRT.SQL_DRIVER = "{SQL Server Native Client 10.0}"
SQL_CONN_PRT.SQL_USER = "user"
SQL_CONN_PRT.SQL_PASS = "pass"
SQL_CONN_PRT.SQL_SERVER = "(local)"
SQL_CONN_PRT.SQL_DB = "master"
' Parse command line arguments for specific connection settings
Set args = WScript.Arguments
If args.Count > 0 Then
For aux = 1 To args.Count
If aux = 1 Then
SQL_CONN_PRT.SQL_USER = args.Item(aux-1)
ElseIf aux = 2 Then
SQL_CONN_PRT.SQL_PASS = args.Item(aux-1)
ElseIf aux = 3 Then
SQL_CONN_PRT.SQL_SERVER = args.Item(aux-1)
ElseIf aux = 4 Then
SQL_CONN_PRT.SQL_DRIVER = args.Item(aux-1)
End If
Next
End If
' Class to define query skeletons
Class SQL_QUERY_SKEL_CLASS
Dim BASE, INST, OBJE, DIVI, AWTM, CHRP
End Class
Dim SQL_QRS
Set SQL_QRS = New SQL_QUERY_SKEL_CLASS
SQL_QRS.BASE = "SELECT cntr_value " &_
"FROM sys.dm_os_performance_counters " &_
"WHERE counter_name='%s1' " &_
"AND instance_name='';"
SQL_QRS.INST = "SELECT cntr_value " &_
"FROM sys.dm_os_performance_counters " &_
"WHERE counter_name='%s1' " &_
"AND instance_name='%s2';"
SQL_QRS.OBJE = "SELECT cntr_value " &_
"FROM sys.dm_os_performance_counters " &_
"WHERE counter_name='%s1';"
SQL_QRS.DIVI = "WITH superior (cntr_value) AS ( " &_
"SELECT cntr_value " &_
"FROM sys.dm_os_performance_counters " &_
"WHERE counter_name LIKE '%s1 %' AND instance_name='%s2') " &_
", inferior (cntr_value) AS ( " &_
"SELECT cntr_value " &_
"FROM sys.dm_os_performance_counters " &_
"WHERE counter_name LIKE '%s1 base%' AND instance_name='%s2') " &_
"SELECT CAST(CASE WHEN (i.cntr_value=0) THEN 100 " &_
"ELSE s.cntr_value/(i.cntr_value *%s3) END AS FLOAT) AS 'cntr_value' " &_
"FROM superior s, inferior i"
' Special query to get the Average Wait Time
SQL_QRS.AWTM = "WITH superior (cntr_value) AS ( " &_
"SELECT cntr_value " &_
"FROM sys.dm_os_performance_counters " &_
"WHERE counter_name LIKE 'Average Wait Time (ms)%' AND instance_name='%s2') " &_
", inferior (cntr_value) AS ( " &_
"SELECT cntr_value " &_
"FROM sys.dm_os_performance_counters " &_
"WHERE counter_name LIKE 'Average Wait Time Base%' AND instance_name='%s2') " &_
"SELECT CAST(CASE WHEN (i.cntr_value=0) THEN 100 " &_
"ELSE s.cntr_value/(i.cntr_value *%s3) END AS FLOAT) AS 'cntr_value' " &_
"FROM superior s, inferior i"
' Special query to get the Cache Hit Ratio
SQL_QRS.CHRP = "WITH superior (cntr_value) AS ( " &_
"SELECT cntr_value " &_
"FROM sys.dm_os_performance_counters " &_
"WHERE counter_name LIKE 'Cache Hit Ratio %' AND object_name LIKE 'SQLServer:Plan Cache%' AND instance_name='%s2') " &_
", inferior (cntr_value) AS ( " &_
"SELECT cntr_value " &_
"FROM sys.dm_os_performance_counters " &_
"WHERE counter_name LIKE 'Cache Hit Ratio Base%' AND object_name LIKE 'SQLServer:Plan Cache%' AND instance_name='%s2') " &_
"SELECT CAST(CASE WHEN (i.cntr_value=0) THEN 100 " &_
"ELSE s.cntr_value/(i.cntr_value *%s3) END AS FLOAT) AS 'cntr_value' " &_
"FROM superior s, inferior i"
' Class to define queries
Class MODULE_CONSTRUCTOR_CLASS
Dim name, description, ttype, data, unit, query, divide
Dim min_warn, max_warn, min_crit, max_crit
End Class
Dim PANDORA_MODULE(24)
' Buffer cache hit ratio info
Set PANDORA_MODULE(1) = New MODULE_CONSTRUCTOR_CLASS
PANDORA_MODULE(1).name = "SQLServer: Performance - Buffer cache hit ratio (%)"
PANDORA_MODULE(1).description = "Percentage of buffer cache hits"
PANDORA_MODULE(1).ttype = "generic_data"
PANDORA_MODULE(1).data = ""
PANDORA_MODULE(1).unit = "%"
PANDORA_MODULE(1).divide = "0.01"
'PANDORA_MODULE(1).min_warn = 0
'PANDORA_MODULE(1).max_warn = 0
'PANDORA_MODULE(1).min_crit = 0
'PANDORA_MODULE(1).max_crit = 0
PANDORA_MODULE(1).query = Replace(SQL_QRS.DIVI, "%s1", "Buffer cache hit ratio")
PANDORA_MODULE(1).query = Replace(PANDORA_MODULE(1).query, "%s2", "")
PANDORA_MODULE(1).query = Replace(PANDORA_MODULE(1).query, "%s3", PANDORA_MODULE(1).divide)
' Page lookups per second info
Set PANDORA_MODULE(2) = New MODULE_CONSTRUCTOR_CLASS
PANDORA_MODULE(2).name = "SQLServer: Performance - Page lookups per second (pl/s)"
PANDORA_MODULE(2).description = "Page lookups per second"
PANDORA_MODULE(2).ttype = "generic_data_inc"
PANDORA_MODULE(2).data = ""
PANDORA_MODULE(2).unit = "pl/s"
PANDORA_MODULE(2).divide = ""
'PANDORA_MODULE(2).min_warn = 0
'PANDORA_MODULE(2).max_warn = 0
'PANDORA_MODULE(2).min_crit = 0
'PANDORA_MODULE(2).max_crit = 0
PANDORA_MODULE(2).query = Replace(SQL_QRS.BASE, "%s1", "Page lookups/sec")
' Free pages info
Set PANDORA_MODULE(3) = New MODULE_CONSTRUCTOR_CLASS
PANDORA_MODULE(3).name = "SQLServer: Performance - Pages - Free pages (pf)"
PANDORA_MODULE(3).description = "Free pages"
PANDORA_MODULE(3).ttype = "generic_data"
PANDORA_MODULE(3).data = ""
PANDORA_MODULE(3).unit = "pf"
PANDORA_MODULE(3).divide = ""
'PANDORA_MODULE(3).min_warn = 0
'PANDORA_MODULE(3).max_warn = 0
'PANDORA_MODULE(3).min_crit = 0
'PANDORA_MODULE(3).max_crit = 0
PANDORA_MODULE(3).query = Replace(SQL_QRS.BASE, "%s1", "Free pages")
' Total pages info
Set PANDORA_MODULE(4) = New MODULE_CONSTRUCTOR_CLASS
PANDORA_MODULE(4).name = "SQLServer: Performance - Pages - Total pages (pt)"
PANDORA_MODULE(4).description = "Total pages"
PANDORA_MODULE(4).ttype = "generic_data"
PANDORA_MODULE(4).data = ""
PANDORA_MODULE(4).unit = "pt"
PANDORA_MODULE(4).divide = ""
'PANDORA_MODULE(4).min_warn = 0
'PANDORA_MODULE(4).max_warn = 0
'PANDORA_MODULE(4).min_crit = 0
'PANDORA_MODULE(4).max_crit = 0
PANDORA_MODULE(4).query = Replace(SQL_QRS.BASE, "%s1", "Total pages")
' Target pages info
Set PANDORA_MODULE(5) = New MODULE_CONSTRUCTOR_CLASS
PANDORA_MODULE(5).name = "SQLServer: Performance - Pages - Target pages (pta)"
PANDORA_MODULE(5).description = "Target pages"
PANDORA_MODULE(5).ttype = "generic_data"
PANDORA_MODULE(5).data = ""
PANDORA_MODULE(5).unit = "pta"
PANDORA_MODULE(5).divide = ""
'PANDORA_MODULE(5).min_warn = 0
'PANDORA_MODULE(5).max_warn = 0
'PANDORA_MODULE(5).min_crit = 0
'PANDORA_MODULE(5).max_crit = 0
PANDORA_MODULE(5).query = Replace(SQL_QRS.BASE, "%s1", "Target pages")
' Database pages info
Set PANDORA_MODULE(6) = New MODULE_CONSTRUCTOR_CLASS
PANDORA_MODULE(6).name = "SQLServer: Performance - Pages - Database pages (pd)"
PANDORA_MODULE(6).description = "Database pages"
PANDORA_MODULE(6).ttype = "generic_data"
PANDORA_MODULE(6).data = ""
PANDORA_MODULE(6).unit = "pd"
PANDORA_MODULE(6).divide = ""
'PANDORA_MODULE(6).min_warn = 0
'PANDORA_MODULE(6).max_warn = 0
'PANDORA_MODULE(6).min_crit = 0
'PANDORA_MODULE(6).max_crit = 0
PANDORA_MODULE(6).query = Replace(SQL_QRS.BASE, "%s1", "Database pages")
' Stolen pages info
Set PANDORA_MODULE(7) = New MODULE_CONSTRUCTOR_CLASS
PANDORA_MODULE(7).name = "SQLServer: Performance - Pages - Stolen pages (ps)"
PANDORA_MODULE(7).description = "Stolen pages"
PANDORA_MODULE(7).ttype = "generic_data"
PANDORA_MODULE(7).data = ""
PANDORA_MODULE(7).unit = "ps"
PANDORA_MODULE(7).divide = ""
'PANDORA_MODULE(7).min_warn = 0
'PANDORA_MODULE(7).max_warn = 0
'PANDORA_MODULE(7).min_crit = 0
'PANDORA_MODULE(7).max_crit = 0
PANDORA_MODULE(7).query = Replace(SQL_QRS.BASE, "%s1", "Stolen pages")
' Readahead pages per second info
Set PANDORA_MODULE(8) = New MODULE_CONSTRUCTOR_CLASS
PANDORA_MODULE(8).name = "SQLServer: Performance - Pages - Readahead pages (rap/s)"
PANDORA_MODULE(8).description = "Read ahead pages per second"
PANDORA_MODULE(8).ttype = "generic_data_inc"
PANDORA_MODULE(8).data = ""
PANDORA_MODULE(8).unit = "rap/s"
PANDORA_MODULE(8).divide = ""
'PANDORA_MODULE(8).min_warn = 0
'PANDORA_MODULE(8).max_warn = 0
'PANDORA_MODULE(8).min_crit = 0
'PANDORA_MODULE(8).max_crit = 0
PANDORA_MODULE(8).query = Replace(SQL_QRS.BASE, "%s1", "Readahead pages/sec")
' Page reads per second info
Set PANDORA_MODULE(9) = New MODULE_CONSTRUCTOR_CLASS
PANDORA_MODULE(9).name = "SQLServer: Performance - Pages - Page reads (rp/s)"
PANDORA_MODULE(9).description = "Page reads per second"
PANDORA_MODULE(9).ttype = "generic_data_inc"
PANDORA_MODULE(9).data = ""
PANDORA_MODULE(9).unit = "rp/s"
PANDORA_MODULE(9).divide = ""
'PANDORA_MODULE(9).min_warn = 0
'PANDORA_MODULE(9).max_warn = 0
'PANDORA_MODULE(9).min_crit = 0
'PANDORA_MODULE(9).max_crit = 0
PANDORA_MODULE(9).query = Replace(SQL_QRS.BASE, "%s1", "Page reads/sec")
' Checkpoint pages per second info
Set PANDORA_MODULE(10) = New MODULE_CONSTRUCTOR_CLASS
PANDORA_MODULE(10).name = "SQLServer: Performance - Pages - Checkpoint pages (chkpp/s)"
PANDORA_MODULE(10).description = "Checkpoint pages per second"
PANDORA_MODULE(10).ttype = "generic_data_inc"
PANDORA_MODULE(10).data = ""
PANDORA_MODULE(10).unit = "chkpp/s"
PANDORA_MODULE(10).divide = ""
'PANDORA_MODULE(10).min_warn = 0
'PANDORA_MODULE(10).max_warn = 0
'PANDORA_MODULE(10).min_crit = 0
'PANDORA_MODULE(10).max_crit = 0
PANDORA_MODULE(10).query = Replace(SQL_QRS.BASE, "%s1", "Checkpoint pages/sec")
' Page writes per second info
Set PANDORA_MODULE(11) = New MODULE_CONSTRUCTOR_CLASS
PANDORA_MODULE(11).name = "SQLServer: Performance - Pages - Page writes (pw/s)"
PANDORA_MODULE(11).description = "Page writes per second"
PANDORA_MODULE(11).ttype = "generic_data_inc"
PANDORA_MODULE(11).data = ""
PANDORA_MODULE(11).unit = "pw/s"
PANDORA_MODULE(11).divide = ""
'PANDORA_MODULE(11).min_warn = 0
'PANDORA_MODULE(11).max_warn = 0
'PANDORA_MODULE(11).min_crit = 0
'PANDORA_MODULE(11).max_crit = 0
PANDORA_MODULE(11).query = Replace(SQL_QRS.BASE, "%s1", "Page writes/sec")
' Page splits per second info
Set PANDORA_MODULE(12) = New MODULE_CONSTRUCTOR_CLASS
PANDORA_MODULE(12).name = "SQLServer: Performance - Pages - Page splits (ps/s)"
PANDORA_MODULE(12).description = "Page splits per second"
PANDORA_MODULE(12).ttype = "generic_data_inc"
PANDORA_MODULE(12).data = ""
PANDORA_MODULE(12).unit = "ps/s"
PANDORA_MODULE(12).divide = ""
'PANDORA_MODULE(12).min_warn = 0
'PANDORA_MODULE(12).max_warn = 0
'PANDORA_MODULE(12).min_crit = 0
'PANDORA_MODULE(12).max_crit = 0
PANDORA_MODULE(12).query = Replace(SQL_QRS.OBJE, "%s1", "Page Splits/sec")
' Page life expectancy info
Set PANDORA_MODULE(13) = New MODULE_CONSTRUCTOR_CLASS
PANDORA_MODULE(13).name = "SQLServer: Performance - Pages - Page life expectancy (s)"
PANDORA_MODULE(13).description = "Page life expectancy in seconds"
PANDORA_MODULE(13).ttype = "generic_data"
PANDORA_MODULE(13).data = ""
PANDORA_MODULE(13).unit = "s"
PANDORA_MODULE(13).divide = ""
'PANDORA_MODULE(13).min_warn = 0
'PANDORA_MODULE(13).max_warn = 0
'PANDORA_MODULE(13).min_crit = 0
'PANDORA_MODULE(13).max_crit = 0
PANDORA_MODULE(13).query = Replace(SQL_QRS.OBJE, "%s1", "Page life expectancy")
' Lock requests per second info
Set PANDORA_MODULE(14) = New MODULE_CONSTRUCTOR_CLASS
PANDORA_MODULE(14).name = "SQLServer: Performance - Locks - Lock requests (lr/s)"
PANDORA_MODULE(14).description = "Lock requests per second"
PANDORA_MODULE(14).ttype = "generic_data_inc"
PANDORA_MODULE(14).data = ""
PANDORA_MODULE(14).unit = "lr/s"
PANDORA_MODULE(14).divide = ""
'PANDORA_MODULE(14).min_warn = 0
'PANDORA_MODULE(14).max_warn = 0
'PANDORA_MODULE(14).min_crit = 0
'PANDORA_MODULE(14).max_crit = 0
PANDORA_MODULE(14).query = Replace(SQL_QRS.INST, "%s1", "Lock requests/sec")
PANDORA_MODULE(14).query = Replace(PANDORA_MODULE(14).query, "%s2", "_Total")
' Lock timeouts per second info
Set PANDORA_MODULE(15) = New MODULE_CONSTRUCTOR_CLASS
PANDORA_MODULE(15).name = "SQLServer: Performance - Locks - Lock timeouts (lt/s)"
PANDORA_MODULE(15).description = "Lock timeouts per second"
PANDORA_MODULE(15).ttype = "generic_data_inc"
PANDORA_MODULE(15).data = ""
PANDORA_MODULE(15).unit = "lt/s"
PANDORA_MODULE(15).divide = ""
'PANDORA_MODULE(15).min_warn = 0
'PANDORA_MODULE(15).max_warn = 0
'PANDORA_MODULE(15).min_crit = 0
'PANDORA_MODULE(15).max_crit = 0
PANDORA_MODULE(15).query = Replace(SQL_QRS.INST, "%s1", "Lock timeouts/sec")
PANDORA_MODULE(15).query = Replace(PANDORA_MODULE(14).query, "%s2", "_Total")
' Deadlocks per second info
Set PANDORA_MODULE(16) = New MODULE_CONSTRUCTOR_CLASS
PANDORA_MODULE(16).name = "SQLServer: Performance - Locks - Deadlocks (dl/s)"
PANDORA_MODULE(16).description = "Deadlocks per second"
PANDORA_MODULE(16).ttype = "generic_data_inc"
PANDORA_MODULE(16).data = ""
PANDORA_MODULE(16).unit = "dl/s"
PANDORA_MODULE(16).divide = ""
'PANDORA_MODULE(16).min_warn = 0
'PANDORA_MODULE(16).max_warn = 0
'PANDORA_MODULE(16).min_crit = 0
'PANDORA_MODULE(16).max_crit = 0
PANDORA_MODULE(16).query = Replace(SQL_QRS.INST, "%s1", "Number of Deadlocks/sec")
PANDORA_MODULE(16).query = Replace(PANDORA_MODULE(16).query, "%s2", "_Total")
' Lock waits per second info
Set PANDORA_MODULE(17) = New MODULE_CONSTRUCTOR_CLASS
PANDORA_MODULE(17).name = "SQLServer: Performance - Locks - Lock waits (lw/s)"
PANDORA_MODULE(17).description = "Lock waits per second"
PANDORA_MODULE(17).ttype = "generic_data_inc"
PANDORA_MODULE(17).data = ""
PANDORA_MODULE(17).unit = "lw/s"
PANDORA_MODULE(17).divide = ""
'PANDORA_MODULE(17).min_warn = 0
'PANDORA_MODULE(17).max_warn = 0
'PANDORA_MODULE(17).min_crit = 0
'PANDORA_MODULE(17).max_crit = 0
PANDORA_MODULE(17).query = Replace(SQL_QRS.INST, "%s1", "Lock Waits/sec")
PANDORA_MODULE(17).query = Replace(PANDORA_MODULE(17).query, "%s2", "_Total")
' Lock wait average time info
Set PANDORA_MODULE(18) = New MODULE_CONSTRUCTOR_CLASS
PANDORA_MODULE(18).name = "SQLServer: Performance - Locks - Lock wait average time (ms)"
PANDORA_MODULE(18).description = "Lock wait average time in miliseconds"
PANDORA_MODULE(18).ttype = "generic_data_inc"
PANDORA_MODULE(18).data = ""
PANDORA_MODULE(18).unit = "ms"
PANDORA_MODULE(18).divide = ""
'PANDORA_MODULE(18).min_warn = 0
'PANDORA_MODULE(18).max_warn = 0
'PANDORA_MODULE(18).min_crit = 0
'PANDORA_MODULE(18).max_crit = 0
PANDORA_MODULE(18).query = Replace(SQL_QRS.INST, "%s1", "Lock Wait Time (ms)")
PANDORA_MODULE(18).query = Replace(PANDORA_MODULE(18).query, "%s2", "_Total")
' Average wait time info
Set PANDORA_MODULE(19) = New MODULE_CONSTRUCTOR_CLASS
PANDORA_MODULE(19).name = "SQLServer: Performance - Average wait time (ms)"
PANDORA_MODULE(19).description = "Average wait time in miliseconds"
PANDORA_MODULE(19).ttype = "generic_data"
PANDORA_MODULE(19).data = ""
PANDORA_MODULE(19).unit = "ms"
PANDORA_MODULE(19).divide = "1"
'PANDORA_MODULE(19).min_warn = 0
'PANDORA_MODULE(19).max_warn = 0
'PANDORA_MODULE(19).min_crit = 0
'PANDORA_MODULE(19).max_crit = 0
PANDORA_MODULE(19).query = Replace(SQL_QRS.AWTM, "%s1", "Average Wait Time (ms)")
PANDORA_MODULE(19).query = Replace(PANDORA_MODULE(19).query, "%s2", "_Total")
PANDORA_MODULE(19).query = Replace(PANDORA_MODULE(19).query, "%s3", PANDORA_MODULE(19).divide)
' Cache hit ratio info
Set PANDORA_MODULE(20) = New MODULE_CONSTRUCTOR_CLASS
PANDORA_MODULE(20).name = "SQLServer: Performance - Cache hit ratio (%)"
PANDORA_MODULE(20).description = "Percentage of cache hits"
PANDORA_MODULE(20).ttype = "generic_data"
PANDORA_MODULE(20).data = ""
PANDORA_MODULE(20).unit = "%"
PANDORA_MODULE(20).divide = "0.01"
'PANDORA_MODULE(20).min_warn = 0
'PANDORA_MODULE(20).max_warn = 0
'PANDORA_MODULE(20).min_crit = 0
'PANDORA_MODULE(20).max_crit = 0
PANDORA_MODULE(20).query = Replace(SQL_QRS.CHRP, "%s1", "Cache Hit Ratio")
PANDORA_MODULE(20).query = Replace(PANDORA_MODULE(20).query, "%s2", "_Total")
PANDORA_MODULE(20).query = Replace(PANDORA_MODULE(20).query, "%s3", PANDORA_MODULE(20).divide)
' Batch requests per second info
Set PANDORA_MODULE(21) = New MODULE_CONSTRUCTOR_CLASS
PANDORA_MODULE(21).name = "SQLServer: Performance - Batch requets (br/s)"
PANDORA_MODULE(21).description = "Batch requests per second"
PANDORA_MODULE(21).ttype = "generic_data_inc"
PANDORA_MODULE(21).data = ""
PANDORA_MODULE(21).unit = "br/s"
PANDORA_MODULE(21).divide = ""
'PANDORA_MODULE(21).min_warn = 0
'PANDORA_MODULE(21).max_warn = 0
'PANDORA_MODULE(21).min_crit = 0
'PANDORA_MODULE(21).max_crit = 0
PANDORA_MODULE(21).query = Replace(SQL_QRS.OBJE, "%s1", "Batch Requests/sec")
' SQL compilations per second info
Set PANDORA_MODULE(22) = New MODULE_CONSTRUCTOR_CLASS
PANDORA_MODULE(22).name = "SQLServer: Performance - SQL compilations (sc/s)"
PANDORA_MODULE(22).description = "SQL compilations per second"
PANDORA_MODULE(22).ttype = "generic_data_inc"
PANDORA_MODULE(22).data = ""
PANDORA_MODULE(22).unit = "sc/s"
PANDORA_MODULE(22).divide = ""
'PANDORA_MODULE(22).min_warn = 0
'PANDORA_MODULE(22).max_warn = 0
'PANDORA_MODULE(22).min_crit = 0
'PANDORA_MODULE(22).max_crit = 0
PANDORA_MODULE(22).query = Replace(SQL_QRS.OBJE, "%s1", "SQL Compilations/sec")
' Full scans per second info
Set PANDORA_MODULE(23) = New MODULE_CONSTRUCTOR_CLASS
PANDORA_MODULE(23).name = "SQLServer: Performance - Full scans (fsc/s)"
PANDORA_MODULE(23).description = "Full scans per second"
PANDORA_MODULE(23).ttype = "generic_data_inc"
PANDORA_MODULE(23).data = ""
PANDORA_MODULE(23).unit = "fsc/s"
PANDORA_MODULE(23).divide = ""
'PANDORA_MODULE(23).min_warn = 0
'PANDORA_MODULE(23).max_warn = 0
'PANDORA_MODULE(23).min_crit = 0
'PANDORA_MODULE(23).max_crit = 0
PANDORA_MODULE(23).query = Replace(SQL_QRS.OBJE, "%s1", "Full Scans/sec")
' Lazy writes info
Set PANDORA_MODULE(24) = New MODULE_CONSTRUCTOR_CLASS
PANDORA_MODULE(24).name = "SQLServer: Performance - Lazy writes (lw/s)"
PANDORA_MODULE(24).description = "Lazy writes per second"
PANDORA_MODULE(24).ttype = "generic_data_inc"
PANDORA_MODULE(24).data = ""
PANDORA_MODULE(24).unit = "lw/s"
PANDORA_MODULE(24).divide = ""
'PANDORA_MODULE(24).min_warn = 0
'PANDORA_MODULE(24).max_warn = 0
'PANDORA_MODULE(24).min_crit = 0
'PANDORA_MODULE(24).max_crit = 0
PANDORA_MODULE(24).query = Replace(SQL_QRS.BASE, "%s1", "Lazy writes/sec")
' Connection to SQL Server
Dim sqlConn
Dim DB_CONNECT_STRING
DB_CONNECT_STRING = "Driver=" & SQL_CONN_PRT.SQL_DRIVER & ";" &_
"Server=" & SQL_CONN_PRT.SQL_SERVER & ";" &_
"Database=" & SQL_CONN_PRT.SQL_DB & ";" &_
"User Id=" & SQL_CONN_PRT.SQL_USER & ";" &_
"Password='" & SQL_CONN_PRT.SQL_PASS & "'"
Set sqlConn = CreateObject("ADODB.Connection")
sqlConn.Open DB_CONNECT_STRING
If sqlConn.State <> 1 Then
WScript.Quit
End If
' Iterate through the defined pandora modules
For aux = 1 To UBound(PANDORA_MODULE, 1)
Dim sqlRecordSet
Set sqlRecordSet = CreateObject("ADODB.Recordset")
sqlRecordSet.Open PANDORA_MODULE(aux).query, sqlConn
If Not sqlRecordSet.EOF Then
Wscript.StdOut.WriteLine ""
Wscript.StdOut.WriteLine " "
Wscript.StdOut.WriteLine " "
Wscript.StdOut.WriteLine " " & PANDORA_MODULE(aux).ttype & ""
Wscript.StdOut.WriteLine " 0"
Wscript.StdOut.WriteLine " "
If PANDORA_MODULE(aux).unit <> "" Then
Wscript.StdOut.WriteLine " " & PANDORA_MODULE(aux).unit & ""
End If
If PANDORA_MODULE(aux).min_warn <> "" Then
Wscript.StdOut.WriteLine " " & PANDORA_MODULE(aux).min_warn & ""
End If
If PANDORA_MODULE(aux).max_warn <> "" Then
Wscript.StdOut.WriteLine " " & PANDORA_MODULE(aux).max_warn & ""
End If
If PANDORA_MODULE(aux).min_crit <> "" Then
Wscript.StdOut.WriteLine " " & PANDORA_MODULE(aux).min_crit & ""
End If
If PANDORA_MODULE(aux).max_crit <> "" Then
Wscript.StdOut.WriteLine " " & PANDORA_MODULE(aux).max_crit & ""
End If
Wscript.StdOut.WriteLine ""
End If
Next
' Close connection
sqlConn.Close