(Deprecated) Monitoring Host Private Bytes Handle Count

Microsoft.SystemCenter.ManagementServer.MonitoringHost.PrivateBytesThreshold (Rule)

Restarts the Health service when the Monitoring Host process exceeds the Process\Private Bytes threshold.

Knowledge Base article:

Summary

This rule is disabled by default because it has been replaced by a monitor.

This rule measures the Process\Private Bytes utilization for all instances of the MonitoringHost.exe process. If it exceeds the configured threshold, an alert is generated.

There are different thresholds depending on the role that System Center Management Health Service configured to perform. The following summarizes the default thresholds:

System Center Management Health Service Role

Private Bytes Threshold

Agent

100 MB

Management Server

1,500 MB

Below is the configuration for the response that attempts to restart the System Center Management Health Service:

System Center Management Health Service Role

Restart Response Behavior

Agent

Enabled

Management Server

No restart response

Causes

A brief summary of potential causes are:

Too many rules and monitors are loaded from all the management packs this System Center Management Health Service has been configured with.

A misconfigured rule or monitor collecting too much data or processing too much data (e.g. performance counter collection rule collecting data every 1 second)

This can be caused by the System Center Management Health Service running many management packs. Each Management Pack may have a lot of monitoring that uses a small amount of resources. With many management packs that add up to many thousands of rules and monitors, each MonitoringHost.exe instance may start consuming more resources.

This may be expected for this System Center Management Health Service depending on the type of monitoring the System Center Management Health Service is performing.

Another cause could be one or more rules and monitors that are not conforming to some best practices. An example is a performance counter rule that attempts to collect performance data every 1 second. Too many rules or monitors configured this way will cause the monitoring host.exe process to consume more resources.

Resolutions

The default action for this rule running on Management Servers is to alert.

If you feel that the resource utilization is appropriate for the amount of monitoring being performed by this agent, you can override the threshold or disable the recovery.

If the System Center Management Health Service and its associated MonitoringHost.exe process are still consuming too many resources, you can restart the System Center Management Health Service windows service to mitigate this problem.

Element properties:

TargetMicrosoft.SystemCenter.ManagementServer
CategoryMaintenance
EnabledFalse
Instance NameProcess
Counter NamePrivate Bytes
Frequency120
Alert GenerateTrue
Alert SeverityError
Alert PriorityNormal
RemotableTrue
Alert Message
Monitoring Host Private Bytes Threshold Alert Message (Management Server)
Monitoring Host Private Bytes Threshold Alert Message

Member Modules:

ID Module Type TypeId RunAs 
DataSource DataSource System.Performance.DataProvider Default
CDAveragerThreshold ConditionDetection System.Performance.AverageThresholdCondition Default
Alert WriteAction System.Health.GenerateAlert Default

Source Code:

<Rule ID="Microsoft.SystemCenter.ManagementServer.MonitoringHost.PrivateBytesThreshold" Enabled="false" Target="SCLibrary!Microsoft.SystemCenter.ManagementServer" ConfirmDelivery="false" Remotable="true" Priority="High" DiscardLevel="100">
<Category>Maintenance</Category>
<DataSources>
<DataSource ID="DataSource" TypeID="Performance!System.Performance.DataProvider">
<CounterName>Private Bytes</CounterName>
<ObjectName>Process</ObjectName>
<InstanceName>MonitoringHost*</InstanceName>
<Frequency>120</Frequency>
</DataSource>
</DataSources>
<ConditionDetection ID="CDAveragerThreshold" TypeID="Performance!System.Performance.AverageThresholdCondition">
<NumSamples>5</NumSamples>
<Threshold>1610612736</Threshold>
<Operator>Greater</Operator>
</ConditionDetection>
<WriteActions>
<WriteAction ID="Alert" TypeID="Health!System.Health.GenerateAlert">
<Priority>1</Priority>
<Severity>2</Severity>
<AlertName/>
<AlertDescription/>
<AlertOwner/>
<AlertMessageId>$MPElement[Name="Microsoft.SystemCenter.ManagementServer.MonitoringHost.PrivateBytesThreshold.AlertMessage"]$</AlertMessageId>
<AlertParameters>
<AlertParameter1>$Data/InstanceName$</AlertParameter1>
<AlertParameter2>$Data/Value$</AlertParameter2>
</AlertParameters>
<Suppression>
<SuppressionValue>$Target/Host/Property[Type="Windows!Microsoft.Windows.Computer"]/PrincipalName$</SuppressionValue>
</Suppression>
</WriteAction>
</WriteActions>
</Rule>