StreamInsight 이벤트 흐름 디버거 사용

 

제조 및 프로세스 제어, 유틸리티, 금융 거래, 웹, IT 모니터링과 같은 도메인의 운영 시스템에서는 복잡한 상호 관계 및 짧은 대기 시간 요구 사항을 포함하는 이벤트 스트림을 생성합니다. 이러한 이벤트 흐름을 처리하기 위한 임시 요소가 지정되어 있는 경우 이러한 시스템의 주요 과제는 다양한 동적 스트림 동작 하의 결과 유효성을 확인하고 오류 발생 시 쿼리의 문제를 해결하는 것입니다.

이 과정에서 다음과 같은 요구 사항을 해결하는 쿼리 분석 도구가 필요합니다.

  • 많은 양의 데이터 처리 및 검색 공간의 문제 감소

  • 엄격한 일관성 요구 사항 처리

  • 사용자가 신속하게 진단을 내리거나 해결 방법을 확인할 수 있도록 직관적 기능 제공

Microsoft StreamInsight는 독립 실행형 이벤트 흐름 디버거 GUI(그래픽 사용자 인터페이스)를 제공합니다. CEP(복합 이벤트 처리) 응용 프로그램 개발자 또는 관리자는 StreamInsight 이벤트 흐름 디버거를 사용하여 StreamInsight 쿼리를 통한 이벤트 흐름을 검사, 디버깅 및 확인할 수 있습니다. 이 항목에서는 이벤트 흐름 디버거 기능에 대해 설명하며 이 디버깅 및 분석 도구 사용을 즉시 시작하기 위해 수행해야 하는 절차를 제공합니다.

이벤트 흐름 디버깅 이해

이벤트 흐름 디버거에 대해 살펴보기 전에 C# 또는 C++ 디버거와 같은 제어 흐름 디버거와 이벤트 흐름 디버거 간의 기본적인 차이점에 대해 이해해야 합니다.

제어 흐름 디버깅에서 개발자는 디버그 모드에서 특정 언어로 작성된 프로그램을 “빌드”하고, 프로그램 제어 흐름의 특정 문이나 접합에서 중단점을 사용하도록 설정하고, 이러한 특정 중단점까지 프로그램을 “실행”하고, 시스템의 코드와 상태를 확인하고, 함수 및 프로시저를 한 단계씩 실행하거나 프로시저 단위로 실행하고, 실행이 완료될 때까지 변수 등을 파악합니다. “데이터” 변수의 임시 확인(시간의 경과에 따른 이러한 변수의 변환 분석) 작업은 제한되거나 존재하지 않습니다.

반면 이벤트 흐름 디버깅에서는 시간의 경과에 따라 CEP 쿼리에서는 각 단계 간에 순서대로 진행되고 쿼리 단계 내에서는 각 연산자 간에 순서대로 진행되는 이벤트를 분석합니다. 즉, 디버깅을 수행하려면 이벤트가 지정된 연산자에서 유입될 때 스트림에 주는 영향 및 연산자에 대한 이벤트 입력 계산의 결과로 새 이벤트가 생성되는 방법을 이해해야 합니다. 이벤트 흐름 디버깅에서 중요한 점은 연산자의 제어 흐름 실행 자체가 아니라 연산자의 의미 체계(Filter, Project, Join, Aggregate, Multicast 등)가 이벤트에 영향을 주는 방식입니다. 결과적으로 디버거를 통해 지정된 이벤트가 다른 이벤트에 주는 영향 및 다른 이벤트가 분석 중인 이벤트에 주는 영향을 이해할 수 있습니다.

디버깅 및 모니터링 모드

