StreamInsight 서버 및 쿼리 모니터링

StreamInsight 서버 상태를 모니터링할 때는 전체 시스템 상태와 쿼리 성능을 추적합니다. 서버에서 실행 중인 StreamInsight 쿼리를 모니터링하고 StreamInsight 쿼리를 구성하는 엔터티가 시스템 리소스를 사용하는 방법을 모니터링하여 StreamInsight 서버의 상태를 캡처합니다.

항목 내용

  • 진단 보기 만들기

  • 진단 보기를 사용하여 해결할 수 있는 문제

  • 쿼리 상태

  • 쿼리 수준 모니터링 이해

  • 쿼리 대기 시간 모니터링

  • 진단 속성 목록

    • 연산자 진단

    • 어댑터 진단

    • 스트림 진단

    • 쿼리 진단

    • 게시된 스트림 진단

    • 서버 진단

  • PowerShell을 사용하여 진단 액세스

진단 보기 만들기

진단 보기 API를 사용하여 모니터링 정보를 가져올 수 있습니다. 이 API를 사용하려면 먼저 포함 모드 및 독립 실행형 모드의 서버 배포에서 모두 관리 웹 서비스를 사용하도록 설정해야 하며, 이 웹 서비스를 통해 클라이언트 응용 프로그램을 서버에 연결해야 합니다. 자세한 내용은 StreamInsight Server 서버에 게시 및 연결을 참조하십시오.

진단 API를 사용하여 결과를 GUI 인터페이스에 반환하는 StreamInsight Event Flow Debugger의 진단 기능을 사용하여 서버와 쿼리를 모니터링할 수도 있습니다. Event Flow Debugger는 활성 StreamInsight 서버에 연결해야 하며 서버의 여러 개체를 보려면 개체 탐색기를 사용해야 합니다. 개체를 마우스 오른쪽 단추로 클릭하면 해당 엔터티의 런타임 진단을 가져올 수 있습니다. 자세한 내용은 StreamInsight Event Flow Debugger 사용을 참조하십시오.

서버의 모든 개체에 액세스할 때는 계층적 명명 스키마를 기반으로 하는 URI(Uniform Resource Identifier)를 사용합니다. 이 명명 스키마는 서버에서 시작하여 쿼리 연산자 및 이벤트 스트림으로 계속됩니다. 다음 개체에서 서버 수준 진단을 검색할 수 있습니다.

  • cep:/Server

  • cep:/Server/PlanManager

  • cep:/Server/EventManager

  • cep:/Server/Query

특정 쿼리를 참조하려면 cep:/Server/Application/ApplicationName/Query/QueryName 명명 스키마를 사용합니다.

쿼리에 속하는 특정 연산자 및 스트림을 참조하려면 다음 명명 스키마를 사용합니다. 어댑터도 쿼리에서는 연산자로 간주됩니다. 어댑터의 경우 연산자 명명법을 사용합니다.

  • cep:/Server/Application/ApplicationName/Query/QueryName/Operator/OperatorName

  • cep:/Server/Application/ApplicationName/Query/QueryName/Stream/StreamName

예를 들어 'ObjectModelSample' 응용 프로그램에서 'TrafficSensorQuery' 쿼리를 참조하려면 cep:/Server/Application/ObjectModelSample/Query/TrafficSensorQuery를 사용합니다.

이러한 개체의 진단 정보는 GetDiagnosticView() 메서드를 호출하여 가져옵니다. 진단 설정 검색은 측면(메모리, CPU 및 해당 설정과 관련된 기타 특성)과 중요도 수준의 두 차원을 기준으로 필터링할 수 있습니다. SetDiagnosticsSettings() 및 ClearDiagnosticSettings() 메서드를 사용하여 지정된 쿼리에 대해 특정 설정을 설정하거나 지우는 방법으로 이러한 필터링 조건을 설정할 수 있습니다. 다음은 실행 중인 쿼리의 여러 개체에 대해 진단을 출력하는 예로, 'ExplicitServer.cs' 예제에서 발췌한 것입니다. 이 예에서는 "MyInstance"라는 등록된 StreamInsight 인스턴스가 있다고 가정합니다.

