다음을 통해 공유


StreamInsight 성능 카운터 및 이벤트 모니터링

이제 기존의 진단 인프라를 사용하여 성능 모니터 및 이벤트 뷰어를 통해 StreamInsight 프로세스 및 쿼리를 모니터링하고 문제 해결할 수 있습니다.

항목 내용

  • 성능 카운터

    • 성능 카운터 구성

    • 성능 카운터 목록

    • 성능 카운터의 유용성

  • 관리 이벤트

    • 관리 로깅 구성

    • 관리 이벤트 목록

성능 카운터

StreamInsight는 성능 카운터를 설치하고 구성합니다. 성능 모니터 또는 다른 모니터링 도구를 사용하여 이러한 카운터를 모니터링할 수 있습니다.

성능 카운터는 다음 StreamInsight 개체에 대해 사용할 수 있습니다.

  • 서버

  • 쿼리

  • 입력 어댑터

  • 복구

성능 카운터 구성

StreamInsight를 설치할 때 성능 카운터가 설치되고 구성됩니다. 이 설치 옵션은 구성할 수 없습니다.

서버 범주의 카운터는 기본적으로 설정되어 있으며 해제할 수 없습니다. 쿼리 및 입력 어댑터 범주의 카운터는 기본적으로 해제되어 있습니다. 쿼리에 대한 카운터를 설정하면 연결된 입력 어댑터에 대한 카운터도 설정됩니다. StreamInsight 인스턴스를 다시 시작할 때 이러한 기본 동작이 복원됩니다.

단일 쿼리에 대한 카운터를 설정하는 방법

Server.SetDiagnosticSettings에 대한 호출에서 새 Aspect를 설정하여 특정 쿼리 및 해당 쿼리와 연결된 입력 어댑터에 대한 카운터를 설정합니다.

예를 들어 다음 코드를 사용하여 Uri가 cep:/Server/Application/MyApp/Query/MyQuery인 쿼리에 대한 성능 카운터를 설정할 수 있습니다.

