Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
MOM 2005 has a support limit of 15 active MOM Operator Consoles, however there is no built in way to detect and/or alert on the number of consoles that are in use. I have written a little script that does just that. It is not the prettiest script in the world but it functions. :)
Check it out here:
Option Explicit
'*****************************************************************************************************************************************************************
'Script: Active Number of MOM Consoles
'This script will check the Active Number of MOM Consoles and alert if the active number goes beyond the Warning or Error Threshold levels
'Parameters:
' WarningThreshold - The number of consoles that will generate a Warning Alert
' ErrorThreshold - The number of consoles that will generate an Error Alert
' CheckInstances - The SQL Server Instance that is running the Onepoint database
' DatabaseName - The name of the database to run the query against. This should be set to master
' Query - The SQL query that checks the active number of MOM consoles
' The query should be:
' SELECT program_name, count(*) FROM Master..sysprocesses WHERE ecid=0 and program_name='Microsoft Operations Manager - DAS Operations Console' GROUP BY program_name ORDER BY count(*) desc
' InformationalAlert - Turns on debugging information (Have to uncomment lines below)
' Usage: Create a new MOM Script and apply this script to the Microsoft Operations Manager 2005 Databases Computer Group. Create a 10 minute provider. Create an Alert or Respond to Event
' Rule and use the 10 minute provider. Under Event Rule responses, launch a script and choose this script
' The Action Account will need Select permissions on the sysprocesses table in the master database.
'*****************************************************************************************************************************************************************
' Alert Constants
CONST ALERT_INFORMATION = 20
CONST ALERT_WARNING = 30
CONST ALERT_ERRROR = 40
CONST ALERT_CRITICALERROR = 50
CONST ALERT_SERVICEUNAVAILABLE = 70
'Other constants
Const SCRIPT_NAME = "Active Number of MOM Consoles"
Const CONNECT_ERROR = -2
Sub Main()
Dim oParams, blnInformationAlert, sInstances, sDBName, sQuery,aInstances
Dim i, iSuccess, sMessage,inumberofConsoles, ierror, iwarning
If ScriptContext.IsEvent() Then
Set oParams = ScriptContext.Parameters
iWarning = Oparams.Get("WarningThreshold")
iError = oParams.Get("ErrorThreshold")
sInstances = oParams.Get("CheckInstances")
sDBName = oParams.Get("DatabaseName")
sQuery = oParams.Get("Query")
blnInformationAlert = OParams.Get("InformationalAlert")
Set oParams = Nothing
iError = CINT(iError)
iWarning = CINT(iWarning)
If (sInstances = "") Or (sDBName = "") Or (sQuery = "") Then
if blnInformationAlert Then AlertCreate SCRIPT_NAME,ALERT_WARNING,"The '" & SCRIPT_NAME & "' script ran but had incomplete parameter information. " &_
"Processing cannot continue."
Else
aInstances = Split(sInstances,",")
For i = 0 To UBound(aInstances)
inumberofconsoles = ConnectToSQLInstance(Trim(aInstances(i)), sDBName, sQuery)
If inumberofconsoles < 0 Then
AlertCreate SCRIPT_NAME,ALERT_ERRROR,"Failed to connect to " & UCase(aInstances(i)) & " or failed to return a result from the query """ &_
sQuery & """ against the database " & sDBName & "."
Else
If (inumberofconsoles >= iwarning) AND (inumberofconsoles < iError) Then AlertCreate SCRIPT_NAME, ALERT_WARNING,"The number of Of consoles exceeds or matches the warning theshold. " & inumberofconsoles & " active consoles detected"
If inumberofconsoles >= iError Then AlertCreate SCRIPT_NAME,ALERT_ERRROR,"The number of Of consoles exceeds or matches the error theshold. " & inumberofconsoles & " active consoles detected"
End if
Next
End If
Else
sMessage = "The script '" & SCRIPT_NAME & "' can only be executed by an event rule."
AlertCreate SCRIPT_NAME, ALERT_WARNING, sMessage
End If
' To Troubleshoot uncomment the lines below
' if blnInformationAlert Then
'
' sMessage = "The number of Active Consoles is " & inumberofConsoles & "." &_
' "The Error threshold is " & iError & "." &_
' "The Warning threshold is " & iWarning & "."
' AlertCreate Script_Name, ALERT_INFORMATION, sMessage
' End if
End Sub
'*****************************************************************************************
' Function ConnectToSQLIntance
' Paramaters:
' sInstance - The SQL instance
' sDatabase - The database name
' sQuery - The SQL query
' Returns the Active Number of Consoles or CONNECT_ERROR if unable to connect to database
'*****************************************************************************************
Function ConnectToSQLInstance(sInstance, sDatabase, sQuery)
Dim oSQLServer, oDatabase, oResults, iconsoles
On Error Resume Next
Set oSQLServer = CreateObject("SQLDMO.SQLServer")
oSQLServer.LoginSecure = 1
oSQLServer.Connect sInstance
If Err.number = 0 Then
Set oDatabase = oSQLServer.Databases.Item(sDatabase)
If Err.number = 0 Then
Set oResults = oDatabase.ExecuteWithResults(sQuery)
If Err.number = 0 Then
sCheck = OResults.GetColumnString(1,1)
If Err.Number = 0 Then
If oResults.GetColumnString(1,1) = "" Then
ConnectToSQLInstance = 0
Else
iconsoles = Cint(oResults.GetColumnString(1,2))
if iconsoles = "" then
ConnectToSQLInstance = 0
else
ConnectToSQLInstance = iconsoles
End if
End If
Else
ConnectionToSQLInstance = 0
End if
Else
ConnectToSQLInstance = CONNECT_ERROR
End If
Else
ConnectToSQLInstance = CONNECT_ERROR
End If
Else
ConnectToSQLInstance = CONNECT_ERROR
End If
On Error Goto 0
End Function
'*******************************************************************************************
'Function AlertCreate
'Paramaters:
' sName - The name of the Alert
' iLevel - The Error level of the Alert
' sDecription - Decription of the Alert
' Creates the alert and returns 0 if success and -1 if it fails to create the alert
'*******************************************************************************************
Function AlertCreate(sName,iLevel,sDescription)
Dim objCreatedAlert
Err.Clear
Set objCreatedAlert = ScriptContext.CreateAlert()
objCreatedAlert.Name = sName
objCreatedAlert.AlertLevel = iLevel
objCreatedAlert.Owner = "[unassigned]"
objCreatedAlert.ResolutionState = 0
objCreatedAlert.Description = sDescription
ScriptContext.Submit(objCreatedAlert)
If Err.number= 0 Then
AlertCreate = 0
Else
AlertCreate = -1
End if
End Function