terça-feira, 17 de novembro de 2015

Websphere MQ Client, rc=2058 rc=MQRC_Q_MGR_NAME_ERROR

Troubleshooting aplicações que utilizam o MQ Client.

Vamos analisar o rc=2058, MQRC_Q_MGR_NAME_ERROR, visto nos logs de uma aplicação que se conecta via MQ Client.

Resumidamente, habilitamos o trace no MQ Client: strmqtrc -e -t all -t detail -l 100

Nos traces foi possível identificar que a aplicação não estava enviando as informações de conectividade com o MQ, através da liinha no trace destacada abaixo.

  • 000E9C96 09:32:04.816994  26884.2      RSESS:001381 --------{  xcsWaitThreadEvent 
  • 000E9C9B 09:32:04.826892  26884.182         :       Constructing IBM.WMQ.MQQueueManager#0294AD3E MQMBID sn=p750-005-150424 su=_cGGLkOp9EeSJoq1UhPFS6Q pn=lib/dotnet/pc/winnt/baseclasses/MQManagedObject.cs
  •  000E9C9C 09:32:04.826924  26884.182         :       Constructing IBM.WMQ.MQQueueManager#0294AD3E MQMBID sn=p750-005-150424 su=_cGGLkOp9EeSJoq1UhPFS6Q pn=lib/dotnet/pc/winnt/baseclasses/MQQueueManager.cs
  •  000E9C9D 09:32:04.826939  26884.182         :       --{  MQQueueManager.Connect()
  •  000E9C9E 09:32:04.826950  26884.182         :       SCCSID: '@(#) MQMBID sn=p750-005-150424 su=_cGGLkOp9EeSJoq1UhPFS6Q pn=lib/dotnet/pc/winnt/baseclasses/MQQueueManager.cs'
  •  000E9C9F 09:32:04.826965  26884.182         :       MQQueueManager.IsConnected False HConn: (null)
  •  000E9CA0 09:32:04.826979  26884.182         :       ConnectOptions: QMgr = '', ConnName = '', Channel = ''

Por isso ocorreu o reason code 2058
  • 000EA05F 09:32:04.845598  26884.182         :       IBM.WMQ.MQQueueManager#0294AD3E throwing MQException: cc=2 rc=2058
  •  000EA060 09:32:04.845617  26884.182         :       New MQException CompCode: 2 Reason: 2058
  •  000EA061 09:32:04.845677  26884.182         :       --}! MQQueueManager.Connect() (rc=MQRC_Q_MGR_NAME_ERROR)

Para uma conectividade normal com o MQ, os dados de conectividade irão aparecer como abaixo:
  •  00001545 16:35:21.486811  36520.8           :       ConnectOptions: QMgr = 'Nome-Queue-Manager', ConnName = '', Channel = ''
  • 00001546 16:35:21.486843  36520.8           :       Connection Name: Ip-MQ-Server(Porta-MQ-Server)
  • 00001547 16:35:21.486861  36520.8           :       Channel: Nome-do-canal

Com isso, vimos como analisar o trace e identificar uma falha de conexão de aplicações que se conectam diretamente no MQ Server via MQ Client..

terça-feira, 21 de julho de 2015

WebSphere MQ - Troubleshhoting MQ Server - Activity trace

Existem várias situações que precisamos habilitar trace para troubleshooting.

O trace padrão do MQ pode ser habilitado via comando:
strmqtrc -e -t all -t detail -l 100

Para desabilitar o trace:
endmqtrc -a

Os traces serão gerados no diretório padrão [../qmgrs/nome_queue_manager/trace] no formato AMQ...

Há casos onde precisamos de informações mais detalhadas de todas as atividades realizadas no MQ (Activity trace).
Podemos, por exemplo, obter o conteúdo de todas as mensagens e o correlation id das mesmas para troubleshooting envolvendo o Message Broker. Para isso:

1. Editar o arquivo de Activity trace, [../qmgrs/nome_queue_manager/mqat.ini].
Exemplo de valores: TraceLevel=HIGH, TraceMessageData=100, StopOnGetTraceMsg=OFF

2. Habilitar Activity trace: via MQ Explorer clique com o botão direito em cima do Queue Manager > Online monitoring > Activity trace > ON. Ou, via comando ALTER QMGR ACTVTRC(ON).

3. Efetuar as operações desejadas no MQ Server

4. Desabilitar o Activity trace

5. Visualizar os traces: /usr/mqm/samp/bin/amqsact -m nome_queue_manager -v > saida.txt

6. Visualizar o conteúdo do arquivo saida.txt

Vale ressaltar que Activity trace tem um grande peso sobre a performance do ambiente. Só habilite em momentos de troubleshooting e de modo controlado.

Link de referência: http://www.ibm.com/developerworks/websphere/library/techarticles/1306_bushby/1306_bushby.html

quarta-feira, 15 de julho de 2015

WebSphere MQ - Troubleshhoting MQ Client

Em alguns casos há falha de conectividade entre as aplicações que utilizam MQ Client e o MQ Server como, por exemplo, reason code 2539 [RC2539): MQRC_CHANNEL_CONFIG_ERROR]

Através do MQ Client podemos testar a conectividade com o MQ Server através dos próprios utilitários do MQ, normalmente localizado em "c:\program files (x86)\ibm\websphere mq\tools\c\samples\bin", utilizando os comandos abaixo.

1. Validar a conexão entre o MQ Client e MQ Server
amqscnxc.exe -x nome_do_servidor -c nome_do_canal nome_do_queue_manager

Exemplo: amqscnxc.exe -x servidor01 -c canal01 QM01
Nesse caso, será possível validar se realmente há um problema de conectividade entre o MQ Client e o MQ Server ou se há algum erro vindo da aplicação.
Em algumas situações, foi possível ver que o nome do servidor está configurado incorretamente na aplicação.

2. Inserir uma mensagem na fila
set MQSERVER=nome_do_canal/TCP/nome_do_servidor(1414)
amqsputc nome_da_fila nome_do_queue_manager

Exemplo:
set MQSERVER=SYSTEM.DEF.SVRCONN/TCP/servidor01(1414)
amqsput fila01 QM01
Nesse caso, será possível validar se há algum problema para inserir uma mensagen na fila.
Em algumas situações, foi possível identificar que o usuário utilizado na aplicação não tem permissão para inserir mensagem na fila. Quando isso ocorre, é possível identificar com precisão a falta de permissão no MQ Server no arquivos "../errors/AMQERR01.LOG"

3. Habilitar traces
Em situações mais complexas pode ser necessário habilitar trace e reproduzir o problema para análise ou mesmo encaminhar traces para o Fornecedor (IBM). Os traces ficam gravados no diretório "..\websphere mq\trace" do MQ Client.

- Habilitar trace no MQ Client
strmqtrc -e -t all -t detail -l 100

- Desabilitar trace no MQ Client
endmqtrc -a

4. Verificar lentidão
E alguns casos pode ser percebdio lentidão de conexão entre o MQ Client e o MQ Server. Uma das causas é IPv6 lookup.
Links de referência: http://www-01.ibm.com/support/docview.wss?uid=swg21306138 e http://www-01.ibm.com/support/docview.wss?uid=swg21515397