모든 에이전트 프로세스를 모니터링하여 프로세서 시간이 너무 오래 걸리는 에이전트의 잠재적인 문제를 확인합니다.
이 모니터는 Operations Manager 에이전트 및 관련 프로세스의 총 CPU 사용률을 계산하고 CPU 사용률이 특정 연속 샘플 수에 지정된 임계값을 초과할 경우 경고를 생성합니다.
이 모니터의 기본 스크립트는 Operations Manager 에이전트 프로세스(HealthService.exe), 해당 자식 모니터링 호스트 프로세스(MonitoringHost.exe) 및 이러한 모니터링 호스트 프로세스의 자식 프로세스(cscript.exe, PowerShell.exe 등)의 CPU 사용률을 찾아 샘플링하는 방식으로 작동합니다. 스크립트는 계산을 세 번 실행하고 세 개의 연속 샘플 수의 평균을 출력하며, 모니터에서 이를 사용하여 위험 또는 정상 상태를 결정합니다.
재정의를 사용하거나 다음 매개 변수를 사용자 지정하여 이 모니터의 기본 동작을 변경할 수 있습니다.
빈도(초). 모니터가 에이전트 프로세서 사용률을 샘플링하는 빈도입니다. 기본적으로 모니터는 300초(5분)마다 에이전트 프로세서 사용률을 평가합니다.
위험 상태의 연속 샘플 수. 기본적으로 이 모니터는 6개의 연속 샘플 수가 지정된 임계값을 초과하는 경우 위험 상태를 보고합니다.
정상 상태의 연속 샘플 수. 기본적으로 이 모니터는 3개의 연속 샘플 수가 지정된 임계값 미만인 경우 정상 상태를 반환합니다.
Threshold. By default, the threshold for CPU utilization is 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 사용률을 높이는 요소를 파악해야 합니다. 다음 단계를 조합하여 추가 조사를 수행합니다.
다음 보기를 사용하여 에이전트 프로세서 사용률, 워크플로 수 및 모듈 수에 대한 최신 기록을 검토합니다(에이전트 성능 보기). 에이전트 프로세서 사용률 데이터는 문제가 최근에 발생한 것인지, 더 오랜 기간 동안 발생한 것인지에 대한 분석을 제공합니다. 워크플로 및 모듈 수 데이터는 에이전트에서 수행되는 다양한 규칙, 모니터 및 검색에 대한 작업 부하를 표시합니다. 또한 반대로 사용하려면 이 데이터를 정상 에이전트와 비교해야 합니다.
Effective Configuration Viewer(효과적인 구성 뷰어)(http://go.microsoft.com/fwlink/?LinkId=182300)와 같은 도구를 사용하여 에이전트에서 검색되는 클래스 인스턴스 수를 파악할 수 있습니다. 클래스 인스턴스가 많을수록 워크플로 및 모듈 수가 더 많아질 수 있으며 작업 부하도 더 많아질 수 있습니다.
Using Performance Monitor, collect more detailed % Processor Time measurements from the Process object. This will give insight as to which processes are contributing the most significantly to overall processor utilization.
최신 관리 팩 업데이트나 변경 내용을 검토하여 이러한 업데이트나 변경 내용이 CPU 사용률의 증가에 영향을 미치는지 확인합니다.
원인이 확인되면 다음 단계 중 하나를 수행하여 문제를 해결할 수 있습니다.
관리 팩이 최근에 만들어졌거나 새 관리 팩이 배포된 경우 상태를 모니터링하여 문제가 계속되는지 확인합니다.
재정의를 통해 검색 빈도를 낮추고 해당 CPU 사용률을 하루에 걸쳐 분산시킵니다. 이렇게 하면 검색을 수행하는 데 잠재적으로 더 오랜 시간이 걸리게 됩니다.
일정에서 실행되는 규칙 또는 모니터의 빈도를 낮추어 CPU 사용률을 하루에 걸쳐 분산시킵니다. 이렇게 하면 모니터링의 기능은 떨어집니다.
에이전트가 여러 관리 그룹에서 관리되는 경우("멀티홈" 구성이라고 함)에도 프로세서 사용률이 더 높아집니다. 에이전트를 관리하는 관리 그룹 수를 줄이는 것이 좋습니다.
위의 모든 단계로도 문제가 해결되지 않으면 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>