WebSphere Message Broker, Versão 8.0.0.5 Sistemas operacionais: AIX, HP-Itanium, Linux, Solaris, Windows, z/OS

Consulte as informações sobre a versão mais recente do produto em IBM Integration Bus, Versão 9.0

Perfil de Monitoramento

Para customizar eventos após um fluxo de mensagens ter sido implementado, mas sem reimplementar o fluxo, use um serviço configurável do perfil de monitoramento. Usando este serviço, é possível aplicar um perfil de monitoramento a um ou mais fluxos de mensagens.

Um perfil de monitoramento é um documento XML que especifica as fontes de eventos em um fluxo de mensagens que emitirá eventos, e as propriedades destes. O XML do perfil de monitoramento deve estar em conformidade com o arquivo do esquema XML MonitoringProfile.xsd.

Esboço de perfil de monitoramento

Aqui está uma estrutura de tópicos do perfil de monitoramento que contém uma única origem de eventos para ilustrar a estrutura:

<p:monitoringProfile
xmlns:p="http://www.ibm.com/xmlns/prod/websphere/messagebroker/6.1.0.3/monitoring/profile" p:version="2.0">
    <p:eventSource p:enabled="true" p:eventSourceAddress="SOAPInput.transaction.Start">
        <p:eventPointDataQuery>
            <p:eventIdentity>
                <p:eventName p:literal="" p:queryText=""/>
            </p:eventIdentity>
            <p:eventCorrelation>
                <p:localTransactionId p:queryText="" p:sourceOfId="automatic"/>
                <p:parentTransactionId p:queryText="" p:sourceOfId="automatic"/>
                <p:globalTransactionId p:queryText="" p:sourceOfId="automatic"/>
            </p:eventCorrelation>
           <p:eventFilter p:queryText="true()"/>           <p:eventUOW p:unitOfWork="messageFlow" />        </p:eventPointDataQuery>
        <p:applicationDataQuery>
            <p:simpleContent p:dataType="boolean" p:name="" p:targetNamespace="">
                <p:valueQuery p:queryText=""/>
            </p:simpleContent>
            <p:complexContent p:name="" targetNamespace="">
                <p:payloadQuery p:queryText=""/>
            </p:complexContent>
        </p:applicationDataQuery>
        <p:bitstreamDataQuery p:bitstreamContent="all" p:encoding="base64Binary"/>
    </p:eventSource>
</p:monitoringProfile>
O elemento-raiz é p:monitoringProfile . Ele contém um ou mais elementos p:eventSource, cada qual especifica uma fonte de eventos e define suas propriedades. Cada elemento p:eventSource contém:
  • Um elemento p:eventPointDataQuery que fornece informações chave sobre o evento.
  • Opcional: Um elemento p:applicationDataQuery se a carga útil de eventos for incluir os campos de dados extraídos de uma mensagem.
  • Opcional: Um elemento p:bitstreamDataQuery se a carga útil de eventos for incluir dados de fluxo de bits de uma mensagem.

Criando um perfil de monitoramento

Para ajudá-lo a criar perfis de monitoramento, a amostra a seguir contém um arquivo XML de perfil de monitoramento de estrutura de tópicos e o arquivo de esquema XML do perfil de monitoramento (MonitoringProfile.xsd):

Valide seus perfis de monitoramento com relação ao esquema XML para assegurar que eles estejam corretos.

Você só pode visualizar informações sobre amostras quando usa o centro de informações que está integrado ao WebSphere Message Broker Toolkit ou o centro de informações on-line. Você só poderá executar amostras quando usar o centro de informações que está integrado ao WebSphere Message Broker Toolkit.

Dica: Se você tiver um fluxo de mensagem implementado que tenha propriedades de monitoramento usando o editor de Fluxo de Mensagens, poderá usar o comando mqsireportflowmonitoring para criar o arquivo XML do perfil de monitoramento equivalente para o fluxo de mensagens. Este perfil pode ser usado como um ponto de início para a criação de outros perfis de monitoramento.