public class ExplicitServer
{
        public static void Main(string[] args)
        {
            using (Server server = Server.Create("MyInstance"))
{
            try
            {
                // Create application in server

                // Create query logic as a query template

                // Register adapter factories

                // bind query to event producers and consumers

                // Create bound query that can be run

      // Create a tracer to output information on the console.
                TraceListener tracer = new ConsoleTraceListener();

                // Start the query 
                query.Start();

                // Retrieve diagnostic information from the StreamInsight server.
                RetrieveDiagnostics(server.GetDiagnosticView(new Uri("cep:/Server/EventManager")), tracer);
                RetrieveDiagnostics(server.GetDiagnosticView(new Uri("cep:/Server/PlanManager")), tracer);
                RetrieveDiagnostics(server.GetDiagnosticView(new Uri("cep:/Server/Application/ObjectModelSample/Query/TrafficSensorQuery")), tracer);

                DiagnosticSettings settings = new DiagnosticSettings(DiagnosticAspect.GenerateErrorReports, DiagnosticLevel.Always);
                server.SetDiagnosticSettings(new Uri("cep:/Server"), settings);

                tracer.WriteLine("Global Server Diagnostics");
                RetrieveDiagnostics(server.GetDiagnosticView(new Uri("cep:/Server/EventManager")), tracer);
                RetrieveDiagnostics(server.GetDiagnosticView(new Uri("cep:/Server/PlanManager")), tracer);
                RetrieveDiagnostics(server.GetDiagnosticView(new Uri("cep:/Server/Query")), tracer);
                
                tracer.WriteLine("Summary Query Diagnostics");
                RetrieveDiagnostics(server.GetDiagnosticView(new Uri("cep:/Server/Application/ObjectModelSample/Query/TrafficSensorQuery")), tracer);
                tracer.WriteLine("Operator Diagnostics");
                RetrieveDiagnostics(server.GetDiagnosticView(new Uri("cep:/Server/Application/ObjectModelSample/Query/TrafficSensorQuery/Operator/sensorInput")), tracer);


                query.Stop();
            }
            catch (Exception e)
            {
                tracer.WriteLine(e.ToString());
            }
}
      }

        private static void RetrieveDiagnostics(DiagnosticView diagview, TraceListener traceListener)
        {
            // Display diagnostics for diagnostic view object
            traceListener.WriteLine("Diagnostic View for '" + diagview.ObjectName + "':");
            foreach (KeyValuePair<string, object> diagprop in diagview)
            {
                traceListener.WriteLine(" " + diagprop.Key + ": " + diagprop.Value);
            }
        }
}

앞의 예에서 사용된 API에 대한 자세한 내용은 DiagnosticView를 참조하십시오. 추적 수신기를 사용하는 방법은 추적 수신기를 참조하십시오.

[맨 위로]

진단 보기를 사용하여 해결할 수 있는 문제

진단 보기를 사용하면 StreamInsight 응용 프로그램에서 발생하는 여러 종류의 문제를 해결할 수 있습니다. 예를 들면 다음과 같습니다.

근본 원인

증상

사용자 정의 확장이 느림

시스템 대기 시간이 김

사용자 정의 확장에서 예외가 발생함

쿼리에 대해 응답이 없거나 쿼리가 중단됨

입력 어댑터의 데이터 제공 속도가 느림

데이터 대기 시간이 김

입력 어댑터가 CTI를 생성하지 않음

쿼리에 대해 응답이 없음

출력 어댑터가 따라가지 못함

시스템 대기 시간이 김

그러나 서버 수준 문제나 로컬 네트워크 문제를 해결하는 데 진단 보기를 사용할 경우 StreamInsight 응용 프로그램에 영향을 줄 수 있으므로 일반적으로 이러한 문제를 해결하는 데는 진단 보기를 사용할 수 없습니다. 느린 네트워크, 느린 디스크 I/O, 메모리 부족, 서버의 리소스 경합도 진단 보기로 해결할 수 없는 문제입니다.

[맨 위로]

쿼리 상태

쿼리는 해당 수명 동안 여러 가지 상태를 거칩니다. 다음 표에서는 이러한 상태에 대해 설명합니다.

쿼리 상태

설명

중지됨

쿼리가 더 이상 활성 상태가 아닙니다. 쿼리 계획이 보유되지 않습니다.

이 상태는 일반적으로 쿼리의 Stop 메서드를 호출한 후에 발생합니다.

초기화하는 중

이 상태는 일반적으로 다음 이벤트 중 하나가 발생한 후에 발생합니다.

  • 쿼리가 중지되었으며 사용자가 쿼리의 Start 메서드를 호출했습니다. 사용자 상호 작용이 없으면 쿼리가 Running 상태로 전환됩니다.

  • 복구 가능한 쿼리가 실행 중이었으며 서버에서 오류를 복구하고 있습니다. 쿼리 상태를 변경하려면 사용자가 Start 메서드를 호출해야 합니다.

실행 중

쿼리가 이벤트를 처리 중입니다.

이 상태는 일반적으로 쿼리의 Start 메서드를 호출한 후에 발생합니다.

검사점 설정 중

쿼리가 실행 중이며 검사점을 설정하는 중입니다.

이 상태는 일반적으로 BeginCheckpoint 메서드를 호출한 후에 발생합니다.

중지 중

사용자가 해당 쿼리를 중지하도록 요청했습니다.

이 상태는 일반적으로 쿼리의 Stop 메서드를 호출한 후에 발생합니다.

일시 중지됨

복구 가능한 쿼리를 복구하지 못했거나 복구 없이 서버를 시작했기 때문에 쿼리를 복구할 수 없습니다.

완료

쿼리가 정상적으로 완료되었습니다. 즉, 입력 어댑터가 스트림 끝 표식을 큐에 넣었으며 출력 어댑터가 이를 모두 소비했습니다.

중단됨

오류가 발생했습니다. 계획 관리자에서는 쿼리를 사용할 수 있습니다.

[맨 위로]

쿼리 수준 모니터링 이해

