大量のプロセッサ時間を使用しているエージェントによって発生する可能性のある問題を見つけるために、エージェントのすべてのプロセスを監視します。
このモニターは、Operations Manager エージェント、およびその関連プロセスの CPU 使用率の合計を計算し、指定された数の連続サンプルの CPU 使用率が指定されたしきい値を超えた場合にアラートを生成します。
このモニターの基礎となっているスクリプトは、Operations Manager エージェントのプロセス (HealthService.exe)、その子のホスト監視プロセス (MonitoringHost.exe)、およびこのホスト監視プロセスの子プロセス (cscript.exe や PowerShell.exe など) を見つけ、CPU 使用率をサンプリングします。計算は 3 回行われ、3 つの連続するサンプルの平均が出力されます。この出力は、このモニターの状態が "重大" か "正常" であるかを判別するために使用されます。
このモニターの既定の動作を変更するには、上書きを使用して、次のパラメーターをカスタマイズします。
頻度 (秒)。これは、モニターが、エージェントのプロセッサ使用率をサンプリングする頻度です。既定では、300 秒 (5 分) おきにエージェントのプロセッサ使用率を評価します。
状態を "重大" にするための連続サンプル数。既定では、6 個の連続するサンプルが指定されたしきい値を超えた場合、状態が "重大" になります。
状態を "正常" にするための連続サンプル数。既定では、3 個の連続するサンプルが指定されたしきい値未満の場合、状態が "正常" になります。
しきい値。CPU 使用率の既定のしきい値は 25% です。
このモニターは、既定で、すべての管理サーバーで無効になっています。
Operations Manager エージェントのさまざまなプロセスの CPU 使用率が高い場合は、エージェント、またはそれに依存しているコンポーネントが正しく機能していない可能性があります。エージェント、およびそれに依存しているコンポーネントが正しく更新されている場合は、監視されているシステムにあるエージェントが過剰に使用されています。これは、管理グループを更新して間もない (新しい管理パックを展開した場合など) ときに一時的に発生することがあります。ただし、エージェントが実際に過負荷になっていることもあり、この場合は調整が必要になります。
エージェント、およびそれに依存しているコンポーネントが正しく機能していることを確認するには、次の手順に従います。
Operations Manager エージェントの最新バージョンがシステムにインストールされていることを確認します。
サポート技術情報の記事 968967 (http://go.microsoft.com/fwlink/?LinkId=181885) にある MSXML 6.0 の更新プログラムがインストールされていることを確認します。
システムのオペレーティング システムが Windows XP、Windows 2000 Server、または Windows Server 2003 の場合は、システムで Windows Script Host 5.7 以上が実行されていることを確認します。Windows Script Host 5.7 は、 http://go.microsoft.com/fwlink/?LinkId=181884 からダウンロードできます。
これらの構成を確認しても状況が変わらない場合は、CPU 使用率が高い原因を詳しく調査する必要があります。このためには、次の操作の 1 つまたは複数を行います。
次の表示で、エージェントのプロセッサ使用率の最近の履歴、ワークフロー数、モジュール数を確認します。エージェント パフォーマンス ビュー.エージェントのプロセッサ使用率のデータを見ると、問題が最近発生したか、それとも長い期間に渡っているかがわかります。ワークフローとモジュールの数のデータは、さまざまなルール、モニター、検出によってエージェントにかかっている負荷の目安になります。このデータを、正常な状態のエージェントと比較してください。
Effective Configuration Viewer (http://go.microsoft.com/fwlink/?LinkId=182300) などのツールを使用して、エージェント コンピューターで検出されたクラス インスタンスの数を確かめます。クラス インスタンスの数が多いほど、ワークフローとモジュールの数が多くなり、エージェントにかかる負荷も上がります。
パフォーマンス モニターを使用して、プロセッサ オブジェクトからプロセッサ時間の割合の細かい測定値を収集します。これによって、どのプロセスがプロセッサの全体的な使用率に最も影響を与えているかがわかります。
管理パックを最近更新または変更したかどうかを確認し、その更新や変更が CPU 使用率の増加に関係があるかどうかを調べます。
問題の原因を突き止めたら、次の 1 つまたは複数の操作を行って問題を解決します。
最近管理パックを変更した場合や、新しい管理パックを展開した場合は、問題が引き続き発生するかどうかを観察します。
上書きを使用して、検出の頻度を下げ、CPU が 1 日のうちで均等に使用されるようにします。ただし、これには、検出が実行されるまでの時間が長くなるというトレードオフがあります。
スケジュールに従って実行するルールとモニターの頻度を下げ、CPU が 1 日のうちで均等に使用されるようにします。ただし、監視とのトレードオフがあります。
エージェントが複数の管理グループで管理されている場合 ("マルチホーム" 構成といいます) も、プロセッサ使用率が高くなることがあります。エージェントを管理している管理グループの数を減らすことを検討します。
上記の方法をすべて試しても問題が解決しない場合は、 Microsoft カスタマー サポート (http://support.microsoft.com/) に問い合わせてください。
このモニターには、"エージェントのプロセッサ使用率の診断データの収集" という関連する診断タスクがあります。このタスクは、CPU 使用率のサンプリングを再実行します。この診断タスクは、既定で無効になっています。
また、オペレーション コンソールにも、CPU 使用率のサンプリングを再実行する "エージェントのプロセッサ使用率の取得" というタスクがあります。"エージェントのプロセッサ使用率の取得" タスクを実行するときは、タイムアウトとサンプル数のパラメーターを設定します。このタスクは、結果のテーブルを返します。エージェントのプロセッサ使用率の取得タスクの実行
Target | Microsoft.SystemCenter.HealthService | ||
Parent Monitor | Microsoft.SystemCenter.HealthService.PerformanceHealthRollup | ||
Category | Custom | ||
Enabled | True | ||
Alert Generate | True | ||
Alert Severity | Error | ||
Alert Priority | Normal | ||
Alert Auto Resolve | True | ||
Monitor Type | Microsoft.SystemCenter.HealthService.SCOMpercentageCPUTimeCounterMonitorType | ||
Remotable | False | ||
Accessibility | Public | ||
Alert Message |
| ||
RunAs | Default |
<UnitMonitor ID="Microsoft.SystemCenter.HealthService.SCOMpercentageCPUTimeMonitor" Accessibility="Public" Enabled="onEssentialMonitoring" Target="SCLibrary!Microsoft.SystemCenter.HealthService" ParentMonitorID="Microsoft.SystemCenter.HealthService.PerformanceHealthRollup" Remotable="false" Priority="Normal" TypeID="Microsoft.SystemCenter.HealthService.SCOMpercentageCPUTimeCounterMonitorType" ConfirmDelivery="true">
<Category>Custom</Category>
<AlertSettings AlertMessage="Microsoft.SystemCenter.HealthService.SCOMpercentageCPUTimeMonitor.AlertMessage">
<AlertOnState>Error</AlertOnState>
<AutoResolve>true</AutoResolve>
<AlertPriority>Normal</AlertPriority>
<AlertSeverity>Error</AlertSeverity>
<AlertParameters>
<AlertParameter1>$Target/Host/Property[Type="Windows!Microsoft.Windows.Computer"]/PrincipalName$</AlertParameter1>
<AlertParameter2>$Data/Context/SampleValue$</AlertParameter2>
</AlertParameters>
</AlertSettings>
<OperationalStates>
<OperationalState ID="CPUTimeOverThreshold" MonitorTypeStateID="OverThreshold" HealthState="Error"/>
<OperationalState ID="CPUTimeUnderThreshold" MonitorTypeStateID="UnderThreshold" HealthState="Success"/>
</OperationalStates>
<Configuration>
<IntervalSeconds>321</IntervalSeconds>
<TimeoutSeconds>300</TimeoutSeconds>
<SyncTime>00:00</SyncTime>
<ComputerName>$Target/Host/Property[Type="Windows!Microsoft.Windows.Computer"]/PrincipalName$</ComputerName>
<Threshold>25</Threshold>
<ConsecutiveSampleCountCritical>6</ConsecutiveSampleCountCritical>
<ConsecutiveSampleCountHealthy>3</ConsecutiveSampleCountHealthy>
</Configuration>
</UnitMonitor>