As etapas a seguir descrevem como criar um XML do perfil de monitoramento. Siga essas etapas para cada elemento p:eventSource.

  1. Especifique o atributo p:eventSource/@p:eventSourceAddress.
    Este é uma cadeia que identifica unicamente a fonte de eventos no fluxo de mensagens. Ela deve seguir o formato fixo para eventos de transação e eventos de terminal, como demonstrado na tabela a seguir:
    Tipo de evento Endereço de fonte de eventos
    Evento de Início da Transação nodelabel.transaction.Start
    Evento de Fim da Transação nodelabel.transaction.End
    Evento de Recuperação da Transação nodelabel.transaction.Rollback
    Evento Terminal nodelabel.terminal.<Terminal>
    Nota: nodelabel é o rótulo do nó como ele é conhecido pelos componentes de tempo de execução do broker. Se o nó estiver em um subfluxo, a etiqueta refletirá isto. Por exemplo, o fluxo A contém uma instância do fluxo B como um subfluxo denominado myB; o fluxo B contém uma instância de um nó Compute chamada myCompute. O nodelabel para o nó Compute é myB.myCompute.

    No evento emitido, a cadeia de endereço da origem de eventos é configurada no atributo wmb:eventData/@wmb:eventSourceAddress.

  2. Opcional: Especifique o nome pelo qual os eventos dessa origem de eventos será conhecido, no elemento p:eventPointDataQuery/p:eventIdentity/p:eventName.
    • Se o nome do evento for uma cadeia fixa, conclua o atributo p:eventName/@p:literal
    • Se o nome do evento for extraído de um campo na mensagem, conclua o atributo p:eventName/@p:queryText especificando uma consulta XPath.

    No evento emitido, o nome do evento é configurado no atributo wmb:eventPointData/wmb:eventIdentity/@wmb:eventName .

    Se o elemento p:eventName não for fornecido, o @wmb:eventName no evento emitido será padronizado como @p:eventSourceAddress.

  3. Opcional: Complete o atributo p:eventPointDataQuery/p:eventFilter/@p:queryText especificando uma expressão XPath para controlar se o evento é emitido. A expressão deve ser avaliada como true (o evento é emitido) ou false (o evento não é emitido). A expressão pode fazer referência a campos na árvore de mensagens ou em outra parte na montagem da mensagem. Se um evento não contiver um elemento eventFilter, o evento será emitido sempre.

    Usando essa facilidade, é possível padronizar emissões de eventos em seus requisitos de negócios, filtrando eventos que não correspondam a um conjunto de regras. Isto pode reduzir o número de eventos emitidos e reduzir a carga de trabalho em seu aplicativo de monitoramento.

  4. Opcional: Complete o elemento p:applicationDataQuery, se o evento tiver de conter campos de dados selecionados extraídos da mensagem. Você pode extrair um ou mais campos desses dados da mensagem e inclui-los no evento. Os campos podem ser simples ou complexos.
    • Para cada campo de dados simples, conclua um elemento p:simpleContent :
      • Conclua o atributo p:simpleContent/p:valueQuery/@p:queryText especificando uma consulta XPath.
      • Conclua os atributos p:simpleContent/@p:name, @p:namespace e @p:dataType. O valor @p:dataType deve ser um dos seguintes: boolean, date, dateTime, decimal, duration, integer, string ou time.
    • Para cada campo de dados complexo, conclua um elemento p:complexContent:
      • Conclua o atributo p:complexContent/p:payloadQuery/@p:queryText especificando uma consulta XPath.
      • Conclua os atributos p:complexContent/@p:name e @p:namespace.

    Este instrumento geralmente é utilizado para comunicar dados de negócios importantes em um evento de negócio. Se o evento contiver o fluxo de bits de entrada, o instrumento também poderá ser utilizado para extrair campos-chave, permitindo que outro aplicativo forneça uma trilha de auditoria ou reenvie as mensagens que falharam.

    No evento emitido, os dados extraídos são configurados nos elementos wmb:applicationData/wmb:simpleContent e wmb:applicationData/wmb:complexContent.

  5. Opcional: Complete o elemento p:bitstreamDataQuery, se o evento tiver de capturar dados do fluxo de bits da mensagem:
    • Conclua o atributo @p:bitstreamContent. O atributo valor deve ser um dos seguintes headers, body, ou all.
    • Conclua o atributo @p:encoding. O atributo valor deve ser um dos seguintes CDATA, base64Binary ou hexBinary.

    No evento emitido, os dados de fluxo extraídos são configurados no elemento wmb:bitstreamData/wmb:bitstream.

  6. Opcional: Complete o elemento p:eventPointDataQuery/p:eventCorrelation. Para obter informações sobre correlação, consulte Eventos de Correlação e Monitoramento.

    Todo evento de monitoramento emitido pode conter até três atributos de correlação. Se nenhuma informação de correlação for especificada no perfil de monitoramento, nenhum atributo de correlação será usado.

    1. Opcional: Complete o elemento p:localTransactionId.
      • Se desejar reutilizar o correlacionador local da árvore Ambiente, configure o atributo p:localTransactionId/@p:sourceOfId para automatic. Se não houver ainda nenhum correlacionador, um novo valor único será gerado e salvo na árvore Ambiente.
      • Se desejar usar um valor contido em um local na mensagem, configure o atributo p:localTransactionId/@p:sourceOfId como query, em seguida, complete o atributo p:localTransactionId/@p:queryText especificando uma consulta XPath. Certifique-se de que o local especificado contenha um valor exclusivo de correlacionador para chamar o fluxo de mensagens. O valor é salvo na árvore Ambiente.
    2. Opcional: Complete o elemento p:parentTransactionId.
      • Se você desejar reutilizar o correlacionador pai a partir da árvore Ambiente, configure o atributo p:parentTransactionId/@p:sourceOfId para automatic. Se ainda não existir nenhum correlacionador pai, não será utilizado nenhum correlacionador pai.
      • Se desejar usar um valor contido em um local na mensagem, configure o atributo p:parentTransactionId/@p:sourceOfId como query, em seguida, complete o atributo p:parentTransactionId/@p:queryText especificando uma consulta XPath. Certifique-se de que o local especificado contenha um valor que sirva para o correlacionador pai. O valor é salvo na árvore Ambiente.
    3. Opcional: Complete o elemento p:globalTransactionId.
      • Se desejar reutilizar o correlacionador global da árvore Ambiente, configure o atributo p:globalTransactionId/@p:sourceOfId para automatic. Se ainda não existir nenhum correlacionador global, não será utilizado nenhum correlacionador global.
      • Se desejar usar um valor contido em um local na mensagem, configure o atributo p:globalTransactionId/@p:sourceOfId como query, em seguida, complete o atributo p:globalTransactionId/@p:queryText especificando uma consulta XPath. Certifique-se de que o local especificado contenha um valor compatível com o correlacionador global. O valor é salvo na árvore Ambiente.
  7. Conclua o elemento p:eventPointDataQuery/p:eventUOW. Isto determina se a emissão de eventos de monitoramento por um fluxo de mensagens é coordenada com a transação do fluxo de mensagens ou está em uma unidade de trabalho independente ou não.
    Configure o atributo p:eventUOW/@p:unitOfWork com um dos valores a seguir:
    messageFlow
    O evento, e todos os outros eventos com esta configuração, são emitidos somente se o fluxo de mensagens confirmar sua unidade de trabalho com êxito.

    Se o evento de início da transação for especificado para ser incluído na unidade de trabalho do fluxo de mensagens, mas o processamento de mensagens falhar e esta unidade de trabalho não for publicada, o evento de início da transação será incluído em uma unidade de trabalho independente. Isto assegura que seu aplicativo de monitoramento receba um par de eventos (início e retrocesso), em vez de receber um evento de retrocesso em isolamento.

    independent
    O evento é emitido em uma segunda unidade de trabalho, independente da unidade de trabalho principal. O evento, e todos os outros eventos com esta configuração, serão emitidos independentemente de a unidade de trabalho principal ser confirmada com êxito.

    Uma transação independente pode ser iniciada somente se a transação principal tiver sido confirmada ou retrocedida. Se a propriedade Contagem de Confirmações do fluxo for maior que um, (Propriedades Configuráveis do Fluxo de Mensagens), ou a propriedade Confirmar por grupo de mensagens estiver configurada (Recebendo Mensagens em um Grupo de Mensagens do WebSphere MQ), os eventos direcionados para a transação independente serão então emitidos fora do ponto de sincronização e será exibida uma mensagem indicando que isto foi feito.

    nenhum
    O evento é emitido fora do ponto de sincronização (não em qualquer unidade de trabalho.) O evento é emitido quando a mensagem passa pela fonte de eventos e está disponível para leitura imediatamente.
    Nem todas estas opções estão disponíveis em todos os tipos de eventos. Os valores permitidos são mostrados na tabela a seguir:
    Tipo de Evento Valores Permitidos
    transaction.Start
    • messageFlow
    • independent
    • nenhum
    transaction.End
    • messageFlow
    • nenhum
    transaction.Rollback
    • independent
    • nenhum
    terminal
    • messageFlow
    • independent
    • nenhum
    Se você não incluir o elemento eventUOW para uma fonte de eventos, a transacionalidade para todos os eventos emitidos a partir dessa origem, exceto eventos transaction.rollback, assumirá por padrão messageFlow. A transacionalidade para eventos transaction.rollback assume por padrão independent.