StreamInsight 서버에서 쿼리 성능을 모니터링할 때는 관리 서비스 API에서 제공하는 쿼리 수준 모니터링 특성을 사용할 수 있습니다. 다음의 이벤트 흐름도를 통해 이러한 모니터링 특성을 사용하는 방법을 파악할 수 있습니다.

CEP 쿼리를 통해 이벤트 모니터링

위의 그림에 따라 입력 어댑터에서 쿼리를 통과해 출력 어댑터로 이동하는 이벤트 경로(왼쪽에서 오른쪽)를 기록하는 4개의 측정 지점이 있다고 가정해 봅니다. 이들 측정 지점을 기반으로 다음과 같은 메트릭이 파생될 수 있습니다.

  • Incoming - 모든 입력 어댑터에서 들어오는 이벤트를 기록합니다. 입력 어댑터에서 쿼리로 유입되는 원시 입력 이벤트 도착 비율의 측정값입니다.

  • Consumed - StreamInsight 서버, 즉 입력 어댑터 바로 다음에 오는 모든 연산자에서 사용한 이벤트를 기록합니다. 서버로 유입되어 큐에 배치된 이벤트의 측정값입니다.

  • Produced - 출력 어댑터 직전의 마지막 연산자에서 나가는 모든 이벤트를 기록합니다. 쿼리의 큐에서 제거된 이벤트의 측정값입니다.

  • Outgoing - 출력 어댑터에서 나가는 모든 이벤트를 기록합니다. StreamInsight 서버에서 싱크로 이동하는 이벤트 출발 비율의 측정값입니다.

이 그림을 토대로 하여 원하는 이벤트 흐름 영역을 기준으로 반환할 적절한 특성을 결정할 수 있습니다. 예를 들어 쿼리에서 사용하는 이벤트 수를 확인하려면 QueryTotalConsumedEventCount 특성을 사용하고, 쿼리에서 생성한 이벤트를 확인하려면 QueryTotalProducedEventCount 특성을 사용합니다.

[맨 위로]

쿼리 대기 시간 모니터링

대기 시간은 특정 게이트(Incoming, Produced, Consumed, Outgoing)에서 모든 이벤트 도착 및 출발에 대해 계산된 누적 수입니다. 특정 두 시점에서 측정값 간의 평균 대기 시간을 (S2 - S1) / (C2 - C1)로 계산할 수 있습니다. 여기서 S는 지정된 게이트의 누적 대기 시간 합이고 C는 해당 게이트 지점의 이벤트 수입니다.

예를 들어 평균 사용 대기 시간을 계산하려면 타임스탬프 t1의 누적 사용 대기 시간(QueryTotalConsumedEventLatency)인 S1과 타임스탬프 t1의 총 사용 이벤트 개수(QueryTotalConsumedEventCount)인 C1을 측정합니다. 그런 다음 다른 타임스탬프(t2)에서 같은 값을 반복 측정하여 사용 이벤트 대기 시간을 (S2 - S1)/ (C2 - C1)로 계산하면 됩니다.

QueryTotalIncomingEventCount에서 QueryLastProducedCtiTimestamp까지의 특성을 사용하여 이벤트를 쿼리 내부나 외부로 전송할 때의 어댑터 효율성과 StreamInsight 서버가 이벤트를 처리할 수 있는 속도를 확인할 수 있습니다.

OperatorEventMemoryOperatorIndexMemory 특성의 값을 합하면 연산자에서 사용하는 총 메모리를 확인할 수 있습니다.

[맨 위로]

진단 속성

진단 보기에서는 서버, 쿼리, 게시된 스트림, 연산자, 어댑터 등의 여러 가지 개체 세분성 수준에서 특성을 반환할 수 있습니다.

진단은 계층에서 세분성이 보다 높은 개체부터 낮은 개체순으로 집계될 수 있도록 디자인됩니다. 이러한 각 수준에 대해 다음과 같은 종류의 진단 정보를 가져올 수 있습니다.

  • 정적 정보(S)에서는 개체 속성이 반환됩니다. 정적 정보는 쿼리 작업 조건이 바뀌어도 변경되지 않습니다.

  • 비집계 정보(N)에서는 자식 개체에서 부모 개체로 집계되지 않는 통계가 반환됩니다.

  • 집계 정보(A)에서는 자식 개체에서 부모 개체로 집계되는 통계가 반환됩니다.

아래에 나와 있는 모든 진단 보기 속성은 DiagnosticViewProperty에서 사용할 수 있습니다.

연산자 진단

메타데이터

다음 표에서는 쿼리의 개별 연산자에 대해 설명하는 메타데이터 속성을 보여 줍니다. 이러한 속성의 값은 변경되지 않습니다.

속성 이름

유형

설명

OperatorId

Int64

연산자의 ID입니다.

OperatorKind

String

연산자의 유형입니다.

OperatorQueryId

Int64

현재 연산자가 상주하는 쿼리의 ID입니다.

OperatorEventType

String

연산자 출력 유형의 XML 표현입니다. G&A의 경우 출력이 아닌 그룹화 필드 유형입니다.

비집계 통계

다음 표에서는 연산자의 모든 논리 인스턴스에 대해 집계되지만 쿼리 통계로는 집계되지 않는 통계를 보여 줍니다.

