WMI メモリ使用率モニター

Microsoft.SystemCenter.WMIPrivateBytes.Monitor (UnitMonitor)

このモニターは、コンピューターの WMI メモリー使用率を確認します。

Knowledge Base article:

概要

このコンピューターの WMI サービスが使用しているメモリが多すぎます。

このモニターは、WmiPrv で始まるすべてのプロセス インスタンスの Private Bytes カウンターを確認し、それを 2 つのしきい値と比較して、コンピューター上での WMI のメモリ使用率の合計を確認します。WMI 関連プロセスのメモリ消費量が 500MB を超えると、このモニターは既定で警告の状態になります。さらに WMI 関連プロセスのメモリ消費量が 600MB を超えると、エラー状態になります。

原因

WMI のメモリ リークにより、時間の経過と供に WMI のメモリ消費量が増え続けている可能性があります。

解決方法

WMI メモリの問題が繰り返し発生する場合、警告しきい値やエラーしきい値を超えた場合に WMI を自動的に再起動する復元処理がこのモニターで無効になっています。これで問題が解決できると思われる場合は、次のいずれかの復元処理を有効にできます。

外部

WMI のトラブルシューティングの詳細については、 http://go.microsoft.com/fwlink/?LinkId=158224 を参照してください。

WMI 診断ユーティリティを http://go.microsoft.com/fwlink/?LinkId=158226 からダウンロードすることもできます。WMI 診断ユーティリティは、コンピューターの WMI サービスの問題を解決するために記述された VBScript です。

Element properties:

TargetMicrosoft.SystemCenter.Agent
Parent MonitorSystem.Health.PerformanceState
CategoryPerformanceHealth
EnabledFalse
Alert GenerateTrue
Alert SeverityWarning
Alert PriorityNormal
Alert Auto ResolveTrue
Monitor TypeMicrosoft.SystemCenter.Performance.FilteredDoubleThreshold.MonitorType
RemotableTrue
AccessibilityPublic
Alert Message
WMI メモリ使用率 (高)

WMI メモリ使用率が高すぎます。コンピューター {4} で、インスタンス {0} オブジェクト {1} カウンター {2} の値が {3} です。
RunAsDefault

Source Code:

<UnitMonitor ID="Microsoft.SystemCenter.WMIPrivateBytes.Monitor" Accessibility="Public" Enabled="false" Target="SCLibrary!Microsoft.SystemCenter.Agent" ParentMonitorID="Health!System.Health.PerformanceState" Remotable="true" Priority="Normal" TypeID="Microsoft.SystemCenter.Performance.FilteredDoubleThreshold.MonitorType" ConfirmDelivery="false">
<Category>PerformanceHealth</Category>
<AlertSettings AlertMessage="Microsoft.SystemCenter.WMIPrivateBytes.Monitor.AlertMessage">
<AlertOnState>Error</AlertOnState>
<AutoResolve>true</AutoResolve>
<AlertPriority>Normal</AlertPriority>
<AlertSeverity>Warning</AlertSeverity>
<AlertParameters>
<AlertParameter1>$Data/Context/InstanceName$</AlertParameter1>
<AlertParameter2>$Data/Context/ObjectName$</AlertParameter2>
<AlertParameter3>$Data/Context/CounterName$</AlertParameter3>
<AlertParameter4>$Data/Context/Value$</AlertParameter4>
<AlertParameter5>$Target/Host/Property[Type="Windows!Microsoft.Windows.Computer"]/NetworkName$</AlertParameter5>
</AlertParameters>
</AlertSettings>
<OperationalStates>
<OperationalState ID="UnderThreshold1" MonitorTypeStateID="UnderThreshold1" HealthState="Success"/>
<OperationalState ID="OverThreshold1UnderThreshold2" MonitorTypeStateID="OverThreshold1UnderThreshold2" HealthState="Warning"/>
<OperationalState ID="OverThreshold2" MonitorTypeStateID="OverThreshold2" HealthState="Error"/>
</OperationalStates>
<Configuration>
<ComputerName>$Target/Host/Property[Type="Windows!Microsoft.Windows.Computer"]/NetworkName$</ComputerName>
<CounterName>Private Bytes</CounterName>
<ObjectName>Process</ObjectName>
<InstanceName/>
<AllInstances>true</AllInstances>
<Frequency>300</Frequency>
<Expression>
<RegExExpression>
<ValueExpression>
<XPathQuery Type="String">InstanceName</XPathQuery>
</ValueExpression>
<Operator>ContainsSubstring</Operator>
<Pattern>WmiPrv</Pattern>
</RegExExpression>
</Expression>
<Threshold1>524288000</Threshold1>
<Threshold2>629145600</Threshold2>
</Configuration>
</UnitMonitor>