이벤트 흐름 디버거는 독립 실행형 이벤트 추적 기반 디버깅 도구로, 두 가지 용도로 사용됩니다.

  • 이벤트 흐름 추적 디버깅. 디버깅 세션은 다음을 기반으로 할 수 있습니다.

    • 특정 작동 쿼리를 라이브로 기록하면 생성되는 추적(디버거는 활성 서버에 연결됨)

    • 명령줄 유틸리티를 통해 디버거 외부에서 생성되는 추적 파일(나중에 디버거로 로드됨)

  • 서버 모니터링. 이 모드에서 디버거는 시스템 및 응용 프로그램 개체를 나열하는 개체 탐색기를 제공합니다. 이러한 각 엔터티에 대한 운영 진단 정보를 가져올 수 있습니다. 개체 탐색기는 추적을 위해 쿼리를 사용하거나 사용하지 않도록 설정하고 운영 측면에서는 쿼리 실행을 시작하고 중지할 수 있는 인터페이스로도 사용 가능합니다.

이벤트 흐름 디버거를 사용하려면 사용자는 Windows 성능 로그 사용자 그룹에 속해 있어야 합니다. 이를 통해 사용자는 trace.cmd를 사용하여 디버거 외부의 추적을 수집하거나 디버거 내에서 작업하는 동안 쿼리에서 이벤트를 기록할 수 있습니다. 이 작업을 수행하는 방법에 대한 단계는 Windows 관리 및 작업 섹션을 참조하십시오.

StreamInsight를 제대로 설치한 경우에는 디버거를 시작하고 시작 페이지를 검토하여 기본적인 도구 기능을 파악하는 것이 좋습니다. 디버거를 시작하려면 시작 단추를 클릭하고 모든 프로그램을 가리킨 다음 Microsoft StreamInsight 2.0StreamInsight 이벤트 흐름 디버거를 차례로 클릭합니다.

StreamInsight 쿼리 디버깅

디버거를 StreamInsight 서버에 로컬 또는 원격 클라이언트 응용 프로그램으로 연결하고 쿼리 하나 이상의 이벤트 흐름 추적을 기록 및 재생할 수 있습니다. 디버거를 서버에서 분리된 독립 실행형 클라이언트 응용 프로그램으로 사용하여 오프라인에서 수집된 이벤트 추적을 기반으로 쿼리를 분석할 수도 있습니다. 따라서 특정 쿼리가 작동 중인 동안 유동적으로 디버깅하거나 쿼리 실행 기록 추적을 기반으로 쿼리를 역방향 테스트할 수 있습니다.

라이브 쿼리 이벤트 기록

실행 중인 쿼리에서 이벤트를 기록하려면 이벤트 흐름 디버거를 활성 StreamInsight 서버에 연결해야 합니다. 다음 절차에서는 활성 서버에 연결하여 실행 중인 쿼리를 연 다음 쿼리에 대해 추적을 사용하도록 설정하는 방법에 대해 설명합니다.

참고


이벤트 흐름 디버거는 로컬 서버에서만 이벤트를 기록할 수 있습니다. 즉 StreamInsight 서버와 동일한 실제 컴퓨터에서 실행되고 있어야 합니다. 이벤트 흐름 디버거를 원격 서버 끝점에 연결해도 오류가 발생하지는 않지만 이벤트가 기록되지 않습니다.

  1. 이 절차를 수행하려면 먼저 사용자나 서버 관리자가 서버에 대해 웹 서비스를 사용하도록 설정해야 합니다. 웹 서비스를 사용하도록 설정하는 방법은 StreamInsight Server 서버에 게시 및 연결을 참조하십시오.

  2. 클라이언트 사용자가 각 StreamInsight 사용자 그룹의 멤버로서 서버에 연결할 권한을 가지고 있어야 합니다. 자세한 내용은 설치(StreamInsight)의 "StreamInsight Users 그룹" 섹션을 참조하십시오.

  3. 디버거에서 파일, 서버에 연결을 차례로 클릭하고 서버 끝점 주소를 입력합니다. 설치되어 있는 StreamInsight 서버의 기본 끝점은 https://localhost/StreamInsight/<instance_name>입니다.

    서버를 연결할 수 있도록 올바르게 설정한 경우에는 디버거의 왼쪽 창에 개체 탐색기가 표시됩니다.

  4. 개체 탐색기에서 개체 계층을 클릭하여 디버깅할 쿼리를 표시한 다음 쿼리 개체를 두 번 클릭합니다. 그러면 다음 그림과 같이 쿼리 그래프가 열립니다. 다음 그림에서는 예제 쿼리 'Deltas'가 현재 실행 중인 것으로 나와 있습니다.

    쿼리 그래프의 쿼리 보기
    그림 1 - 쿼리 그래프에 쿼리 표시

  5. 쿼리에서 처리 중인 이벤트를 기록하려면 기록 시작 단추를 클릭합니다. 그러면 다음 그림과 같이 기록 프로세스가 시작됩니다. 몇 분 동안 이벤트가 기록되고 나면 중지를 클릭합니다.

    실행 중인 쿼리의 이벤트 기록
    그림 2 - 실행 중인 쿼리에 이벤트 기록

