제 4과: Windows PowerShell을 사용한 주문 서비스 모니터링

완료 시간: 25분

목표: Windows PowerShell의 Windows Server AppFabric cmdlet을 사용하여 실시간 및 기록 모니터링 데이터를 모니터링하는 방법을 알아봅니다.

목적: 이 단원의 목적은 Windows PowerShell의 AppFabric cmdlet을 사용하여 보고되는 인스턴스 정보를 이해하고 해당 정보를 사용하여 인스턴스를 제어하는 방법을 익히는 데 있습니다.

사전 요구 사항

이 단원을 시작하기 전에 다음 필수 구성 조건에 유의하십시오.

절차

이 단원에서는 다음 연습을 수행합니다.

  1. Windows PowerShell을 사용하여 모니터링 정보를 보고합니다.

  2. Windows PowerShell을 사용하여 워크플로 인스턴스를 제어합니다.

  3. Windows PowerShell을 사용하여 AppFabric 모니터링 데이터베이스에서 추적된 워크플로 이벤트를 봅니다.

Windows PowerShell을 사용하여 모니터링 정보 보고

Order Service 응용 프로그램에서 배포된 OrderWorkflowService에 대한 WF 인스턴스를 보고하려면

  1. C:\DublinTutorial\OrderServiceSolution\Completed\OrderClient\bin\Debug 디렉터리에서 OrderClient.exe를 실행합니다. 이 파일은 제 2과: Windows PowerShell을 사용한 주문 서비스 응용 프로그램 배포에서 빌드되었습니다. 다음 명령을 Windows PowerShell에 복사하여 OrderClient를 실행할 수 있습니다.

    C:\DublinTutorial\OrderServiceSolution\Completed\OrderClient\bin\Debug\OrderClient.exe
    
  2. Contoso.com Order Form에서 Submit을 클릭합니다. 계속하기 전에 양식 아래쪽의 상태 섹션에 Your order has been received라고 표시되는지 확인합니다. 이 메시지가 양식에 표시되면 OrderWorkflowService의 인스턴스가 주문 처리 시뮬레이션을 실행합니다.

  3. 워크플로 인스턴스의 만든 시간과 상호 참조할 수 있도록 시간을 메모해 두십시오.

  4. AppFabric cmdlet을 사용하여 OrderWorkflowService의 워크플로 인스턴스를 보고하려면 Windows PowerShell에서 다음 명령을 실행합니다.

    Get-ASAppServiceInstance -SiteName "OrderService_PS" -VirtualPath "/OrderWorkflowService/OrderWorkflow.xamlx" | fl InstanceId, Status, Condition, CreationTime, LastUpdateTime, SiteName, VirtualPath, ExceptionMessage
    

    이 명령은 OrderService_PS 데이터베이스에서 OrderWorkflowService의 모든 인스턴스를 가져옵니다. fl 별칭을 사용하여 인스턴스를 Format-List cmdlet에 파이프하여 원하는 워크플로 속성만 보고합니다.

  5. 명령이 다음 목록과 비슷한 워크플로 인스턴스 목록을 생성하는지 확인합니다.

    InstanceId       : 95a25419-0d71-42c4-ab70-aa523ba603fc
    Status           : Running
    Condition        : Active
    CreationTime     : 11/1/2009 2:04:48 AM
    LastUpdateTime   : 11/1/2009 2:04:56 AM
    SiteName         : OrderService_PS
    VirtualPath      : /OrderWorkflowService/OrderWorkflow.xamlx
    ExceptionMessage :
    

    이 명령을 사용하여 인스턴스에서 상태 및 예외 정보를 모니터링할 수 있습니다.

  6. 3단계에서 메모한 CreationTime을 갖는 인스턴스를 찾습니다.

Windows PowerShell을 사용하여 워크플로 인스턴스 제어

