(非推奨) ホスト監視プロセスのプライベート バイト

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

ホスト監視プロセスが Process\Private Bytes のしきい値を超えたときにヘルス サービスを再開します。

Knowledge Base article:

概要

このルールは、モニターによって置き換えられたため、既定で無効になっています。

このルールは、MonitoringHost.exe プロセスすべてのインスタンスの Process\Private Bytes 利用率を測定します。 利用率が構成されたしきい値を超えると、アラートが生成されます。

System Center Management ヘルス サービスで実行するように構成されたロールに応じて、異なるしきい値があります。 既定のしきい値の概要を以下に示します。

System Center Management ヘルス サービス ロール

Private Bytes しきい値

エージェント

100 MB

管理サーバー

1,500 MB

System Center Management ヘルス サービスの再起動を試行する応答の構成を以下に示します。

System Center Management ヘルス サービス ロール

再開の応答動作

エージェント

有効

管理サーバー

再開の応答なし

原因

考えられる原因の概要:

この System Center Management ヘルス サービスが構成されているすべての管理パックから、過剰なルールおよびモニターがロードされています。

ルールまたはモニターが誤って構成されていることが原因で、過剰なデータ コレクションまたは過剰なデータ処理が実行されています (たとえば、パフォーマンス カウンターの収集ルールにより、1 秒ごとにデータが収集されている)。

System Center Management ヘルス サービスが多数の管理パックを実行していると、この問題が発生する場合があります。 各管理パックに、リソースをあまり消費しない監視が多数存在する可能性があります。 管理パックの数が増えると、ルールおよびモニターの数が数千になり、各 MonitoringHost.exe インスタンスで消費するリソースが増える場合があります。

System Center Management ヘルス サービスが実行している監視の種類によって、この問題が発生する場合があります。

別の原因としては、1 つまたは複数のルールおよびモニターがベスト プラクティスに沿っていないことが考えられます。 1 秒ごとにパフォーマンス データを収集するパフォーマンス カウンター ルールなどは、その例です。 このように構成されているルールまたはモニターが多すぎると、monitoring host.exe プロセスで消費されるリソースが増えます。

解決策

管理サーバー上で実行されるこのルールの既定のアクションは、アラートを発行することです。

このエージェントによって実行されている監視量に対して、リソースの利用率が妥当であると判断した場合は、しきい値を無効にするか、この修復を無効にしてかまいません。

それでも、System Center Management ヘルス サービスと関連する MonitoringHost.exe プロセスが大量のリソースを使用している場合は、Windows の System Center Management ヘルス サービスをいったん停止して再開してみてください。

Element properties:

TargetMicrosoft.SystemCenter.ManagementServer
CategoryMaintenance
EnabledFalse
Instance NameProcess
Counter NamePrivate Bytes
Frequency120
Alert GenerateTrue
Alert SeverityError
Alert PriorityNormal
RemotableTrue
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>