디버거가 그림 1에 나와 있는 상태로 전환됩니다. 그러면 디버거에서 제공하는 쿼리 분석 도구를 사용할 수 있습니다. 분석 기능에 대해서는 다음 섹션에서 설명합니다.

EFT(이벤트 흐름 추적) 또는 ETL(Windows용 이벤트 추적) 파일 로드

StreamInsight에서는 독립 실행형 서버 배포와 포함형 서버 배포가 모두 지원됩니다. 응용 프로그램이 서버를 포함하며 웹 서비스를 사용하도록 설정하지 않으면 디버거와 같은 클라이언트 응용 프로그램이 서버에 연결할 수 없습니다. 따라서 이러한 상황에서 실행되는 쿼리의 문제를 디버깅하고 진단하는 메커니즘이 필요합니다.

실행 중인 StreamInsight 서버에 대해 이벤트 추적 로그를 수집하려면 StreamInsight 설치에 포함된 trace.cmd 유틸리티를 사용할 수 있습니다. 다음 절차에서는 추적 파일을 만들어 이벤트 흐름 디버거로 로드하는 방법을 설명합니다.

  1. 서버와 하나 이상의 관련 쿼리가 실행 중일 때 Windows 명령 프롬프트에 다음 문을 입력합니다. 추적 파일의 이름을 지정할 때는 파일 확장명 .etl을 사용하는 것이 중요합니다.

trace.cmd start <filename>.etl

  1. 쿼리를 충분한 시간 동안 실행한 후에 다음을 사용하여 추적을 중지합니다.

trace.cmd stop <filename>.etl

  1. 결과 파일을 디버거로 로드하려면 파일, 열기를 차례로 클릭합니다. 열기 대화 상자에서 <filename>.etl의 위치를 찾은 다음 열기를 클릭합니다. 그러면 다음 그림과 같이 쿼리 그래프가 표시됩니다.

    추적 파일에서 로드된 쿼리 보기
    그림 3 - 추적 파일에서 로드한 쿼리 표시

이 그림에서는 그림 1에 표시된 개체에 비해 적은 수의 엔터티가 개체 탐색기에 표시됩니다. 이는 디버거가 서버에 연결되어 있지 않기 때문입니다. 특히 스케줄러 등의 서버 수준 진단 개체는 디버거가 서버에 연결되어 있지 않으면 표시할 수 없습니다.

위의 그림에서는 ETL 파일 로드 진행률을 나타내는 진행률 표시기가 상태 표시줄에 표시되어 있습니다. 로드 과정에서 디버거는 ETL 파일을 압축된 전용 EFT 형식으로 변환합니다.

trace.cmd 유틸리티는 Windows Logman 명령을 기반으로 하는 스크립트입니다. Logman은 이벤트 수집을 위해 ETW(Windows용 이벤트 추적) 인프라를 사용합니다. 추적 로그 로드 프로세스 중 디버거는 몇 가지 이벤트가 손실될 수 있음을 경고할 수 있습니다. 이는 ETW 버퍼 및 세션 설정이 부적절하기 때문입니다. 문제를 해결하려면 trace.cmd 파일에서 Logman 명령을 편집하고 -bs 옵션에 지정된 버퍼 크기를 늘리거나(예: -bs 3000) -nb 옵션에 지정된 버퍼의 수를 늘리십시오. 자세한 내용과 예제는 Logman 설명서(Logman documentation)를 참조하십시오.