이 섹션에서는 워크플로 인스턴스를 일시 중단, 다시 시작 및 중지합니다.

  1. OrderClient.exe를 다시 실행하여 인스턴스가 실행 상태인지 확인합니다. Windows PowerShell의 다음 명령은 OrderClient를 실행합니다.

    C:\DublinTutorial\OrderServiceSolution\Completed\OrderClient\bin\Debug\OrderClient.exe
    
  2. Contoso.com Order Form에서 Submit을 클릭합니다. 계속하기 전에 양식 아래쪽의 상태 섹션에 Your order has been received라고 표시되는지 확인합니다. 이 메시지가 양식에 표시되면 OrderWorkflowService의 인스턴스가 주문 처리 시뮬레이션을 실행합니다.

  3. 워크플로 인스턴스의 만든 시간과 상호 참조할 수 있도록 시간을 메모해 두십시오.

  4. Windows PowerShell에서 다음 명령을 실행하여 AppFabric cmdlet을 통해 OrderWorkflowService의 워크플로 인스턴스를 보고합니다.

    Get-ASAppServiceInstance -SiteName "OrderService_PS" -VirtualPath "/OrderWorkflowService/OrderWorkflow.xamlx" –Status Running | fl InstanceId, Status, Condition, CreationTime, LastUpdateTime, SiteName, VirtualPath, ExceptionMessage
    
  5. 명령이 다음 목록과 비슷한 워크플로 인스턴스 목록을 생성하는지 확인합니다.

    InstanceId       : 95a25419-0d71-42c4-ab70-aa523ba603fc
    Status           : Running
    Condition        : Active
    CreationTime     : 11/1/2009 2:04:48 AM
    LastUpdateTime   : 11/1/2009 2:04:56 AM
    SiteName         : OrderService_PS
    VirtualPath      : /OrderWorkflowService/OrderWorkflow.xamlx
    ExceptionMessage :
    
  6. 3단계에서 메모한 CreationTime을 갖는 인스턴스를 찾습니다. 마우스 왼쪽 단추를 누른 채 GUID 위로 끌어서 InstanceId에 대해 표시되는 GUID 값을 강조 표시합니다.

  7. 전체 GUID가 강조 표시되면 강조 표시된 GUID를 마우스 오른쪽 단추로 클릭하여 GUID를 클립보드에 복사합니다.

  8. 클립보드의 InstanceId로 식별되는 실행 중인 워크플로 인스턴스를 일시 중단하려면 다음 명령을 실행합니다. 여기서 아래에 표시된 GUID를 사용자의 InstanceId로 바꿉니다.

    Get-ASAppServiceInstance -InstanceId 95a25419-0d71-42c4-ab70-aa523ba603fc | Suspend-ASAppServiceInstance
    

    이 명령은 InstanceId로 식별된 워크플로 인스턴스를 가져온 다음 Suspend-ASAppServiceInstance cmdlet에 파이프하여 워크플로를 일시 중단합니다.

  9. 워크플로를 다시 시작하려면 다음 명령을 실행합니다. 여기서 아래 표시된 GUID를 사용자의 InstanceId로 바꿉니다.

    Get-ASAppServiceInstance -InstanceId 95a25419-0d71-42c4-ab70-aa523ba603fc | Resume-ASAppServiceInstance
    

    이 명령은 InstanceId로 식별된 워크플로 인스턴스를 가져온 다음 Resume-ASAppServiceInstance cmdlet에 파이프하여 일시 중단된 워크플로를 다시 시작합니다.

  10. 워크플로를 중지하고 종료하려면 다음 명령을 실행합니다. 여기서 아래 표시된 GUID를 사용자의 InstanceId로 바꿉니다.

    Get-ASAppServiceInstance -InstanceId 95a25419-0d71-42c4-ab70-aa523ba603fc | Stop-ASAppServiceInstance -Terminate
    

    이 명령은 InstanceId로 식별된 워크플로 인스턴스를 가져온 다음 Stop-ASAppServiceInstance cmdlet에 파이프하여 워크플로를 중지하고 종료합니다.

Windows PowerShell을 사용하여 추적된 WF 이벤트 보기

