Lição 4: monitorando o Order Service com o Windows PowerShell

Tempo para conclusão: 25 minutos

Objetivo: Aprender a monitorar dados de monitoramento históricos e de tempo real usando cmdlets do Windows Server AppFabric no Windows PowerShell.

Finalidade: O objetivo desta lição é ajudá-lo a se familiarizar com as informações de instância relatadas usando cmdlets do AppFabric no Windows PowerShell, e como utilizar essas informações para controlar as instâncias.

Pré-requisitos

Observe os seguintes pré-requisitos antes de iniciar esta lição:

Procedimento

Você realizará os seguintes exercícios nesta lição:

  1. Comunicar informações de monitoramento com o Windows PowerShell.

  2. Controlar uma instância de fluxo de trabalho com o Windows PowerShell.

  3. Usar o Windows PowerShell para visualizar os eventos de fluxo de trabalho monitorados a partir do banco de dados de monitoramento do AppFabric.

Comunicando informações de monitoramento com o Windows PowerShell.

Para comunicar instâncias de WF do OrderWorkflowService implantado com o aplicativo Solicitar Serviço

  1. Execute OrderClient.exe, no diretório C:\DublinTutorial\OrderServiceSolution\Completed\OrderClient\bin\Debug. Esse arquivo foi criado na Lição 2: implantando o aplicativo Order Service com o Windows PowerShell. Você pode copiar o seguinte comando no Windows PowerShell para executar o OrderClient.

    C:\DublinTutorial\OrderServiceSolution\Completed\OrderClient\bin\Debug\OrderClient.exe
    
  2. Clique em Submit (Enviar) no Order Form (Formulário de Pedido) do Contoso.com. Antes de continuar, verifique se a seção de status na parte inferior do formulário mostra Your order has been received (Seu pedido foi recebido). Após essa mensagem ser exibida pelo formulário, uma instância do OrderWorkflowService será executada, simulando o processamento de um pedido.

  3. Anote o horário para que você possa fazer referência cruzada com a hora de criação de uma instância de fluxo de trabalho.

  4. Para comunicar instâncias de fluxo de trabalho do OrderWorkflowService usando cmdlets do AppFabric, execute o seguinte comando no Windows PowerShell.

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

    Este comando lê todas as instâncias do OrderWorkflowService no banco de dados OrderService_PS. As instâncias são canalizadas para o cmdlet Format-List usando seu alias fl para comunicar apenas as propriedades de fluxo de trabalho desejadas.

  5. Verifique se o seu comando gerou uma lista de instâncias de fluxo de trabalho semelhante à lista abaixo.

    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 :
    

    Você pode usar essas informações para monitorar o estado e as informações de exceção das instâncias.

  6. Encontre uma instância com o CreationTime que você anotou na etapa 3.

Controlando instâncias de fluxo de trabalho com o Windows PowerShell

Nesta seção você irá suspender, reiniciar e parar uma instância de fluxo de trabalho.

  1. Execute OrderClient.exe novamente para ter certeza de que tem uma instância em estado de execução. O seguinte comando no Windows PowerShell executa o OrderClient.

    C:\DublinTutorial\OrderServiceSolution\Completed\OrderClient\bin\Debug\OrderClient.exe
    
  2. Clique em Submit (Enviar) no Order Form (Formulário de Pedido) do Contoso.com. Antes de continuar, verifique se a seção de status na parte inferior do formulário mostra Your order has been received (Seu pedido foi recebido). Após essa mensagem ser exibida pelo formulário, uma instância do OrderWorkflowService será executada, simulando o processamento de um pedido.

  3. Anote o horário para que você possa fazer referência cruzada com a hora de criação de uma instância de fluxo de trabalho.

  4. Comunique as instâncias de fluxo de trabalho do OrderWorkflowService usando cmdlets do AppFabric, por meio da execução do seguinte comando no Windows PowerShell.

    Get-ASAppServiceInstance -SiteName "OrderService_PS" -VirtualPath "/OrderWorkflowService/OrderWorkflow.xamlx" –Status Running | fl InstanceId, Status, Condition, CreationTime, LastUpdateTime, SiteName, VirtualPath, ExceptionMessage
    
  5. Verifique se o seu comando gerou uma lista de instâncias de fluxo de trabalho semelhante à lista abaixo.

    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. Encontre uma instância com o CreationTime anotado na etapa 3. Destaque o valor GUID apresentado em InstanceID, arrastando o mouse sobre o GUID com o botão esquerdo do mouse pressionado.

  7. Depois que todo o GUID for destacado, clique com o botão direito do mouse dentro do GUID destacado para copiar o GUID na área de transferência.

  8. Para suspender a instância fluxo de trabalho em execução identificada por InstanceID na sua área de transferência, execute o seguinte comando, substituindo o InstanceId pelo GUID mostrado abaixo.

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

    Este comando lê a instância fluxo de trabalho identificada pelo InstanceId e a canaliza para o cmdlet Suspend-ASAppServiceInstance para suspender o fluxo de trabalho.

  9. Para reiniciar o fluxo de trabalho, execute o seguinte comando, substituindo o seu InstanceId pelo GUID mostrado abaixo.

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

    Este comando lê a instância fluxo de trabalho identificada pelo InstanceId e a canaliza para o cmdlet Resume-ASAppServiceInstance para reiniciar o fluxo de trabalho suspenso.

  10. Para interromper e encerrar a instância, execute o seguinte comando, substituindo o seu InstanceId pelo GUID mostrado abaixo.

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

    Este comando lê a instância fluxo de trabalho identificada pelo InstanceId e a canaliza para o cmdlet Stop-ASAppServiceInstance para interromper e encerrar o fluxo de trabalho.