이벤트 흐름 디버거 도구를 사용한 쿼리 분석

이벤트 흐름 디버거는 쿼리 분석용으로 다음과 같은 주요 기능을 제공합니다.

  • 지정된 쿼리에 대한 쿼리 계획(쿼리 연산자 및 이벤트 스트림)을 확인하는 기능. 이 기능을 사용하면 기본 이벤트 흐름 및 이벤트 흐름의 처리 노드 측면에서 LINQ(통합 언어 쿼리) 쿼리를 파악할 수 있습니다.

  • 복잡한 이벤트 흐름의 입력과 출력에서 발생하는 모든 이벤트와 각 계산 단계의 중간 결과를 함께 검사하는 기능. 여기에는 시작 및 종료 타임스탬프 측면의 이벤트 메타데이터와 페이로드 필드가 포함됩니다.

  • 확장을 위해 분할된 복잡한 이벤트 흐름을 확인하는 기능. 디버거는 Group-and-Apply 연산자의 Grouping 연산을 통해 이벤트가 분할되는 방식 및 적용 연산자에서 이벤트가 변환되는 방식을 표시할 수 있습니다.

  • 문제 검색 공간을 줄이거나 이벤트 흐름의 여러 단계에 걸쳐 이벤트 상관 관계를 지정하는 전역 분석 집합을 수행하는 기능

  • 시간의 경과에 따라 쿼리 실행 추적을 단계별로 실행하고 스트리밍 쿼리를 통한 이벤트 전파 방식을 이해하는 기능

  • 이벤트를 분석하고 이벤트가 지정된 상태에 도달한 방식(다른 이벤트 또는 연산자가 이벤트 시간 및 페이로드에 영향을 준 방식)을 이해하는 기능

  • 현재 연산자에서 다운스트림된 이벤트에 대해 지정된 이벤트가 주는 영향을 분석함으로써 이벤트가 최종적으로 출력에 영향을 줄 때까지 후속 이벤트 처리를 예측하는 기능

이러한 기능을 구현하기 위해 디버거는 세 가지 분석 기능을 제공합니다.

  • 재생 - 이 기능을 사용하면 이벤트 스트림에서 이벤트를 한 번에 하나씩 단계별로 실행하고 각 연산자 간에 순서대로 이동하는 진행률을 확인할 수 있습니다. 쿼리 그래프의 특정 연산자에 중단점을 설정한 다음 해당 연산자 또는 연산자의 특정 조건이 충족될 때까지 디버거를 “실행”(이벤트 흐름을 활성화)할 수도 있습니다.

  • 근본 원인 분석 - 이 기능을 사용하면 “근본 원인”, 즉 이벤트가 현재 상태에 도달하도록 만든 작업 또는 변경 시퀀스를 “다시 확인”할 수 있습니다.

  • 이벤트 전파 분석 - 이 기능을 사용하면 특정 이벤트 자체에 적용된 변경 내용 측면에서, 또는 해당 이벤트가 다른 이벤트에 영향을 주거나 새 이벤트 생성을 유발한 방식 측면에서 다운스트림에 대한 이 이벤트의 영향을 분석할 수 있습니다. 이 기능은 근본 원인 분석과 반대되는 개념입니다.

재생 사용

라이브 기록을 수행하거나 추적 로그 파일에서 로드하는 방법으로 이벤트를 디버거로 로드한 후에는 이러한 이벤트를 검색합니다. 이렇게 하려면 클럭 아이콘을 클릭하여 이벤트를 재생합니다. 그러면 이벤트 재생기가 표시됩니다. 다음 단계 아이콘을 클릭해 이벤트를 단계별로 실행할 수 있습니다. 임의의 연산자 왼쪽에 있는 라디오 단추를 클릭한 다음 이벤트 재생기에서 다음 중단점으로 단계별 실행을 클릭하여 연산자에 중단점을 설정할 수도 있습니다.