속성 이름

유형

설명

OperatorTotalInputEventCount

Int64

연산자에 대한 총 입력 이벤트 수입니다.

OperatorMinInputEventCountAcrossWorkers

Int64

모든 작업자에 걸쳐 연산자에 대해 처리된 최소 입력 이벤트 수입니다.

OperatorMaxInputEventCountAcrossWorkers

Int64

모든 작업자에 걸쳐 연산자에 대해 처리된 최대 입력 이벤트 수입니다.

OperatorTotalOutputEventCount

Int64

연산자에 대한 총 출력 이벤트 수입니다.

OperatorMinOutputEventCountAcrossWorkers

Int64

모든 작업자에 걸쳐 연산자에 대해 생성된 최소 출력 이벤트 수입니다.

OperatorMaxOutputEventCountAcrossWorkers

Int64

모든 작업자에 걸쳐 연산자에 대해 생성된 최대 출력 이벤트 수입니다.

OperatorLastOutputCtiTimestamp

DateTime

연산자에서 생성한 마지막 CTI의 타임스탬프(응용 프로그램 시간)입니다.

OperatorTotalOutputCtiCount

Int64

연산자에서 생성한 총 CTI 이벤트 수입니다.

OperatorMinOutputCtiCountAcrossWorkers

Int64

모든 작업자에 걸쳐 연산자에 대해 생성된 최소 CTI 이벤트 수입니다.

OperatorMaxOutputCtiCountAcrossWorkers

Int64

모든 작업자에 걸쳐 연산자에 대해 생성된 최대 CTI 이벤트 수입니다.

OperatorEventCountSinceLastCti

Int64

모든 작업자에 걸쳐 연산자에 대해 생성된 마지막 CTI 이후 연산자에 의해 생성된 집계 이벤트 수입니다.

Cleanse 연산자의 경우 이 값은 일반적으로 0입니다.

OperatorMinIndexEventCountAcrossWorkers

Int64

작업자에 걸쳐 연산자에 대해 생성된 인덱스의 최소 이벤트 수입니다.

OperatorMaxIndexEventCountAcrossWorkers

Int64

작업자에 걸쳐 연산자에 대해 생성된 인덱스의 최대 이벤트 수입니다.

OperatorMinEventMemoryAcrossWorkers

Int64

모든 작업자에 걸쳐 연산자에 대해 생성된 인덱스의 이벤트가 사용한 최소 메모리 크기(바이트)입니다.

OperatorMaxEventMemoryAcrossWorkers

Int64

모든 작업자에 걸쳐 연산자에 대해 생성된 인덱스의 이벤트가 사용한 최대 메모리 크기(바이트)입니다.

OperatorMinIndexMemoryAcrossWorkers

Int64

모든 작업자에 걸쳐 연산자에 대해 생성된 인덱스에서 사용한 최소 메모리 크기(바이트)입니다.

OperatorMaxIndexMemoryAcrossWorkers

Int64

모든 작업자에 걸쳐 연산자에 대해 생성된 인덱스에서 사용한 최대 메모리 크기(바이트)입니다.

OperatorNumberOfWorkers

Int32

연산자를 실행 중인 계산 단위의 수입니다.

OperatorGroupIdField

String

그룹 및 적용 연산자에 대한 그룹 ID 필드 이름입니다.

OperatorMinCpuUsageAcrossWorkers

Int64

작업자에 걸쳐 연산자의 최소 CPU 사용량(밀리초)입니다.

OperatorMaxCpuUsageAcrossWorkers

Int64

작업자에 걸쳐 생성된 연산자의 최대 CPU 사용량(밀리초)입니다.

OperatorMinEventAdjustedCount

Int64

작업자에 걸쳐 연산자에 대해 조정된 최소 이벤트 수입니다.

OperatorMaxEventAdjustedCount

Int64

작업자에 걸쳐 연산자에 대해 조정된 최대 이벤트 수입니다.

OperatorTotalEventAdjustedCount

Int64

작업자에 걸쳐 연산자에 대해 조정된 총 이벤트 수입니다.

OperatorMinEventDroppedCount

Int64

작업자에 걸쳐 연산자에 대해 삭제된 최소 이벤트 수입니다.

OperatorMaxEventDroppedCount

Int64

작업자에 걸쳐 연산자에 대해 삭제된 최대 이벤트 수입니다.

OperatorTotalEventDroppedCount

Int64

작업자에 걸쳐 연산자에 대해 삭제된 총 이벤트 수입니다.

집계 통계

다음 표에서는 연산자의 모든 논리 인스턴스에 대해 집계되고 쿼리 통계로도 집계되는 통계를 보여 줍니다.

속성 이름

유형

설명

OperatorIndexEventCount

Int64

연산자의 모든 활성 논리 인스턴스에 걸쳐 인덱스에서 사용한 메모리입니다.

OperatorEventMemory

Int64

연산자의 모든 논리 인스턴스에 걸쳐 인덱스 이벤트가 사용한 메모리의 크기(바이트)입니다.

OperatorIndexMemory

Int64

연산자에서 인덱스가 사용하는 메모리의 크기(바이트)입니다.