Consultas XPath e namespaces XML

Se uma consulta XPath contiver um componente que possui um namespace XML, o XPath contém um prefixo de namespace para ele. Por exemplo, o seguinte XPath se refere a componentes em dois namespace diferentes:

<p:localTransactionId p:sourceOfId="query" p:queryText="$Body/soapenv:Header/wsa:messageID" />

Para que o broker resolva o prefixo de namespace, a URL deste deve também ser fornecida. Forneça um elemento de mapeamento de prefixo para cada namespace:

      <p:localTransactionId p:sourceOfId="query" p:queryText="$Body/soapenv:Header/wsa:messageID">
        <p:prefixMapping p:prefix="soapenv" p:URI="http://www.w3.org/2003/05/soap-envelope" />
        <p:prefixMapping p:prefix="wsa" p:URI="http://www.w3.org/2005/08/addressing" />
      </p:localTransactionId>

Exemplos de Perfis de Monitoramento

Os seguintes documentos XML estão em conformidade com o esquema do perfil de monitoramento

Perfil de Monitoramento1: Duas fontes de eventos, cada uma fornecendo um nome de evento

<p:monitoringProfile p:version="2.0">
 <p:eventSource p:eventSourceAddress="SOAPInput.transaction.Start">
  <p:eventPointDataQuery>
    <p:eventIdentity>
      <p:eventName p:literal="SOAP start event"/>
    </p:eventIdentity>
  </p:eventPointDataQuery>
 </p:eventSource>
 <p:eventSource p:eventSourceAddress="SOAPInput.transaction.End">
  <p:eventPointDataQuery>
    <p:eventIdentity>
      <p:eventName p:literal="SOAP end event"/>
    </p:eventIdentity>
  </p:eventPointDataQuery>
 </p:eventSource>
