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:
- Você deve concluir a Lição 3: configurando o Order Service com o Windows PowerShell antes de começar essa lição.
Procedimento
Você realizará os seguintes exercícios nesta lição:
Comunicar informações de monitoramento com o Windows PowerShell.
Controlar uma instância de fluxo de trabalho com o Windows PowerShell.
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
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
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.
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.
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.
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.
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.
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
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.
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.
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
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 :
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.
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.
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.
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.
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.
No Windows PowerShell, digite o seguinte comando para abrir o arquivo de script Utility.ps1.
Notepad .\Utility.ps1
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.
Feche o Bloco de Notas e clique em Salvar para salvar as alterações realizadas em Utility.ps1.
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
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
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