다음 그림에서는 멀티캐스트 연산자에 중단점을 설정했으며 이벤트 흐름을 활성화했습니다. 멀티캐스트 연산자에서 녹색으로 강조된 선은 이 시점까지의 이벤트 흐름 진행률을 보여 줍니다.

집계 연산자에 중단점 설정
그림 4 - 집계 연산자에 중단점 설정

이제 쿼리에서 이벤트 흐름이 진행되므로 각 연산자 오른쪽의 삼각형 아이콘을 클릭하여 각 연산자를 확장할 수 있습니다. 계속해서 이벤트를 단계별로 실행하고 이벤트 진행률을 확인할 수 있습니다.

근본 원인 분석 사용

근본 원인 분석을 사용하면 이벤트가 현재 상태로 전환된 방식을 분석할 수 있습니다. 연산자의 이벤트 표 형태에서 문제가 되는 이벤트를 마우스 오른쪽 단추로 클릭하고 근본 원인 분석을 선택하면 근본 원인 분석을 시작할 수 있습니다.

근본 원인 분석을 선택하면 분석 중인 이벤트가 현재 상태로 전환되는 원인이 되었을 수 있는 이벤트를 포함하는 모든 연산자의 확장된 보기가 디버거에 표시됩니다. 예를 들어 다음 그림에서는 시작 타임스탬프와 종료 타임스탬프가 지정된 avgCount가 18로 설정된 과정을 보여 줍니다. 상황에 맞는 메뉴에서 강조된 이벤트를 마우스 오른쪽 단추로 클릭하고 근본 원인 분석을 선택합니다. 그러면 디버거에서 탭 쿼리 캔버스 머리글에 두 번째 화살표가 배치되어 근본 원인 분석 재생 스택이 표시됩니다. 다음 그림에서 이 단계를 보여 줍니다. 쿼리 처리 과정의 이 단계에서 이 이벤트 상태의 원인은 SensorInput 연산자의 Insert(VehicularCount 값 38)입니다.

근본 원인 분석 사용
그림 5 - 근본 원인 분석 사용

이벤트 전파 분석 사용

근본 원인 분석에서는 특정 이벤트에 대한 다른 이벤트의 영향이나 처리 단계를 이해하는 과정이라면, 이벤트 전파 분석은 이벤트 다운스트림에 대한 현재 이벤트의 영향을 이해하기 위한 사전 분석이라고 할 수 있습니다. 연산자의 이벤트 표 형태에서 문제가 되는 이벤트를 마우스 오른쪽 단추로 클릭하고 이벤트 전파 분석을 선택하면 이벤트 전파 분석을 시작할 수 있습니다.

분석 스택

분석을 차례대로 누적되는 형태의 스택으로 만들 수 있습니다. 재생을 사용하여 디버깅을 시작할 수 있습니다. 이 분석 중의 한 시점에서 특정 이벤트에 대해 근본 원인 분석을 시작할 수 있습니다. 이 보기에서 전파 분석을 위해 다른 이벤트를 선택할 수도 있습니다. 이러한 방법으로 분석을 차례대로 누적할 수 있습니다.

또한 같은 쿼리를 여러 탭에서 열어 각 탭에서 서로 다른 분석과 보기를 사용할 수도 있으므로 각각 다른 분석 하에서 서로 같거나 다른 쿼리 세그먼트를 유연하게 비교할 수 있습니다.

연산자

쿼리 그래프의 각 사각형 상자는 연산자, 즉 StreamInsight 쿼리의 계산 노드를 나타냅니다. 쿼리 대수에서는 Select (Filter), Project, Import, Export, Group-and-Apply, Join, Multicast, Union, Top-K, AlterLifetime, Advancetime, Cleanse 등의 다양한 연산자가 지원됩니다. 각 연산자에는 서버 메타데이터에서 지정된 해당 이름과 연산자 종류가 레이블로 지정됩니다.