OperatorTotalCpuUsage

Int64

연산자의 총 CPU 사용량(밀리초)입니다.

OperatorTotalScheduledCount

Int64

연산자 일정을 지정한 총 횟수입니다.

[맨 위로]

어댑터 진단

이 섹션에서는 어댑터와 관련된 진단 속성을 보여 줍니다. 어댑터는 특수한 유형의 연산자이므로 연산자에 대해 나열된 모든 진단 속성을 포함합니다.

메타데이터

다음 표에서는 개별 어댑터에 대해 설명하는 메타데이터 속성을 보여 줍니다. 참고: AdapterState 속성의 값은 변경될 수 있습니다.

속성 이름

유형

설명

AdapterStateTransitionHistory

String

각 어댑터에 대한 마지막 몇 개 어댑터 상태 전환의 XML 표현입니다.

통계

다음 표에서는 어댑터와 관련된 통계를 보여 줍니다.

속성 이름

유형

설명

AdapterTotalSuspendCount

Int64

어댑터의 모든 인스턴스가 일시 중지된 총 횟수입니다.

AdapterMinSuspendCountAcrossWorkers

Int64

어댑터의 인스턴스가 일시 중지된 최소 횟수입니다.

AdapterMinSuspendCountAcrossWorkers

Int64

어댑터의 인스턴스가 일시 중지된 최대 횟수입니다.

AdapterTotalTimeInSuspendedState

TimeSpan

어댑터의 모든 인스턴스가 일시 중지 상태였던 총 시간입니다.

AdapterMinTimeInSuspendedStateAcrossWorkers

TimeSpan

어댑터의 인스턴스가 일시 중지 상태였던 최소 시간입니다.

AdapterMaxTimeInSuspendedStateAcrossWorkers

TimeSpan

어댑터의 인스턴스가 일시 중지 상태였던 최대 시간입니다.

AdapterTotalTimeInNonSuspendedState

TimeSpan

어댑터의 모든 인스턴스가 일시 중지되지 않은 상태였던 총 시간입니다.

AdapterMinTimeInNonSuspendedStateAcrossWorkers

TimeSpan

어댑터의 인스턴스가 일시 중지되지 않은 상태였던 최소 시간입니다.

AdapterMaxTimeInNonSuspendedStateAcrossWorkers

TimeSpan

어댑터의 인스턴스가 일시 중지되지 않은 상태였던 최대 시간입니다.

AdapterFirstCtiTimestamp

DateTime

어댑터에서 생성하거나 사용하는 첫 번째 CTI의 타임스탬프(응용 프로그램 시간)입니다.

AdapterNumberOfRunningWorkers

Int32

실행 중 상태에 있는 어댑터의 인스턴스 수입니다.

AdapterNumberOfStoppedWorkers

Int32

중지됨 상태에 있는 어댑터의 인스턴스 수입니다.

AdapterNumberOfSuspendedWorkers

Int32

일시 중지됨 상태에 있는 어댑터의 인스턴스 수입니다.

어댑터 복구

특성

정보

유형

.NET Framework 형식

설명

InputAdapterLastCheckpointHighWaterMark

N

DateTime

이 스트림의 마지막 검사점에 사용된 응용 프로그램 시간의 상위 워터마크입니다. 이 워터마크는 입력 스트림에 있는 한 지점을 고유하게 식별하며 해당 스트림은 복구 중에 이 지점 이후의 모든 이벤트를 재생해야 합니다.

OutputAdapterLastCheckpointEventOffset

N

Int32

마지막으로 검사점이 실행된 출력 스트림에서 자리를 지정하는 응용 프로그램 시간 상위 워터마크 이후의 이벤트 수입니다.

OutputAdapterLastCheckpointHighWaterMark

N

DateTime

쿼리에서 사용한 마지막 검사점에 대해 출력 스트림의 응용 프로그램 시간 상위 워터마크입니다.

[맨 위로]

스트림 진단

메타데이터

다음 표에서는 쿼리의 개별 스트림에 대해 설명하는 메타데이터 속성을 보여 줍니다. 이러한 속성의 값은 변경되지 않습니다.

속성 이름

유형

설명

StreamId

Int64

스트림의 ID입니다.

StreamQueryId

Int64

스트림에 대한 쿼리의 ID입니다.

StreamSourceOperatorId

Int64

스트림에 대한 원본 연산자의 ID입니다.

StreamTargetOperatorId

Int64

스트림에 대한 대상 연산자의 ID입니다.

StreamSystemInstance

Boolean

스트림이 시스템 스트림인지 여부를 나타내는 부울 값입니다.

비집계 통계

다음 표에서는 스트림의 모든 논리 인스턴스에 대해 집계되지만 쿼리 통계로는 집계되지 않는 통계를 보여 줍니다.

속성 이름

유형

설명

StreamTotalInputEventCount

Int64

스트림에 대한 총 입력 이벤트 수입니다.

StreamMinEventCountAcrossWorkers

Int64

모든 스트림 인스턴스의 최소 이벤트 수입니다.

StreamMaxEventCountAcrossWorkers

Int64

모든 스트림 인스턴스의 최대 이벤트 수입니다.