DiagnosticSettings settings = server.GetDiagnosticSettings(new Uri(“cep:/Server/Application/MyApp/Query/MyQuery”);
Settings.Aspects |= DiagnosticAspect.PerformanceCounters;
server.SetDiagnosticSettings(new Uri(“cep:/Server/Application/MyApp/Query/MyQuery”), settings);

다음 코드를 사용하여 동일한 쿼리에 대한 성능 카운터를 해제할 수 있습니다.

DiagnosticSettings settings = server.GetDiagnosticSettings(new Uri(“cep:/Server/Application/MyApp/Query/MyQuery”);
Settings.Aspects & ~DiagnosticAspect.PerformanceCounters;
server.SetDiagnosticSettings(new Uri(“cep:/Server/Application/MyApp/Query/MyQuery”), settings);

모든 쿼리에 대한 카운터를 설정하는 방법

또한 foreach 루프를 사용하여 응용 프로그램의 모든 쿼리 및 입력 어댑터에 대한 성능 카운터를 설정할 수 있습니다.

foreach (var q in application.Queries)
   {
       DiagnosticSettings settings = server.GetDiagnosticSettings(q.Value.Name);
       settings.Aspects |= DiagnosticAspect.PerformanceCounters;
       server.SetDiagnosticSettings(q.Value.Name, settings);
   }

위의 코드 샘플에서 사용된 클래스 및 메서드에 대한 자세한 내용은 다음 항목을 참조하십시오.

[맨 위로]

성능 카운터 목록

명명 규칙

16자를 초과하는 응용 프로그램 이름과 같은 문자열은 다음 수식에 따라 줄어듭니다. first 10 characters + 2 periods + last 4 characters.

아래에 설명된 특정 명명 규칙에서 uniqueid는 런타임 시 개체의 ID를 나타냅니다.

서버 카운터

서버 인스턴스에 대한 명명 규칙은 %PROCESSNAME%[uniqueid]입니다. 여기서 %PROCESSNAME%은 호스팅 프로세스의 이름입니다.

이름

설명

Events in input queues

모든 쿼리의 입력 큐에 있는 이벤트 수입니다.

Events in output queues

모든 쿼리의 출력 큐에 있는 이벤트 수입니다.

Memory

모든 스트림, 이벤트 및 연산자 인덱스에 사용되는 총 메모리(바이트)입니다.

Running queries

현재 실행 중인 쿼리 수입니다.

쿼리 카운터

쿼리 인스턴스에 대한 명명 규칙은 %APPLICATION NAME%,%QUERY NAME%[uniqueid],%SERVER_INSTANCE_NAME%입니다. 여기서 %SERVER_INSTANCE_NAME%는 쿼리가 속한 서버의 인스턴스 이름입니다.

이름

설명

Average produced event latency

매 초마다 쿼리에서 생성한 이벤트의 평균 대기 시간(밀리초)입니다.

CTIs produced

생성된 CTI 수입니다.

Events in output queue

출력 큐에 있는 이벤트 수입니다.

Events produced

생성된 이벤트 수입니다.

Memory

이벤트, 인덱스 및 스트림을 포함하여 사용된 총 메모리(바이트)입니다.

Produced events/sec

초당 생성된 이벤트 수입니다.

입력 어댑터 카운터

어댑터 인스턴스에 대한 명명 규칙은 %APPLICATION NAME%,%QUERY NAME%,%ADAPTER NAME%[uniqueid],%SERVER_INSTANCE_NAME%입니다.

이름

설명

Adjusted events

AdvanceTimeSettings 정책에 따라 임시 메타데이터가 조정된 이벤트 수입니다.

CTIs input

입력 큐에 보낸 CTI 수입니다.

Dropped events

AdvanceTimeSettings 정책에 따라 삭제한 이벤트 수입니다.

Events in input queue

CTI를 포함한 입력 큐에 있는 이벤트 수입니다.

Incoming events/sec

초당 어댑터가 받은 이벤트 수입니다.

Resumes/sec

초당 실행 중 상태로의 상태 전환 수입니다.

Suspensions/sec

초당 일시 중지됨 상태로의 상태 전환 수입니다.

Total events enqueued

큐에 넣은 이벤트 수입니다.

[맨 위로]

성능 카운터의 유용성

다음은 StreamInsight 응용 프로그램을 이해하고, 모니터링하고, 문제 해결하는 데 성능 카운터가 유용한 몇 가지 시나리오의 예입니다.

  • 서버 시나리오

    • 메모리 사용 공간. 호스팅 응용 프로그램과는 별도로 포함된 StreamInsight 인스턴스가 차지하는 메모리의 양은 얼마입니까?

    • 용량 계획. 성능이 저하되기 전에 이 서버에서 실행할 수 있는 쿼리 수는 몇 개입니다?

    • 사후 평가 분석. 서버가 충돌했을 때 실행 중이던 쿼리 수는 몇 개입니까?

  • 쿼리 시나리오

    • 처리량 모니터링. 어디서 병목 상태가 발생합니까?

    • 대기 시간 모니터링

[맨 위로]

관리 이벤트

StreamInsight는 Windows 응용 프로그램 이벤트 로그에 이벤트를 로깅합니다. 이벤트 뷰어 또는 다른 모니터링 도구를 사용하여 이 로그를 검토할 수 있습니다. 로깅된 이벤트를 사용하면 StreamInsight 응용 프로그램에서 발생할 수 있는 잘못된 부분에 대한 문제를 해결하고 상태 변경 사항을 모니터링할 수 있습니다.

이벤트는 다음 StreamInsight 개체에 의해 로깅됩니다.

  • 서버

  • 쿼리

관리 로깅 구성

관리 로깅은 기본적으로 설정됩니다. StreamInsight 인스턴스(cep:/Server/) 수준에서만 관리 로깅을 해제하고 설정할 수 있습니다.

관리 로깅 해제 방법

DiagnosticSettings settings = server.GetDiagnosticSettings(new Uri("cep:/Server/"));
settings.Aspects &= ~DiagnosticAspect.AdminLog;
server.SetDiagnosticSettings(new Uri("cep:/Server/"), settings);

관리 로깅 설정 방법

DiagnosticSettings settings = server.GetDiagnosticSettings(new Uri("cep:/Server/"));
settings.Aspects |= DiagnosticAspect.AdminLog;
server.SetDiagnosticSettings(new Uri("cep:/Server/"), settings);

[맨 위로]

관리 이벤트 목록

다음 표에서는 이벤트 로그에서 볼 수 있는 이벤트를 보여 줍니다.

모든 StreamInsight 관리 이벤트에 대한 원본StreamInsight입니다.

쿼리 이벤트

기호

이벤트 ID

수준

메시지

매개 변수

QueryInitializing

11001

정보

쿼리 {0}을(를) 초기화하는 중입니다.

쿼리 Uri

QueryRunning

11002

정보

쿼리 {0}을(를) 실행하는 중입니다.

쿼리 Uri

QueryCheckpointing

11003

정보

쿼리 {0}의 검사점을 설정하는 중입니다.

쿼리 Uri

QueryStopping

11004

정보

쿼리 {0}을(를) 중지하는 중입니다.

쿼리 Uri

QuerySuspended

11005

정보

쿼리 {0}이(가) 일시 중지되었습니다.

쿼리 Uri

QueryCompleted

11006

정보

쿼리 {0}이(가) 완료되었습니다.

쿼리 Uri

QueryAborted

11007

경고

쿼리 {0}이(가) 중단되었습니다.

쿼리 Uri

QueryStopped

11008

정보

쿼리 {0}이(가) 중지되었습니다.

쿼리 Uri

QueryError

11500

경고

쿼리 {0}에서 예외가 발생했습니다. 예외 정보: {1}

쿼리 Uri, 예외 메시지입니다.

QueryRecoveryError

11501

오류

복구하는 동안 쿼리 {0}에서 예외가 발생했습니다. 예외 정보: {1}

쿼리 Uri, 예외 메시지입니다.

QueryCheckpointError

11502

오류

검사점을 설정하는 동안 쿼리 {0}에서 예외가 발생했습니다. 예외 정보: {1}

쿼리 Uri, 예외 메시지입니다.

서버 이벤트

기호

이벤트 ID

수준

메시지

매개 변수

ServerCreated

1000

정보

서버를 만들었습니다.

ServerDisposed

1001

정보

서버를 삭제했습니다.

[맨 위로]