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 메서드를 호출한 후에 발생합니다. |
검사점 설정 중 |
쿼리가 실행 중이며 검사점을 설정하는 중입니다. 이 상태는 일반적으로 BeginCheckpoint 메서드를 호출한 후에 발생합니다. |
중지 중 |
사용자가 해당 쿼리를 중지하도록 요청했습니다. 이 상태는 일반적으로 쿼리의 Stop 메서드를 호출한 후에 발생합니다. |
일시 중지됨 |
복구 가능한 쿼리를 복구하지 못했거나 복구 없이 서버를 시작했기 때문에 쿼리를 복구할 수 없습니다. |
완료 |
쿼리가 정상적으로 완료되었습니다. 즉, 입력 어댑터가 스트림 끝 표식을 큐에 넣었으며 출력 어댑터가 이를 모두 소비했습니다. |
중단됨 |
오류가 발생했습니다. 계획 관리자에서는 쿼리를 사용할 수 있습니다. |
[맨 위로]
쿼리 수준 모니터링 이해
StreamInsight 서버에서 쿼리 성능을 모니터링할 때는 관리 서비스 API에서 제공하는 쿼리 수준 모니터링 특성을 사용할 수 있습니다. 다음의 이벤트 흐름도를 통해 이러한 모니터링 특성을 사용하는 방법을 파악할 수 있습니다.
위의 그림에 따라 입력 어댑터에서 쿼리를 통과해 출력 어댑터로 이동하는 이벤트 경로(왼쪽에서 오른쪽)를 기록하는 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 서버가 이벤트를 처리할 수 있는 속도를 확인할 수 있습니다.
OperatorEventMemory 및 OperatorIndexMemory 특성의 값을 합하면 연산자에서 사용하는 총 메모리를 확인할 수 있습니다.
[맨 위로]
진단 속성
진단 보기에서는 서버, 쿼리, 게시된 스트림, 연산자, 어댑터 등의 여러 가지 개체 세분성 수준에서 특성을 반환할 수 있습니다.
진단은 계층에서 세분성이 보다 높은 개체부터 낮은 개체순으로 집계될 수 있도록 디자인됩니다. 이러한 각 수준에 대해 다음과 같은 종류의 진단 정보를 가져올 수 있습니다.
정적 정보(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
[맨 위로]