StreamNumberOfWorkers

Int32

이 스트림의 인스턴스 수입니다.

StreamMinInputEventCountAcrossWorkers

Int64

스트림 인스턴스의 최소 입력 이벤트 수입니다.

StreamMaxInputEventCountAcrossWorkers

Int64

스트림 인스턴스의 최대 입력 이벤트 수입니다.

StreamMinMemoryIncludingEventsAcrossWorkers

Int64

스트림 인스턴스에서 사용되는 최소 메모리 크기(바이트)입니다.

StreamMaxMemoryIncludingEventsAcrossWorkers

Int64

스트림 인스턴스에서 사용되는 최대 메모리 크기(바이트)입니다.

집계 통계

다음 표에서는 스트림의 모든 논리 인스턴스에 대해 집계되며 쿼리 통계로도 집계되는 통계를 보여 줍니다.

속성 이름

유형

설명

StreamEventCount

Int64

모든 스트림 인스턴스의 총 이벤트 수입니다.

StreamMemoryIncludingEvents

Int64

스트림과 스트림 내의 모든 이벤트가 사용하는 메모리 크기(바이트)입니다.

[맨 위로]

쿼리 진단

쿼리는 쿼리를 구성하는 연산자 및 스트림의 집계 통계와 고유의 통계를 포함합니다. 다음 섹션에서는 쿼리와 관련된 통계를 자세히 보여 줍니다.

쿼리가 실행되고 있지 않으면 진단 보기에 QueryState(Suspended 또는 Stopped)와 IsResilient(true 또는 false) 속성만 반환됩니다.

메타데이터

다음 표에서는 개별 쿼리에 대해 설명하는 메타데이터 속성을 보여 줍니다. 이러한 속성의 값은 변경되지 않습니다.

속성 이름

유형

설명

QueryState

String

쿼리의 현재 상태입니다.

QueryStartTime

DateTime

쿼리의 시작 시간입니다.

QueryEndTime

DateTime

쿼리의 종료 시간입니다.

QueryException

String

쿼리에서 마지막으로 발생한 예외입니다.

QueryCreationTime

DateTime

쿼리 인스턴스를 만든 시간입니다.

QueryId

Int64

쿼리의 ID입니다.

QuerySystemInstance

Boolean

쿼리가 시스템 쿼리인지 여부를 나타내는 부울 값입니다.

QueryInstanceGroupId

Int64

쿼리의 인스턴스 그룹 ID입니다.

통계

다음 표에서는 쿼리와 관련된 통계를 보여 줍니다.

속성 이름

유형

설명

QueryTotalIncomingEventCount

Int64

쿼리에 대해 들어오는 이벤트의 총 수입니다.

QueryTotalConsumedEventCount

Int64

쿼리에서 사용한 총 이벤트 수입니다.

QueryTotalProducedEventCount

Int64

쿼리에서 생성한 총 이벤트 수입니다.

QueryTotalOutgoingEventCount

Int64

쿼리에 대해 나가는 이벤트의 총 수입니다.

QueryLastIncomingEventTimestamp

DateTime

쿼리에 대해 마지막으로 들어온 이벤트의 시스템 시간입니다.

QueryLastConsumedEventTimestamp

DateTime

쿼리에 대해 마지막으로 사용된 이벤트의 시스템 시간입니다.

QueryLastProducedEventTimestamp

DateTime

쿼리에 대해 마지막으로 생성된 이벤트의 시스템 시간입니다.

QueryLastOutgoingEventTimestamp

DateTime

쿼리에 대해 마지막으로 나간 이벤트의 시스템 시간입니다.

QueryTotalConsumedEventLatency

Double

쿼리에서 사용한 모든 이벤트의 총 대기 시간(밀리초)입니다.

QueryTotalProducedEventLatency

Double

쿼리에서 생성한 모든 이벤트의 총 대기 시간(밀리초)입니다.

QueryTotalOutgoingEventLatency

Double

쿼리에 대해 나가는 모든 이벤트의 총 대기 시간(밀리초)입니다.

QueryLastProducedCtiTimestamp

DateTime

쿼리에서 생성한 마지막 CTI의 타임스탬프(응용 프로그램 시간)입니다.

쿼리 복구

특성

정보

유형

.NET Framework 형식

설명

QueryLastCheckpointBeginTime

N

DateTime

쿼리의 마지막 검사점이 시작된 시간입니다. 검사점이 발생하지 않거나, 쿼리가 중지 또는 중단된다면 이는 나타나지 않습니다.

QueryLastCheckpointEndTime

N

DateTime

쿼리의 마지막 검사점이 완료된 시간입니다. 검사점이 발생하지 않거나, 쿼리가 중지 또는 중단된다면 이는 나타나지 않습니다.

QueryLastCheckpointSize

N

Int64

쿼리의 마지막 검사점 크기(바이트)입니다. 검사점이 발생하지 않는다면 이는 나타나지 않습니다.

QueryIsResilient

N

Boolean

서버 상태와 관계 없이 쿼리에 복구가 구성된 경우 True이고, 그렇지 않으면 False입니다.

[맨 위로]

게시된 스트림 진단