Visualizando Eventos Controlados de WF com o Windows PowerShell

De acordo com o nível de monitoramento e o perfil de rastreamento configurado para um fluxo de trabalho, você pode rastrear vários pontos de dados em um fluxo de trabalho. Defina o nível de monitoramento como HealthMonitoring usando o cmdlet Set-ASAppMonitoring da Lição 3: configurando o Order Service com o Windows PowerShell. Nesta seção, você gerará um relatório dos eventos do WF rastreados na sua instância. Para comunicar essa informação, você deverá usar novamente uma função de script que você adicionará ao seu módulo de script Utility.ps1.

  1. No Windows PowerShell, digite o seguinte comando para abrir o arquivo de script Utility.ps1.

    Notepad .\Utility.ps1
    
  2. Copie e cole a seguinte função de script no Bloco de Notas, no final do script 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
    }
    

    Esse código de script verifica se os componentes necessários para usar os cmdlets SQL Server estão carregados na sessão do Windows PowerShell. Ele também adiciona uma função utilitária, chamada GetWFEvents. Essa função permite que você consulte o banco de dados de monitoramento, recuperando informações de eventos de fluxo de trabalho a partir do modo de exibição Wfevents. A consulta SQL usada pela função realiza uma junção interna com o modo de exibição EventSources a fim de identificar o fluxo de trabalho associado aos eventos.

  3. Feche o Bloco de Notas e clique em Salvar para salvar as alterações realizadas em Utility.ps1.

  4. No Windows PowerShell, execute o seguinte comando para importar as novas alterações realizadas no Utility.ps1 para a sua sessão do Windows PowerShell.

    Import-Module .\Utility.ps1
    
  5. Digite o seguinte comando no Windows PowerShell para utilizar a nova função de script e consultar os eventos de fluxo de trabalho registrados no banco de dados de monitoramento para a sua instância de fluxo de trabalho. Não deixe de substituir o seu ID de instância pelo GUID mostrado abaixo.

    GetWFEvents 95a25419-0d71-42c4-ab70-aa523ba603fc OrderService_PS
    
  6. O resultado no Windows PowerShell deve ser uma lista de eventos semelhante à mostrada a seguir.

    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          :
    

Os eventos comunicados nesta etapa fornecem informações sobre o status e o estado de atividades, e operações no fluxo de trabalho. Essas informações são úteis para monitorar o andamento de um fluxo de trabalho durante o tempo de execução.

Para obter mais informações sobre como consultar o banco de dados de monitoramento, consulte Monitorando exibições e tabelas de banco de dados.

Além disso, você pode analisar o script de exemplo Consultando o repositório de monitoramento do SQL usando o Windows PowerShell. Para obter mais informações, consulte Exemplos.

O que acabei de fazer?

Nesta lição, você aprendeu como comunicar informações de fluxo de trabalho monitoradas pelo AppFabric e identificar uma instância. Você também aprendeu a usar as operações de controle de suspensão, retomada e interrupção nas instâncias. Finalmente, você usou uma nova função de script adicionada ao módulo de script Utility.ps1 para comunicar eventos de fluxo de trabalho a partir do banco de dados de monitoramento.

Próximas etapas

Lição 5: rastreando o fluxo de trabalho com o Windows PowerShell

Consulte também

Conceitos

Lição 1: introdução aos cmdlets do Windows Server AppFabric para Windows PowerShell
Lição 2: implantando o aplicativo Order Service com o Windows PowerShell
Lição 3: configurando o Order Service com o Windows PowerShell
Lição 5: rastreando o fluxo de trabalho com o Windows PowerShell

  2011-12-05