Olá pessoal, tudo certo?

Vamos continuar falando sobre Windows Server AppFabric e Monitoração de serviços nesse post.

No post anterior vimos que o AppFabric permite selecionar e aplicar diferentes níveis de monitoração, tanto para todo o servidor IIS como para uma aplicação específica.

Quando escolhemos um nível de monitoração estamos de fato aplicando um tracking profile pré-definido do ambiente, que configura quais eventos, variáveis de mensagens e de ambiente serão capturados e registrados na base de monitoração.

Vemos isso selecionando a aplicação no IIS Manger e fazendo um right-click na pasta da aplicação. Escolhendo a opção Configure, veremos a aba de Monitoração (Monitoring).

image

Clicando no botão Configure acima, você verá todas as opções de tracking profiles disponíveis para a aplicação.

image

Entretanto, podemos ainda customizar um tracking profile específico para nosso workflow WF. Isso é feito através de uma configuração no arquivo Web.Config de nosso serviço WCF Workflow Services, no ambiente do Visual Studio 2010.

Ainda não é possível fazer essa customização de forma visual, assim, precisamos mesmo criar uma seção XML no arquivo de configuração para essas definições de forma manual.

Para verificar esse tipo de configuração, abra a solução OrderApplication.sln, que está instalada em seu pacote Windows Server AppFabric Samples, no diretório local “C:\Windows Servre AppFabric Samples\SampleApplication\OrderApplication”.

Nota: se você ainda não instalou o pacote de exemplos acima, não perca tempo! Instale agora mesmo a partir do link a seguir:

Windows Server AppFabric Samples
Ref.: http://www.microsoft.com/downloads/en/details.aspx?FamilyID=DB665003-44C5-4E25-9CE1-C53512F24492

Instalação e Leitura Obrigatória!!! :)

Uma vez aberta a solução, abra o arquivo de configuração Web.Config do projeto “SaleService”, que implementa um serviço workflow. Note que existe uma entrada <etwTracking profileName="Sale Service Order Tracking" />, que define um novo profile customizado para a aplicação.

<etwTracking profileName="Sale Service Order Tracking" />

Esse novo profile está definido com o nome “Sale Service Order Tracking” e está logo abaixo no arquivo Web.Config, onde vemos o trecho de código a seguir:

   1:  
   2:    <tracking>
   3:        <profiles>
   4:            <trackingProfile name="Sale Service Order Tracking">
   5:                <workflow activityDefinitionId="*">
   6:                    <workflowInstanceQueries>
   7:                        <workflowInstanceQuery>
   8:                            <states>
   9:                                <state name="*" />
  10:                            </states>
  11:                        </workflowInstanceQuery>
  12:                    </workflowInstanceQueries>
  13:                    <activityStateQueries>
  14:                        <activityStateQuery activityName="Assign Catalog Expired Status">
  15:                            <states>
  16:                                <state name="Closed" />
  17:                            </states>
  18:                            <variables>
  19:                                <variable name="StatusText" />
  20:                            </variables>
  21:                        </activityStateQuery>
  22:                        <activityStateQuery activityName="Process New Order">
  23:                            <states>
  24:                                <state name="Closed" />
  25:                            </states>
  26:                            <variables>
  27:                                <variable name="StatusText" />
  28:                                <variable name="NewPurchaseOrder" />
  29:                                <variable name="PurchaseTotal" />
  30:                            </variables>
  31:                        </activityStateQuery>
  32:                        <activityStateQuery activityName="ShippingProcessor: Fill Order">
  33:                            <states>
  34:                                <state name="Closed" />
  35:                            </states>
  36:                            <variables>
  37:                                <variable name="StatusText" />
  38:                            </variables>
  39:                        </activityStateQuery>
  40:                        <activityStateQuery activityName="ShippingProcessor: Ship Order">
  41:                            <states>
  42:                                <state name="Closed" />
  43:                            </states>
  44:                            <variables>
  45:                                <variable name="StatusText" />
  46:                            </variables>
  47:                        </activityStateQuery>
  48:                        <activityStateQuery activityName="Cancel Order">
  49:                            <states>
  50:                                <state name="Closed" />
  51:                            </states>
  52:                            <variables>
  53:                                <variable name="StatusText" />
  54:                            </variables>
  55:                        </activityStateQuery>
  56:                    </activityStateQueries>
  57:                    <faultPropagationQueries>
  58:                        <faultPropagationQuery faultSourceActivityName="*" faultHandlerActivityName="*" />
  59:                    </faultPropagationQueries>
  60:                    <bookmarkResumptionQueries>
  61:                        <bookmarkResumptionQuery name="*" />
  62:                    </bookmarkResumptionQueries>
  63:                    <customTrackingQueries>
  64:                        <customTrackingQuery name="*" activityName="*" />
  65:                    </customTrackingQueries>
  66:                </workflow>
  67:            </trackingProfile>
  68:        </profiles>
  69:    </tracking>

Pronto, sua aplicação agora possui um tracking profile definido de forma customizada e que será usado pelo AppFabric no momento de coleta de eventos através do ETW.

Aproveite para executar a solução OrderApplication aberta, a partir de seu Visual Studio 2010.

Depois, entre no AppFabric Dashboard e consulte as informações sobre a aplicação. Você verá que o tracking profile name definido será o “Sale Service Order Tracking”, com a coleta de eventos customizada.

image

Gostou? :)

Nota: esse post não entrou em detalhes sobre os elementos XML e tuning do tracking profile, mas já deu para ter uma ideia do grau de customização que podemos colocar em nosso ambiente com o Windows Server AppFabric, principalmente para cenários com workflows WF. Concorda?

Existem ainda outros cenários de monitoração mais sofisticados e completos. Para ambientes corporativos, podemos usar a infraestrutura System Center Operations Manager da Microsoft, que fala nativamente com o ambiente AppFabric.

Para esse tipo de cenário, o componente de integração é o Management Pack para AppFabric que vemos a seguir:

Windows Server AppFabric Management Pack for Operations Manager 2007
Ref.: http://www.microsoft.com/downloads/en/details.aspx?FamilyID=7E870C9A-0B5B-4CCA-8D8C-42A66B8C9741&amp%3Bdisplaylang=en

Se sua empresa já possui o SCOM instalado, avise o pessoal que o Management Pack é importante para integrar seus ambientes servidores com Windows Server AppFabric.

Em posts futuros, vamos falar mais sobre o tema e outras ferramentas de monitoração na plataforma Microsoft.

Por enquanto é só! Até o próximo post :)

Waldemir.