다음 표에서는 게시된 스트림에 대해 반환되는 메트릭을 보여 줍니다. 게시된 스트림에 대한 자세한 내용은 개발자 가이드에서 런타임에 쿼리 작성을 참조하십시오. 각 쿼리에는 암시적 게시된 스트림도 있습니다. 이 게시된 스트림에 대한 정보는 쿼리 진단의 일부로 표시됩니다.

특성

정보 유형

데이터 형식

.NET Framework 형식

설명

PublishedStreamId

S

Number

Int64

게시된 스트림의 ID입니다.

PublishedStreamEventShape

S

String

String

게시된 스트림에 의해 처리된 이벤트의 셰이프입니다(시점, 간격 또는 가장자리 중 하나).

PublishedStreamEventType

S

String

String

XML로 표현된 이벤트 유형을 포함하는 문자열입니다.

PublishedStreamProducerCount

S

Number

Int32

스트림으로 들어오는 이벤트 공급자 개수이며 0 또는 1입니다.

PublishedStreamConsumerCount

S

Number

Int32

스트림에서 나오는 이벤트 소비자 개수입니다.

PublishedStreamEventCount

S

Number

Int64

게시된 스트림의 이벤트 개수입니다.

PublishedStreamTotalEventCount

S

Number

Int64

게시된 모든 스트림에 있는 총 이벤트 개수입니다.

[맨 위로]

서버 진단

서버

다음 표에서는 서버 차원(StreamInsight 서버) 메트릭을 보여 줍니다.

특성

데이터 형식

.NET Framework 형식

설명

ServerVersion

String

String

서버의 어셈블리 버전 문자열입니다.

이벤트 관리자

다음 표에서는 이벤트 관리자에 대해 반환할 수 있는 서버 차원(StreamInsight 서버) 메트릭을 보여 줍니다.

특성

데이터 형식

.NET Framework 형식

설명

AllEventsCount

Number

Int64

StreamInsight 서버에서 연결이 유지된(할당된) 상태의 이벤트 개수입니다.

AllEventsMemory

Number

Int64

시스템에서 연결이 유지된 모든 이벤트에 사용되는 메모리 크기입니다.

쿼리 관리자

다음 표에서는 쿼리 계획 관리자에 대해 반환할 수 있는 서버 차원(StreamInsight 서버) 메트릭을 보여 줍니다.

특성

데이터 형식

.NET Framework 형식

설명

AllQueriesCount

Number

Int64

StreamInsight 서버 전체에서 실행 중이거나 중단되었거나 일시 중지된 총 쿼리 수(실행 중/완료)입니다. 쿼리가 완료된 경우 어댑터가 쿼리 종료 요청에 응답하여 Stopped() 메서드를 호출했거나 쿼리가 중단된 것입니다.

AllQueriesStreamCount

Number

Int64

쿼리의 총 연산자 수입니다.

AllQueriesOperatorCount

Number

Int64

쿼리의 총 스트림 수입니다.

쿼리(서버 차원)

서버 차원(StreamInsight 서버) 쿼리 진단 메트릭은 쿼리, 연산자 및 스트림에 대한 집계 메트릭을 보여 주는 세 표가 통합된 것입니다. 또한 쿼리 차원 대기 시간 메트릭도 이 진단 보기에서 제공됩니다. 여기서는 메트릭 중 중요한 두 가지에 대해 설명합니다.

특성

데이터 형식

.NET Framework 형식

설명

StreamEventCount

Number

Int64

모든 쿼리의 모든 논리 스트림에 있는 총 이벤트 수입니다.

이 값은 모든 스트림에 있는 이벤트의 누적 개수입니다. 각각 다른 쿼리에 있는 스트림이 이러한 이벤트에 대한 참조를 유지할 수 있습니다. 따라서 쿼리 전체에서 이 개수를 합하는 경우 총 이벤트 개수에 대한 스트림 메모리가 StreamInsight 서버를 실행 중인 컴퓨터의 실제 용량을 초과하는 것으로 표시될 수 있습니다.

OperatorIndexEventCount

Number

Int64

모든 연산자의 누적 이벤트 개수입니다.

이 값은 모든 연산자에 있는 이벤트의 누적 개수입니다. 각각 다른 쿼리에 있는 연산자가 이러한 이벤트에 대한 참조를 유지할 수 있습니다. 따라서 쿼리 전체에서 이 개수를 합하는 경우 총 이벤트 개수에 대한 메모리가 StreamInsight 서버를 실행 중인 컴퓨터의 실제 용량을 초과하는 것으로 표시될 수 있습니다. 그러므로 이 수는 쿼리 전체가 아닌 특정 쿼리의 로컬 값으로 해석해야 합니다.

서버 복구

특성

정보

유형

.NET Framework 형식

설명

ServerLastRecoveryBeginTime

N

DateTime

서버에서 마지막으로 복구 프로세스가 시작된 시간입니다.

ServerLastRecoveryEndTime

N

DateTime

서버에서 마지막으로 복구 프로세스가 완료된 시간입니다.

ServerIsResilient

N

Boolean

서버에 복구가 구성되어 있으면 True이고, 그렇지 않으면 False입니다.

