'# 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