</p:monitoringProfile>
Perfil de monitoramento 2: Forneça um correlacionador local alternativo
<p:monitoringProfile p:version="2.0">
 <p:eventSource p:eventSourceAddress="SOAPInput.transaction.Start">
  <p:eventPointDataQuery>
    <p:eventCorrelation>
      <p:localTransactionId p:queryText="$Body/soapenv:Header/wsa:messageID" p:sourceOfId="query">
        <p:prefixMapping p:prefix="soapenv" p:URI="http://www.w3.org/2003/05/soap-envelope"/>
        <p:prefixMapping p:prefix="wsa" p:URI="http://www.w3.org/2005/08/addressing"/>
      </p:localTransactionId>
    </p:eventCorrelation>
  </p:eventPointDataQuery>
 </p:eventSource>
</p:monitoringProfile>
Perfil de Monitoramento 3: Inclua dois campos simples da mensagem
<p:monitoringProfile p:version="2.0">
 <p:eventSource p:eventSourceAddress="MQInput.terminal.out">
  <p:applicationDataQuery>
    <p:simpleContent p:dataType="integer" p:name="InvoiceNumber">
      <p:valueQuery p:queryText="$Body/invoice/invoiceNo"/>
    </p:simpleContent>
    <p:simpleContent p:dataType="string" p:name="BatchID">
      <p:valueQuery p:queryText="$Body/batch/batchNo"/>
    </p:simpleContent>
  </p:applicationDataQuery>
 </p:eventSource>
</p:monitoringProfile>
Perfil de Monitoramento 4: Inclua o fluxo de bits, codificado como CDATA
Por padrão, os fluxos de bits são codificados em formato base64Binary. O seguinte perfil de monitoramento altera a codificação para CDATA.
<p:monitoringProfile p:version="2.0">
 <p:eventSource p:eventSourceAddress="MQInput.terminal.out">
    <p:bitstreamDataQuery p:bitstreamContent="body" p:encoding="CDATA"/>
 </p:eventSource>
</p:monitoringProfile>
A codificação CDATA não é apropriada para todos os tipos de dados. Utilize apenas CDATA quando @p:bitstreamContent="body". Não use CDATA se seus fluxos de bits de mensagens puderem conter caracteres que não sejam permitidos em XML (consulte http://www.w3.org/TR/2006/REC-xml-20060816/#charsets).
Avisos | Marcas Registradas | Downloads | Biblioteca | Suporte | Feedback

Copyright IBM Corporation 1999, 2014Copyright IBM Corporation 1999, 2014.

        
        Última atualização:
        
        Última atualização: 2015-02-28 18:28:41


Tópico de ReferênciaTópico de Referência | Versão 8.0.0.5 | ac37900_