Obtendo MQConsole (interface brower para administrar MQ via mqweb) funcionando
Era um ano novo, enquanto eu me sentava na minha caverna do porão enquanto os ventos fortes sopravam pela casa, pensei em tentar usar o novo MQWeb e MQConsole, e ver como ele resiste ao “tratamento Paice”. O MQWeb permite que você administre o MQ a partir de um navegador da Web ou de uma interface rest (por exemplo, usando CURL ou Python). Essa tecnologia já existe há alguns anos. Sei que está sendo aprimorado a cada poucos meses através do canal de entrega contínua.
A instalação e o início me lembraram de um carro antigo pertencente ao meu pai. O carro não foi fácil de arrancar (tinha uma alça de partida!), mas uma vez que foi iniciado funcionou muito bem.
Colocá-lo em funcionamento em uma sandbox de teste levou cerca de 1 hora. Levei cerca de duas semanas para configurar o mqweb corretamente usando certificados digitais e documentar como eu fazia isso. Sendo relacionado à segurança, deve haver uma equipe que tente dificultar ao máximo o diagnóstico de problemas para não fornecer informações úteis a um hacker. Também levou um tempo para descobrir como usar o mqweb em uma empresa onde você tem várias máquinas e tem que suportar muitos usuários. Também parece um pouco bugado e parte disso foi frustrante, mas como está sendo continuamente melhorado, tenho certeza de que vai melhorar.
Ive escreveu alguns posts no blog
- Compreendendo os conceitos de TLS para usar certificados para autenticação no mqweb
- Configurando um certificado assinado pela CA para a extremidade do servidor mqweb
- Configurando um certificado autoassinado para o final do servidor mqweb
- Configurando o certificado assinado pela CA do usuário final para mqweb
- Configurando o certificado autoassinado do usuário final para o mqweb
- mqweb – como usar os comandos da API REST.
- Usando o IBM api explorer para exibir a sintaxe dos comandos mq rest
- Colocando o mqweb em produção
- API REST Python e mq
- Qual é a diferença entre a API de mensagem e a API de administrador?
- Como usar gráficos mqweb, e eles se parecem com “trabalho em andamento”
- MQWEB – Notas de Desempenho
- MQWeb – Como obter um rastreamento do navegador Chrome
- Mensagens de erro mqweb e sintomas de problemas de instalação do TLS
- Obtendo estatísticas sobre o console MQ e solicitações REST
Eu tinha MQ 9.1.3 rodando no meu laptop executando Ubuntu 18.04.
Instalando-o e funcionando.
Inicialmente segui as instruções 9.1 aqui. Depois de muitos cliques e adivinhações, cheguei a esta página que me deu algumas instruções (mas elas não foram muito úteis). Existem vários erros na página, como var/mqm/web deve ser /var/mqm/web. Eu ignorei as instruções e simplesmente usei sudo apt install /home/colinpaice/…/ibmmq-web_9.1.3.0_amd64.deb para instalá-lo.
O arquivo de configuração /opt/mqm/web/mq/samp/configuration/basic_registry.xml tem userids predefinidos e a configuração é adequada para ter uma visão inicial do MQWEB.
Eu usei
cp /opt/mqm/web/mq/samp/configuration/basic_registry.xml
/var/mqm/web/installations/Installation1/servers/mqweb/mqwebuser.xml
para copiar o arquivo de configuração.
Iniciando e parando o mqweb
O comando strmqweb falhou para mim. Isso foi estranho, pois comandos como strmqm funcionam. Isso ocorre porque há um link simbólico /usr/bin/strmqm que aponta para /opt/mqm/bin/strmqm, mas nenhum link para os comandos mqweb.
Veja aqui que explica que existe um /usr/bin/strmqm → /opt/mqm/bin/strmqm , mas não para as coisas do mqweb. Eu acho que isso é um IBM Whoops.
Eu mesmo os criei usando
sudo ln -s /opt/mqm/bin/dspmqweb /usr/bin/dspmqweb
sudo ln -s /opt/mqm/bin/endmqweb /usr/bin/endmqweb
sudo ln -s /opt/mqm/bin/setmqweb /usr/bin/setmqweb
sudo ln -s /opt/mqm/bin/strmqweb /usr/bin/strmqweb
O arquivo de configuração é no fundo de uma árvore de diretórios.
Eu criei um link simbólico para o arquivo usando
ln -s /var/mqm/web/installations/Installation1/servers/mqweb/mqwebuser.xml web.xml
para que eu possa fazer gedit ~/web.xml
e se você esquecer onde o arquivo realmente está, use ls -l web.xml
Eu usei o comando strmqweb para iniciar o servidor mqweb.
Eu usei dspmqweb e tenho
MQWB1124I: O servidor ‘mqweb’ está em execução.
MQWB1123E: O status dos aplicativos do servidor mqweb não pode ser determinado. Uma solicitação foi feita para ler o status dos aplicativos de servidor mqweb implantados, no entanto, os dados parecem corrompidos. Isso pode indicar que já existe um servidor mqweb iniciado neste sistema, provavelmente relacionado a outra instância do IBM MQ.
A mensagem MQWB1123E só aconteceu ocasionalmente – acho que é um problema de timing e pode ser ignorado.
Parei a instância mqweb usando endmqweb
Arquivos de log
Há um arquivo /var/mqm/web/installations/Installation1/servers/mqweb/logs/console.log que possui instrução de tipo de auditoria.
Há um arquivo /var/mqm/web/installations/Installation1/servers/mqweb/logs/messages.log que tem mais mensagens (incluindo carimbos de data/hora). Este arquivo é mais útil.
Defini um link simbólico para este arquivo, para facilitar a depuração.
<em>ln -s/var/mqm/web/installations/Installation1/servers/mqweb/logs/messages.log messages.log
</em>
Quando o comando strmqweb é emitido,
- ele exclui o console.log anterior
- ele renomeia o messages.log para um arquivo com um carimbo de data/hora no nome do arquivo
- Ele exclui quaisquer outros arquivos de logs de mensagens.
Depois de iniciar e parar o servidor web várias vezes os únicos arquivos que eu tinha eram
- messages_20.01.05_15.18.50.0.log
- messages.log
- console.log
Você pode colocar o comando strmqweb em um script de shell que salva qualquer mensagem e arquivos de console.
O comando dspmqweb dá saída como
MQWB1124I: Server 'mqweb' is running.
URLS:
https://localhost:9443/ibmmq/rest/v1/
https://localhost:9443/ibmmq/console/
Isso informa qual URL você precisa usar.
Nota: a porta 9443 é a porta padrão para o WebSphere Liberty Profile. Se ele estiver em uso, você terá que configurar uma porta diferente.
Primeiro logon
Eu entrei no navegador Firefox usando o endereço https://localhost:9443/ibmmq/console/ . Certifique-se de que o https em https:… . Se você usar http: sem o https, o logon falhará com a mensagem “A conexão foi redefinida”.
Usando https:… me deu tela de erro grande e
Warning: Potential Security Risk Ahead
localhost:9443 uses an invalid security certificate.
The certificate is not trusted because it is self-signed.
Error code: MOZILLA_PKIX_ERROR_SELF_SIGNED_CERT
Enquanto você está explorando o mqconsole, você pode aceitar isso. Consertá-lo corretamente é um grande trabalho. Veja meus outros posts no blog.
Eu entrei usando userid mqadmin e password mqadmin e ele mostrou os gerenciadores de filas.
Selecione a linha de um gerenciador de filas ativo. O cabeçalho da tabela é alterado para dar opções. Selecione as propriedades para exibir as propriedades do gerenciador de filas.
Os atributos do gerenciador de filas não são atualizados em tempo real
Você precisa voltar para a tabela do gerenciador de filas e exibir novamente os dados. Isso não é um grande problema, pois os atributos normalmente não mudam com frequência. Notei isso quando alterei um parâmetro contábil e a página de atributos não mostrou a alteração.
Adicionando widgets ao painel.
Há duas maneiras de adicionar widgets para objetos MQ.
- Na lista de gerenciadores de filas, selecione um gerenciador de filas e, no título como, clique no botão “…” (mais ações) e selecione “Adicionar nova guia do painel”. Isso cria um painel com todos os objetos MQ definidos, filas MQ, conexões de cliente, conexões MCA, ouvintes etc. Você pode selecionar e excluir widgets que você não precisa.
- Clique no botão “Adicionar widget”.
Pode ser mais rápido e fácil usar a primeira opção para adicionar todos os widgets e excluir os widgets que você não precisa.
Criar mais guias
Na parte superior da janela do navegador, ao lado da “aba”, clique no “+”. Isso define um novo painel, use o botão Adicionar widget para selecionar o widget que você deseja definir.
Cada userid tem seu próprio painel (aba, layout e widget)
Consulte o próximo tópico se quiser que as pessoas tenham o mesmo painel.
Exportar o painel para implantação ou backup corporativo
Na parte superior da tela há um ícone com três pontos verticais para as configurações do painel. Você pode exportar o painel e os widgets para um arquivo JSON.
- Você pode alterar os nomes do gerenciador de filas e importá-los em outro gerenciador de filas. Isso é útil para usuários corporativos que precisam oferecer suporte a muitos gerenciadores de filas em um ambiente semelhante. Sendo um arquivo JSON, você pode processar o JSON para alterar os nomes do gerenciador de filas. Eu não consegui encontrar uma maneira de importá-lo, exceto de uma página da web. Isso torna desafiador implantar automaticamente.
- Você pode fazer com que outro usuário o importe, para que ele obtenha o mesmo painel. Se ele mudar, eles têm que importá-lo manualmente.
- Você pode querer exportar seu painel toda semana e fazer backup dele.
Usando os widgets
Cliquei no botão “Fila em…” Widget.
Cliquei na coluna “Profundidade da fila” para filas, e ela rapidamente classificou a profundidade da fila.
Eu pude ver que eu tinha um total de 33 filas não do sistema. Ao clicar na roda de configurações, eu poderia selecionar “mostrar objetos do sistema”.
Se você selecionar a roda de configurações, poderá selecionar um gerenciador de filas diferente. Ao alterar isso, você pode ter uma guia mostrando filas em diferentes gerenciadores de filas na máquina e outra guia mostrando canais em diferentes gerenciadores de filas na máquina. Você também pode ter uma guia por gerenciador de filas e ter filas e canais para um gerenciador de filas nessa guia.
Eu poderia atualizar um widget usando o ícone de atualização.
Há uma caixa de pesquisa na parte superior de cada widget. Ele procura o valor em qualquer coluna. Então, digitar 003 me deu fila CP00003 e DEEPQ com profundidade 1000003.
Na parte inferior do widget dizia Total: 90 Filtrado:2
Se você selecionar uma linha, a caixa de pesquisa será alterada e fornecerá uma lista de ações.
- Excluir fila
- Propriedades
- Colocar mensagem
- Procurar mensagem
- Mais ações → gerenciar registros de autoridade
- 1 item selecionado
- Desmarque
Você pode selecionar todos os objetos em um widget digitando “a” , ou desmarcar usando “shift a”. Nota: ele seleciona todos os itens – não apenas os itens filtrados. Por exemplo, digitei “a” e a linha de cabeçalho disse “33 objetos selecionados”. Na parte inferior do widget é dito total 33 filtrado 8. Portanto, tenha cuidado se você estava pensando em fazer alterações em massa em todos os objetos.
Não consegui selecionar mais de um objeto usando as teclas do cursor.
Foi fácil excluir widgets selecionando o ícone X.
Você pode mover os widgets pegando a linha do título e arrastando-a.
Se você passar o mouse sobre a linha de título de um widget, um ícone de lápis aparecerá que permite renomear o widget.
Você pode controlar quantos widgets são exibidos por linha clicando na seta para baixo na guia (na parte superior da página) e selecionando quantas colunas usar. Isso não é muito inteligente.
- Selecionei o layout de 5 colunas.
- Ele não refluiu os widgets automaticamente. Cada linha tinha 2 widgets e muito espaço à direita. Eu poderia arrastar um widget para a linha superior. Se eu fosse para o layout de 2 colunas e voltasse para o layout de 5 colunas – eu voltava para dois widgets por linha
- Se você selecionar um item, a caixa de pesquisa se tornará uma lista de ícones. Com um widget estreito, você só obtém quantos ícones cabem no espaço, por exemplo, você não obtém o “…” (mais ação) ícone.
- A formatação dentro de uma tabela não é muito inteligente. Eu tinha um nome de fila truncado SYSTEM.ADMIN.CH e muito espaço para a profundidade da fila. Acho que os dados são exibidos em uma tabela e as colunas têm a mesma largura, e não podem ser alteradas.
Pode ser melhor ter não mais do que 2 ou 3 widgets por linha.
Usando a segurança do sistema operacional.
O arquivo de configuração básico do mqweb usava userids codificados mqadmin com senha mqadmin. Isso não é muito seguro.
Você pode usar os userids e senhas do sistema operacional usando um arquivo de configuração diferente
Eu usei
- cp /opt/mqm/web/mq/samp/configuration/local_os_registry.xml /var/mqm/web/installations/Installation1/servers/mqweb/mqwebuser.xml
- chmod o+w /var/mqm/web/installations/Installation1/servers/mqweb/mqwebuser.xml
- para me dar acesso de atualização ao arquivo.
Mudei meu arquivo para ter
<enterpriseApplication id="com.ibm.mq.console">
<application-bnd>
<security-role name="MQWebAdmin">
<user name="colinpaice" realm="defaultRealm"/>
</security-role>
<security-role name="MQWebAdminRO">
<group name="test"/>
</security-role>
</application-bnd>
</enterpriseApplication>
Anotações.
- O realm=”defaultRealm” tem a ver com a segurança do Jave Enterprise Edition. Basta especificá-lo.
- Cada seção de nome de função de segurança deve ser exclusiva. Eu especifiquei
... duas vezes. Só foi usado o último, eu esperava que fosse cumulativo. - Você pode especificar vários
ou linhas.
Consulte aqui e aqui para obter ponteiros para a documentação da IBM.
Gerenciando mqwebuser.xml
Você pode incluir arquivos no mqwebuser.xml arquivos usando o xml
<include optional="true" location="<var>pathname</var>/<var>filename</var>"/>
or
<include optional="true" location="<var>url</var>"/>
Você pode colocar grupos de definições em um arquivo e incluí-las.
Por exemplo, no arquivo payroll.xml tem
<group name="mqsysprog"/>
<group name="payroll"/>
Para cada um dos arquivos de configuração para a folha de pagamento, os gerenciadores de filas têm:
<security-role name="MQWebAdmin">
<code><include optional="true" location="payroll.xml"/></code> </security-role> <security-role name="MQWebAdminRO"> <group name="test"/> </security-role>
Como verifico qual função tenho?
No canto superior direito da janela do navegador há uma vigia com um círculo. Clique nisso e, em seguida, clique em “sobre”. Me deu
Principal:colinpaice - Administrator (Password Authentication)
Um userid diferente deu
Principal:testuser - Read-Only Administrator (Password Authentication)
Posso ter o tempo limite de logon?
Sim, você define um valor de tempo limite usando o valor ltpaExpiration . Veja aqui.
Use _as propriedades dspmqweb -a | grep ltpaEx_ e observe o valor ltpaExpiration . |
Use as propriedades setmqweb -k ltpaExpiration -v time para definir o tempo em minutos.
Nota:
- Depois que você estiver conectado por esse período de tempo, sua sessão é cancelada e você precisa fazer logon novamente, isso acontece se a sessão estiver ocupada ou ociosa.
- O comando setmqweb atualiza o arquivo mqwebuser.xml no disco. Se você estava editando o arquivo, será necessário recarregá-lo do disco e reaplicar as alterações.
- O comando setmqweb acima adicionou
ao arquivo mqwebuser.xml. Você pode apenas atualizar o arquivo sozinho e evitar esse problema de atualização simultânea.
Há um valor de tempo limite para todos os usuários, portanto, se você tiver uma tela exibindo gráficos do mqweb, isso também expirará.
Se você estiver usando certificados para fornecer autenticação
- Sua sessão será descartada e reconectada automaticamente.
- Você não pode fazer logoff - você tem que soltar a guia do navegador
- No canto superior direito da sua página, o ícone será um círculo preto com um “eu” nele. Se você não estiver usando certificados, esta será uma vigia com um círculo nela.