트랜잭션 성능 APM 이벤트에 대한 경고 생성

Microsoft.SystemCenter.Apm.FunctionTransaction.AlertPerformanceAspectRule (Rule)

Knowledge Base article:

요약

정의된 기간당 총 성능 이벤트 수가 모니터 임계값을 초과하는 경우 인스턴스 상태가 비정상이 됩니다.

원인

실행 시간이 구성된 경고 임계값을 초과하는 경우 응용 프로그램 성능 경고가 생성됩니다. 다양한 함수 호출에 사용된 실행 시간이 백분율로 경고 정보에 자세히 표시됩니다. 서버 문제 또는 쿼리의 구조 및 복잡도 문제로 인해 과도하게 긴 데이터베이스 호출이 발생할 수 있습니다. 긴 파일 I/O 시간은 파일 서버의 문제 때문일 수 있습니다. 웹 서비스 또는 해당 웹 서비스가 상주하는 서버가 작동 중지되거나 웹 서비스 코드에 문제가 있어서 웹 서비스 성능 문제가 발생할 수 있습니다. 응용 프로그램의 긴 내부 실행 시간은 복잡하거나 비효율적인 코드 때문일 수 있습니다.

해결 방법

실행 시간이 구성된 임계값을 초과하는 경우 응용 프로그램 성능 경고가 생성됩니다. 일반적인 응용 프로그램 성능 저하의 원인은 긴 데이터베이스 호출, 긴 웹 서비스 호출, 느린 .NET 원격 호출 또는 느린 COM+ 호출이나 비효율적인 응용 프로그램 코드 때문일 수 있습니다.

경고 설명 및 경고 컨텍스트 탭에 있는 이벤트 정보에 대한 링크를 통해 이 경고에 대한 추가적인 세부 정보에 액세스할 수 있습니다. 링크를 클릭하면 Application Diagnostics 콘솔에서 이벤트가 열립니다. Application Diagnostics 콘솔에는 이 이벤트에 대한 정보와 검색된 관련 이벤트 및 비슷한 이벤트에 대한 정보가 포함되어 있습니다.

Element properties:

TargetMicrosoft.SystemCenter.Apm.FunctionTransaction
CategoryAlert
EnabledFalse
Alert GenerateTrue
Alert SeverityWarning
Alert PriorityNormal
RemotableTrue
Alert Message
트랜잭션 성능 예외
{2}의 {1} 응용 프로그램에 대한 {3} 트랜잭션이 구성된 임계값 {0}ms를 초과했습니다. 자세한 내용은 다음 링크를 참조하세요. $Url[Query='{4}']/APMEvent$

Member Modules:

ID Module Type TypeId RunAs 
LOBProvider DataSource Microsoft.SystemCenter.Apm.FunctionTransaction.LobDataProvider Default
AlertWriteAction WriteAction System.Health.GenerateAlert Default

Source Code:

<Rule ID="Microsoft.SystemCenter.Apm.FunctionTransaction.AlertPerformanceAspectRule" Enabled="false" ConfirmDelivery="true" Target="Microsoft.SystemCenter.Apm.FunctionTransaction">
<Category>Alert</Category>
<DataSources>
<DataSource ID="LOBProvider" TypeID="Microsoft.SystemCenter.Apm.FunctionTransaction.LobDataProvider">
<Name>$Target/Host/Property[Type="Microsoft.SystemCenter.Apm.ApplicationInstanceBase"]/ApplicationName$</Name>
<AspectType>performance</AspectType>
<RootName>$Target/Property[Type="Microsoft.SystemCenter.Apm.FunctionTransaction"]/FunctionName$</RootName>
</DataSource>
</DataSources>
<WriteActions>
<WriteAction ID="AlertWriteAction" TypeID="Health!System.Health.GenerateAlert">
<Priority>1</Priority>
<Severity>1</Severity>
<AlertName/>
<AlertDescription/>
<AlertMessageId>$MPElement[Name='Microsoft.SystemCenter.Apm.FunctionTransaction.AlertPerformanceAspectRule.AlertMessage']$</AlertMessageId>
<AlertParameters>
<AlertParameter1>$Target/Property[Type="Microsoft.SystemCenter.Apm.Transaction"]/PerformanceThreshold$</AlertParameter1>
<AlertParameter2>$Target/Host/Property[Type="Microsoft.SystemCenter.Apm.ApplicationInstanceBase"]/ApplicationName$</AlertParameter2>
<AlertParameter3>$Target/Host/Host/Host/Property[Type="Windows!Microsoft.Windows.Computer"]/NetworkName$</AlertParameter3>
<AlertParameter4>$Target/Property[Type="Microsoft.SystemCenter.Apm.TransactionBase"]/TransactionName$</AlertParameter4>
<AlertParameter5>$Data/EventData/ViewDetail$</AlertParameter5>
</AlertParameters>
<Suppression>
<SuppressionValue>$Data/EventData/eventConsolidationHash$</SuppressionValue>
</Suppression>
<Custom1>Performance</Custom1>
</WriteAction>
</WriteActions>
</Rule>