쿼리 그래프에 표시되는 연산자와 LINQ 쿼리를 구성하는 연산이 1:1로 대응하지 않을 수도 있습니다. 예를 들어 Import 연산자는 입력 어댑터 인스턴스를 나타내고 Export 연산자는 출력 어댑터 인스턴스를 나타냅니다. Cleanse는 쿼리 최적화 프로그램에서 정렬되지 않은 데이터를 처리하기 위해 사용하는 내부 연산자로, LINQ 쿼리에는 표시되지 않습니다. 마찬가지로 AdvanceTimeAlterLifetimeAlterEventDuration 또는 AlterEventLifeTime LINQ 확장을 지정하거나 쿼리에서 기간 이동 연산을 사용하면 생성되는 쿼리 대수의 핵심 임시 연산을 나타냅니다. 그러나 LINQ 쿼리와 결과 쿼리 그래프 간의 상관 관계는 쉽게 지정할 수 있습니다.

각 이벤트 표 형태는 다음과 같은 섹션을 포함합니다.

연산자 레이블

표 형태의 제목은 쿼리 및 연산자 유형을 통해 제공되는 연산자 이름입니다.

필터

이 입력란에서 원하는 이벤트를 필터링할 조건부 C# 식을 지정할 수 있습니다. 예를 들어 특정 값이나 시간을 충족하거나 초과하는 이벤트만 검사할 수 있습니다.

이벤트 필드

이벤트 표 형태 창의 나머지 부분에는 이벤트의 필드가 표시됩니다. 이러한 필드에는 사용자가 지정하는 이벤트 종류(Insert 또는 Cti)와 내부 이벤트(Retract 및 Expand)가 포함됩니다. 기본적으로 표시되는 필드 열은 EventKind, StartTime, EndTime 및 이벤트의 페이로드 필드입니다. 머리글 표시줄을 마우스 오른쪽 단추로 클릭하여 상황에 맞는 메뉴를 표시하거나 보기, 을 차례로 클릭한 다음 필드 이름을 선택하거나 취소하여 필드를 이벤트 표 형태에 추가하거나 표 형태에서 제거할 수 있습니다. 모든 타임스탬프 필드는 UTC(Coordinated Universal Time)로 표시됩니다. 상황에 맞는 메뉴를 사용하면 표준 시간대를 변경할 수 있습니다.

사용 가능한 필드는 다음 표에 나와 있는 순서대로 표시됩니다. 지정된 연산자의 제목 표시줄을 마우스 오른쪽 단추로 클릭한 다음 '파일에 이벤트 쓰기' 옵션을 선택하면 연산자의 이벤트를 파일로 내보낼 수 있습니다. 일반적으로는 이 작업을 수행하여 다른 프로그램에서 추가적으로 처리하기 위해 이벤트를 내보냅니다.

필드 이름 설명
EventKind Insert, Cti, Retract 또는 Expand입니다.
StartTime 이벤트의 시작 시간입니다.
EndTime 이벤트의 종료 시간입니다.
NewEndTime 일부 특수 시스템 이벤트 종류에 대한 수정된 이벤트 종료 시간입니다. 이 열의 값은 무시하면 됩니다.
Latency 특정 지정 시간에서 이벤트의 시스템 대기 시간입니다. 이 이벤트가 생성되도록 한 들어오는 이벤트가 시스템에 들어온 시간과 이 이벤트가 시스템에서 생성된 시간 사이의 시간 간격입니다.
EnqueueTime 연산자가 이벤트를 생성한 시스템 시간입니다.
하나 이상의 페이로드 필드 이벤트에서 사용 가능한 사용자 정의 데이터 필드입니다.

Group-and-Apply 연산자

