How to Create an Override for a Monitor

Applies To: Operations Manager 2007 R2, Operations Manager 2007 SP1, System Center Operations Manager 2007

You can create an override for a property or configuration parameter for a monitor. A property override changes the default value of a monitor property, and a configuration override changes the default value of a custom configuration setting for a monitor. If you want to create an override for a monitor, use the ManagementPackMonitorPropertyOverride or ManagementPackMonitorConfigurationOverride class. These classes are derived from the ManagementPackMonitorOverride class.

The following properties can be overridden for unit monitors.

  • Enabled

  • GenerateAlert

  • AutoResolve

  • AlertPriority

  • AlertOnState

  • AlertSeverity

The following properties can be overridden for rollup monitors.

  • Enabled

  • Algorithm

  • AutoResolve

  • AlertPriority

  • AlertOnState

  • AlertSeverity

The following properties can be overridden for dependency monitors.

  • Enabled

  • Algorithm

  • AutoResolve

  • AlertPriority

  • AlertOnState

  • AlertSeverity

  • MemberInMaintenance

  • MemberUnavailable

  • IgnoreMemberInMaintenance

  • IgnoreMemberUnavailable

To figure out which parameters can be overridden, you must look at the definition of the monitor in the Management Pack that defines the monitor. All the parameters that can be overridden are defined in the OverrideableParameters element of the monitor You can also call the GetOverrideableParameters method to get the list of parameters programmatically.

The following example creates an override for the Enabled property of a monitor.

using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Text;
using Microsoft.EnterpriseManagement;
using Microsoft.EnterpriseManagement.Administration;
using Microsoft.EnterpriseManagement.Common;
using Microsoft.EnterpriseManagement.Configuration;
using Microsoft.EnterpriseManagement.Monitoring;

namespace SDKSamples
{
    class Program
    {
        //---------------------------------------------------------------------
        static void Main(string[] args)
        {
            ManagementGroup                         mg;
            ManagementPack                          mp;
            MonitoringClassCriteria                 classCriteria;
            MonitoringClass                         monitoringClass;
            MonitorCriteria                         monitorCriteria;
            ManagementPackMonitor                   monitor;
            ManagementPackMonitorPropertyOverride   monitorOverride;

            mg = new ManagementGroup("localhost");

            mp = mg.GetManagementPacks("OverrideTestMP")[0];

            classCriteria = new MonitoringClassCriteria("Name='Microsoft.SQLServer.2005.Database'");

            monitoringClass = mg.GetMonitoringClasses(classCriteria)[0];

            monitorCriteria = new MonitorCriteria("DisplayName='Database Status'");

            monitor = mg.GetMonitors(monitorCriteria)[0];

            monitorOverride = new ManagementPackMonitorPropertyOverride(mp, "SampleMonitorOverride");

            monitorOverride.Monitor     = monitor;
            monitorOverride.Property    = ManagementPackMonitorProperty.Enabled;
            monitorOverride.Value       = "false";
            monitorOverride.Context     = monitoringClass;
            monitorOverride.DisplayName = "SampleMonitorOverride";

            mp.Verify();
            
            //Save the changes into the management pack.
            mp.AcceptChanges();
        }        
    }
}
Imports System
Imports System.Collections.Generic
Imports System.Text
Imports Microsoft.EnterpriseManagement
Imports Microsoft.EnterpriseManagement.Administration
Imports Microsoft.EnterpriseManagement.Common
Imports Microsoft.EnterpriseManagement.Configuration
Imports Microsoft.EnterpriseManagement.Monitoring


Namespace SDKSamples
    Class Program
        Public Overloads Shared Function Main(ByVal args() As String) As Integer

            Dim mg As ManagementGroup
            Dim mp As ManagementPack
            Dim monitoringClass As MonitoringClass
            Dim classCriteria As MonitoringClassCriteria
            Dim monitorCriteria As MonitorCriteria
            Dim monitor As ManagementPackMonitor
            Dim monitorOverride As ManagementPackMonitorPropertyOverride

            mg = New ManagementGroup("localhost")

            mp = mg.GetManagementPacks("OverrideTestMP")(0)

            classCriteria = New MonitoringClassCriteria("Name='Microsoft.SQLServer.2005.Database'")

            monitoringClass = mg.GetMonitoringClasses(classCriteria)(0)

            monitorCriteria = New MonitorCriteria("DisplayName='Database Status'")

            monitor = mg.GetMonitors(monitorCriteria)(0)

            monitorOverride = New ManagementPackMonitorPropertyOverride(mp, "SampleMonitorOverride")

            monitorOverride.Monitor = monitor
            monitorOverride.Property = ManagementPackMonitorProperty.Enabled
            monitorOverride.Value = "false"
            monitorOverride.Context = monitoringClass
            monitorOverride.DisplayName = "SampleMonitorOverride"

            mp.Verify()

            ' Save the changes into the management pack.
            mp.AcceptChanges()
        End Function
    End Class
End Namespace