[맨 위로]

PowerShell을 사용하여 진단 액세스

PowerShell을 사용하여 실행 중이며 호스팅되는 StreamInsight 인스턴스의 관리 효율성 정보에 액세스하거나 메타데이터를 관리할 수 있습니다. 다음 예에서는 Powershell 2.0을 사용합니다. 쿼리에 대해서는 StreamInsight 호스트에서 실행되는 예제 응용 프로그램인 ObjectModel.cs를 사용합니다.

다음 예에서는 GAC(전역 어셈블리 캐시)에서 Microsoft.ComplexEventProcessing DLL을 로드합니다.

PS C:\> [System.Reflection.Assembly]::LoadWithPartialName("Microsoft.ComplexEventProcessing")

결과 집합은 다음과 같습니다.

GAC    Version     Location

------ ----------- -------------------------------------------------------------------------

True   v2.0.50727  C:\Windows\assembly\GAC_MSIL\Microsoft.ComplexEventProcessing\10.0.0.0__89845dcd8080cc91\Micro...

다음 예에서는 실행 중인 StreamInsight 인스턴스에서 액세스할 수 있는 메서드 및 속성을 반환합니다.

PS C:\> $server = [Microsoft.ComplexEventProcessing.Server]::Connect("https://localhost/StreamInsight")
PS C:\> $server | gm
   TypeName: Microsoft.ComplexEventProcessing.Server

결과 집합은 다음과 같습니다.

Name                           MemberType Definition

------------------------------ ---------- ----------------

ClearDiagnosticSettings        Method     System.Void ClearDiagnosticSettings(System.Uri name)

CreateApplication              Method     Microsoft.ComplexEventProcessing.Application CreateApplication(string name)

CreateManagementService        Method     Microsoft.ComplexEventProcessing.ManagementService.IManagementService CreateManag...

Dispose                        Method     System.Void Dispose()

Equals                         Method     bool Equals(System.Object obj)

GetDiagnosticSettings          Method     Microsoft.ComplexEventProcessing.DiagnosticSettings GetDiagnosticSettings(System....

GetDiagnosticView              Method     Microsoft.ComplexEventProcessing.DiagnosticView GetDiagnosticView(System.Uri name)

GetHashCode                    Method     int GetHashCode()

GetType                        Method     type GetType()

SetDiagnosticSettings          Method     System.Void SetDiagnosticSettings(System.Uri name, Microsoft.ComplexEventProcessi...

ToString                       Method     string ToString()

Applications                   Property   System.Collections.Generic.IDictionary`2[[System.String, mscorlib, Version=2.0.0....

IsEmbedded                     Property   System.Boolean IsEmbedded {get;}

다음 예에서는 이벤트 관리자에 대한 서버 차원(StreamInsight 서버) 메트릭을 반환합니다.

PS C:\> $dv = $server.GetDiagnosticView("cep:/Server/EventManager")
PS C:\> $dv

결과 집합은 다음과 같습니다.

Key                           Value

------------------------------ -----

AllEventsCount                 19

AllEventsMemory                249856

다음 예에서는 계획 관리자에 대한 서버 차원(StreamInsight 서버) 메트릭을 반환합니다.

PS C:\> $dv = $server.GetDiagnosticView("cep:/Server/PlanManager")
PS C:\> $dv

결과 집합은 다음과 같습니다.

Key                    Value

----------------------- -----

AllQueriesCount         14

AllQueriesStreamCount   50

AllQueriesOperatorCount 38

다음 예에서는 TrafficSensorQuery 쿼리에 대해 쿼리 메트릭을 반환합니다.

PS C:\> $dv = $server.GetDiagnosticView("cep:/Server/Application/ObjectModelSample/Query/TrafficSensorQuery")
PS C:\> $dv

결과 집합은 다음과 같습니다.

Key                                          Value

------------------------------------------   --------------

QueryState                                  Suspended

QueryStartTime                              9/22/2009 5:34:02 PM

QueryEndTime                                9/22/2009 5:34:03 PM

StreamEventCount                            0

OperatorCount                               0

QueryTotalIncomingEventCount                553

QueryTotalConsumedEventCount                553

QueryTotalProducedEventCount                192

QueryTotalOutgoingEventCount                192

QueryLastIncomingEventSystemTime            9/22/2009 5:34:02 PM

QueryLastConsumedEventSystemTime            9/22/2009 5:34:02 PM

QueryLastProducedEventSystemTime            9/22/2009 5:34:03 PM

QueryLastOutgoingEventSystemTime            9/22/2009 5:34:03 PM

QueryTotalConsumedEventsLatency             14527.833

QueryTotalProducedEventsLatency             62457.0953

QueryTotalOutgoingEventsLatency             63553.2049

QueryLastProducedCTITimestamp               12/31/9999 11:59:59 PM

StreamMemoryIncludingEvents                 0

OperatorIndexEventCount                     0

OperatorEventMemory                         0

OperatorIndexMemory                         65870

OperatorTotalScheduledCount                 708

OperatorTotalCpuUsage                       670

[맨 위로]

참고 항목

개념

작업(StreamInsight)