워크플로에 대해 구성된 모니터링 수준 및 추적 프로필을 기반으로 워크플로에서 많은 데이터 지점을 추적할 수 있습니다. 제 3과: Windows PowerShell을 사용한 주문 서비스 구성에서 Set-ASAppMonitoring cmdlet을 사용하여 모니터링 수준을 HealthMonitoring으로 설정합니다. 이 섹션에서는 인스턴스에 대해 추적된 WF 이벤트의 보고서를 생성합니다. 이 정보를 보고하려면 Utility.ps1 스크립트 모듈에 추가할 스크립트 함수를 다시 사용합니다.

  1. Windows PowerShell에서 다음 명령을 입력하여 Utility.ps1 스크립트 파일을 엽니다.

    Notepad .\Utility.ps1
    
  2. 다음 스크립트 함수를 메모장에 복사한 후 Utility.ps1 스크립트의 맨 아래에 붙여 넣습니다.

    #============================================================================================#
    #===                                                                                      ===#
    #===                   Make sure the modules and snapins are loaded                       ===#
    #===                                                                                      ===#
    #============================================================================================#
    
    function RegisterSnapIn($snapin)
    {
    $reg = Get-PSSnapin -Registered -Name $snapin
    $added = Get-PSSnapin -Name $snapin -ErrorAction SilentlyContinue
    if ($reg.Name -eq $snapin)
    {
    if ($added.Name -ne $snapin)
    {
    Add-PSSnapin $snapin
    }
    }
    }
    
    
    RegisterSnapIn "SqlServerProviderSnapin100"
    RegisterSnapIn "SqlServerCmdletSnapin100"
    Import-Module ApplicationServer
    
    
    
    #============================================================================================#
    #===                                                                                      ===#
    #=== Retrieves WF Events for the given InstanceId from the specified monitoring database. ===#
    #===                                                                                      ===#
    #============================================================================================#
    
    
    Function GetWFEvents($InstanceId,$database)
    {
    
      $SQL = "SELECT  EventSources.Name AS WorkflowName, " +
                      "EventSources.Computer, " +
                      "EventSources.Site, " +
                      "EventSources.VirtualPath, " + 
                      "WfEvents.Id AS EventID, " + 
                      "WfEvents.WorkflowInstanceId, " +
                      "WfEvents.TimeCreated, " + 
                      "WfEvents.Name AS EventName, " + 
                      "WfEvents.State, " + 
                      "WfEvents.ActivityName, " + 
                      "WfEvents.Exception " +
              "FROM    EventSources INNER JOIN " +
                      "WfEvents ON EventSources.Id = WfEvents.EventSourceId " +
              "WHERE   WfEvents.WorkflowInstanceId = `'$InstanceId`'"
    
    
      Invoke-Sqlcmd -Query $SQL -Database $database
    }
    

    이 스크립트 코드는 SQL Server cmdlet을 사용하는 데 필요한 구성 요소가 Windows PowerShell 세션에 로드되는지를 확인합니다. 또한 GetWFEvents라는 유틸리티 함수를 추가합니다. 이 함수를 사용하면 Wfevents 보기에서 워크플로 이벤트 정보를 검색하여 모니터링 데이터베이스를 쿼리할 수 있습니다. 함수에 사용된 SQL 쿼리는 EventSources 보기와 내부 조인을 수행하여 이벤트에 연결된 워크플로를 식별합니다.

  3. 메모장을 닫고 저장을 클릭하여 Utility.ps1에 대한 변경 내용을 저장합니다.

  4. Windows PowerShell에서 다음 명령을 실행하여 Utility.ps1에 대한 새 변경 내용을 Windows PowerShell 세션으로 가져옵니다.

    Import-Module .\Utility.ps1
    
  5. 새 스크립트 함수를 사용하여 워크플로 인스턴스에 대한 모니터링 데이터베이스에 기록된 워크플로 이벤트를 쿼리하려면 Windows PowerShell에 다음 명령을 입력합니다. 아래에 표시된 GUID를 사용자의 인스턴스 ID로 바꾸어야 합니다.

    GetWFEvents 95a25419-0d71-42c4-ab70-aa523ba603fc OrderService_PS
    
  6. Windows PowerShell에 아래에 표시된 것과 비슷한 이벤트 목록이 출력되어야 합니다.

    WorkflowName       : Microsoft.Samples.Dublin.Tutorials.OrderService.OrderWorkflowService.OrderWorkflow
    Computer           : server1
    Site               : OrderService_PS
    VirtualPath        : /OrderWorkflowService/OrderWorkflow.xamlx
    EventID            : 975
    WorkflowInstanceId : 95a25419-0d71-42c4-ab70-aa523ba603fc
    TimeCreated        : 2009-11-01 10:06:57.6974305
    EventName          : Order completed
    State              : Closed
    ActivityName       :
    Exception          :
    
    WorkflowName       : Microsoft.Samples.Dublin.Tutorials.OrderService.OrderWorkflowService.OrderWorkflow
    Computer           : server1
    Site               : OrderService_PS
    VirtualPath        : /OrderWorkflowService/OrderWorkflow.xamlx
    EventID            : 976
    WorkflowInstanceId : 95a25419-0d71-42c4-ab70-aa523ba603fc
    TimeCreated        : 2009-11-01 10:06:57.6974305
    EventName          : Order Service
    State              : Closed
    ActivityName       :
    Exception          :
    
    WorkflowName       : Microsoft.Samples.Dublin.Tutorials.OrderService.OrderWorkflowService.OrderWorkflow
    Computer           : server1
    Site               : OrderService_PS
    VirtualPath        : /OrderWorkflowService/OrderWorkflow.xamlx
    EventID            : 977
    WorkflowInstanceId : 95a25419-0d71-42c4-ab70-aa523ba603fc
    TimeCreated        : 2009-11-01 10:06:57.6974305
    EventName          :
    State              : Completed
    ActivityName       :
    Exception          :
    

이 단계에서 보고되는 이벤트는 워크플로의 활동 및 작업 상태에 대한 정보를 제공합니다. 이 정보는 런타임에 워크플로의 진행률을 모니터링하는 데 유용합니다.

모니터링 데이터베이스 쿼리에 대한 자세한 내용은 데이터베이스 뷰 및 테이블 모니터링을 참조하십시오.

Windows PowerShell을 사용한 SQL 모니터링 데이터베이스 쿼리 스크립트 샘플을 검토할 수도 있습니다. 자세한 내용은 샘플을 참조하십시오.

학습한 내용

이 단원에서는 AppFabric에서 모니터링되는 워크플로 정보를 보고하고 인스턴스를 식별하는 방법에 대해 학습했습니다. 또한 인스턴스에 대해 일시 중단, 다시 시작 및 중지 제어 작업을 사용하는 방법에 대해 살펴보았습니다. 마지막으로 Utility.ps1 스크립트 모듈에 추가된 새 스크립트 함수를 사용하여 모니터링 데이터베이스에서 워크플로 이벤트를 보고했습니다.

다음 단계

제 5과: Windows PowerShell을 사용한 워크플로 추적

참고 항목

개념

제 1과: Windows PowerShell용 Windows Server AppFabric Cmdlet 시작
제 2과: Windows PowerShell을 사용한 주문 서비스 응용 프로그램 배포
제 3과: Windows PowerShell을 사용한 주문 서비스 구성
제 5과: Windows PowerShell을 사용한 워크플로 추적

  2011-12-05