Generate alerts if any monitor-generated alerts were manually closed by any OpsMgr operators
The “OpsMgr 2012 Self Maintenance Detect Manually Closed Monitor Alerts Rule” runs on a schedule and detects if any monitor-generated alerts have been closed manually by OpsMgr operators.
By default, this rule runs once a day at 00:05am and detects if any monitor-generated alerts were closed manually since last run. The following parameters are configurable via overrides:
IntervalMinutes: Schedule frequency in minutes. The interval cannot be longer than the Operational DB Grooming setting for Resolved Alerts (by default 7 days).
SyncTime: Time when the rule runs.
ResetUnitMonitors: When set to 'true', the rule will also reset the health state of the monitor of which generated the alert if the monitor is an unit monitor and its state is warning or error.
TimeoutSeconds: Timeout in seconds for the PowerShell script within this rule. Default is 900 seconds (15 minutes). Increase it if it’s required.
Monitor generated alerts should not be closed manually.
You may need to reset health on the objects where the monitors are targeted.
Alerts that are raised by the monitors should not be manually resolved in Operations Manager
Please note that any monitor alerts closed by "Auto-Resolve" will also be alerted by this rule. It may indicate that the monitor alert has been closed by the system as a result of end of a maintenance mode. If this is the case, although the alert is closed and the monitor has been reset to healthy, the underlying problem may still exist.
Target | Microsoft.SystemCenter.AllManagementServersPool | ||
Category | Operations | ||
Enabled | False | ||
Alert Generate | True | ||
Alert Severity | Warning | ||
Alert Priority | Low | ||
Remotable | True | ||
Alert Message |
|
ID | Module Type | TypeId | RunAs |
---|---|---|---|
DS | DataSource | OpsMgr.2012.Self.Maintenance.Detect.Manually.Closed.Monitor.Alerts.DataSource | Default |
FilterResult | ConditionDetection | System.ExpressionFilter | Default |
GenerateAlert | WriteAction | System.Health.GenerateAlert | Default |
<Rule ID="OpsMgr.2012.Self.Maintenance.Detect.Manually.Closed.Monitor.Alerts.Rule" Target="SC!Microsoft.SystemCenter.AllManagementServersPool" Enabled="false" ConfirmDelivery="false" Remotable="true" Priority="Normal" DiscardLevel="100">
<Category>Operations</Category>
<DataSources>
<DataSource ID="DS" TypeID="OpsMgr.2012.Self.Maintenance.Detect.Manually.Closed.Monitor.Alerts.DataSource">
<IntervalMinutes>1440</IntervalMinutes>
<SyncTime>00:05</SyncTime>
<ResetUnitMonitors>false</ResetUnitMonitors>
<TimeoutSeconds>900</TimeoutSeconds>
</DataSource>
</DataSources>
<ConditionDetection ID="FilterResult" TypeID="System!System.ExpressionFilter">
<Expression>
<SimpleExpression>
<ValueExpression>
<XPathQuery Type="Integer">Property[@Name='AlertsCount']</XPathQuery>
</ValueExpression>
<Operator>Greater</Operator>
<ValueExpression>
<Value Type="Integer">0</Value>
</ValueExpression>
</SimpleExpression>
</Expression>
</ConditionDetection>
<WriteActions>
<WriteAction ID="GenerateAlert" TypeID="Health!System.Health.GenerateAlert">
<Priority>0</Priority>
<Severity>1</Severity>
<AlertMessageId>$MPElement[Name="OpsMgr.2012.Self.Maintenance.Detect.Manually.Closed.Monitor.Alerts.Rule.AlertMessage"]$</AlertMessageId>
<AlertParameters>
<AlertParameter1>$Data/Property[@Name='IntervalMinutes']$</AlertParameter1>
<AlertParameter2>$Data/Property[@Name='AlertsCount']$</AlertParameter2>
<AlertParameter3>$Data/Property[@Name='UserCount']$</AlertParameter3>
<AlertParameter4>$Data/Property[@Name='Details']$</AlertParameter4>
</AlertParameters>
</WriteAction>
</WriteActions>
</Rule>