Group-and-Apply 연산자는 Grouping 연산자(진입점), Apply 분기 연산자 집합 및 Group Union 연산자(종료 시의 경계 연산자)로 구성되는 특수한 연산자입니다. 그룹화 노드를 확장하면 개별 그룹화 키 값에 앵커된 모든 Apply 분기가 표시됩니다. 원하는 분기를 그룹화 노드에서 캔버스로 끄는 간단한 방법으로 Group-and-Apply 연산자를 확장(펼치기)하거나 축소할 수 있습니다. 또한 이제는 분기의 각 연산자를 확장하여 추가로 분석할 수 있습니다. 각 분기에서 X 기호를 클릭하면 분기가 마스터 Group-and-Apply 흐름 하위 그래프로 다시 접힙니다. 다음 그림에서는 이벤트 흐름 디버거의 Group-and-Apply 노드를 보여 줍니다.

Group_and_Analysis
그림 6 - Group-and-Apply 노드 표시

유용한 추가 기능

디버거는 다음과 같은 유용한 기능을 추가적으로 제공합니다.

  • 쿼리 그래프 캔버스에서 연산자를 확대 또는 축소하여 쿼리 그래프를 쉽게 채울 수 있습니다.

  • 아이콘을 통해 사용 가능한 모든 기능은 상황에 맞는 메뉴에서 옵션을 선택해도 사용 가능합니다.

  • 디버거가 서버에 연결되어 있으면 서버에서 반환하는 모든 오류의 로캘은 설치된 로캘에 관계없이 en-US입니다. 영어가 아닌 로캘의 경우 이러한 오류 메시지를 추가 지원 및 분석용으로 사용할 수 있습니다.

  • 모든 연산자는 모두 확장모두 축소 기능을 사용하여 확장하거나 축소할 수 있습니다.

  • 도구 메뉴에서 제공되는 옵션을 사용하면 다양한 디버거 설정에 대해 기본값을 설정할 수 있습니다. 특정 크기의 세그먼트에서 이벤트 흐름 추적 파일을 읽도록 선택할 수 있으며, 이렇게 하면 디버깅 작업을 보다 쉽게 예측하고 원활하게 수행할 수 있습니다. 쿼리 그래프의 모든 연산자에 대해 DateTime 형식과 TimeZone을 지정할 수 있습니다. 또한 디버거가 서버에 연결되는 시나리오에 대해서는 최대 및 최소 이벤트 흐름 기록 기간을 지정할 수 있습니다.

모니터링

이벤트 흐름 디버거는 디버깅 도구인 동시에 StreamInsight 서버 모니터링 도구로도 사용할 수 있습니다. 앞서 설명한 단계를 통해 디버거를 활성 서버에 연결할 수 있으며, 그러면 디버거에 개체 탐색기가 표시되고 모든 서버 엔터티가 나타납니다. 최상위 수준에는 이벤트 관리자, 쿼리 관리자 및 스케줄러의 요약 통계가 표시됩니다. 이러한 개체 중 하나에 대해 런타임 진단을 표시하려면 개체 아이콘을 마우스 오른쪽 단추로 클릭하고 진단을 선택합니다.

개체 계층을 차례로 클릭-방문하면서 서버에서 등록된 특정 쿼리를 선택할 수도 있습니다. 쿼리를 시작 또는 중지할 수 있습니다. 쿼리가 실행 중인 경우에는 쿼리의 런타임 진단을 가져올 수도 있습니다. 이 인터페이스를 사용하면 생성 및 사용되는 이벤트에 대한 정보, 대기 시간 및 처리량 특징, 그리고 쿼리의 메모리 요구 사항을 모니터링할 수 있습니다.

응용 프로그램에서 만든 모든 원본, 싱크, 주체 및 프로세스를 열거할 수 있습니다. 원본, 싱크, 주체 및 프로세스를 삭제할 수도 있습니다.

응용 프로그램으로 만든 엔터티 보기
그림 7 - 응용 프로그램에서 만든 항목 표시

이러한 메트릭은 진단 보기 API를 통해 프로그래밍 방식으로 검색할 수도 있습니다. 각 엔터티에 사용할 수 있는 진단 정보에 대한 자세한 내용은 StreamInsight 서버 및 쿼리 모니터링을 참조하십시오.

참고 항목

개발자 가이드(StreamInsight)
작업(StreamInsight)