IBM MQ · Avançado
Novo
Administração do IBM MQ no z/OS
22 min de leitura
Nível: Avançado
Administrar o IBM MQ em produção envolve segurança (RACF + CHLAUTH), monitoramento de filas e canais, troubleshooting de mensagens presas e manutenção do Queue Manager. Este artigo cobre as tarefas do dia a dia de um administrador MQ no z/OS: desde conceder permissões corretas até resolver canais em estado IN-DOUBT.
1. Segurança — RACF e MQ
O MQ no z/OS integra com RACF para controlar quem pode acessar filas, canais e o próprio Queue Manager. Os perfis são criados na classe RACF MQADMIN, MQQUEUE e MQPROC:
/* Ativar classes MQ no RACF */
SETROPTS CLASSACT(MQADMIN MQQUEUE MQPROC)
SETROPTS RACLIST(MQADMIN MQQUEUE MQPROC)
/* Conceder acesso a uma fila para um grupo de usuários */
/* Perfil: CSQ1.FILA.PEDIDOS (QMgr.NomeDaFila) */
RDEFINE MQQUEUE CSQ1.FILA.PEDIDOS
UACC(NONE) OWNER(MQADMIN)
PERMIT CSQ1.FILA.PEDIDOS CLASS(MQQUEUE)
ID(GRPPEDIDOS) ACCESS(UPDATE)
/* Ativar segurança no Queue Manager */
ALTER QMGR CONNAUTH(SYSTEM.DEFAULT.AUTHINFO.IDPWOS)
REFRESH SECURITY TYPE(CONNAUTH)
/* Forçar refresh das classes RACF */
SETROPTS RACLIST(MQQUEUE) REFRESH
Níveis de acesso MQ no RACF:
| Nível RACF | Operações MQ permitidas |
READ | MQGET (leitura de mensagens) |
UPDATE | MQPUT e MQGET (leitura e escrita) |
CONTROL | UPDATE + controle de fila (purge, get/put enable/disable) |
ALTER | Acesso total — inclui ALTER e DELETE da fila |
2. Channel Authentication (CHLAUTH)
O CHLAUTH controla quais endereços IP e quais usuários podem conectar via cada canal SVRCONN — uma camada de segurança extra além do RACF:
/* Bloquear todas as conexões por padrão */
SET CHLAUTH(*) TYPE(BLOCKUSER)
USERLIST('*') ACTION(ADD)
/* Permitir apenas conexões do servidor de aplicação */
SET CHLAUTH(SISTEMA.SVRCONN) TYPE(ADDRESSMAP)
ADDRESS('192.168.1.100')
MCAUSER('SVCAPP01')
ACTION(ADD)
/* Ver regras CHLAUTH ativas */
DISPLAY CHLAUTH(*) ALL
/* Verificar se CHLAUTH está ativo no QM */
DISPLAY QMGR CHLAUTH
3. Monitoramento de filas e canais
Comandos essenciais para o dia a dia de monitoramento:
/* Profundidade atual de todas as filas locais */
DISPLAY QLOCAL(*) CURDEPTH
/* Filas com mensagens acima de um limite */
DISPLAY QLOCAL(*) WHERE(CURDEPTH GT 1000)
/* Status de todos os canais */
DISPLAY CHSTATUS(*) STATUS MSGS BYTES
/* Canais com problema */
DISPLAY CHSTATUS(*) WHERE(STATUS NE RUNNING)
/* Handles de fila abertos agora */
DISPLAY QSTATUS(FILA.PEDIDOS) OPPROCS IPPROCS
/* OPPROCS = handles de output (PUT), IPPROCS = input (GET) */
/* Conexões ativas ao Queue Manager */
DISPLAY CONN(*) ALL
4. Troubleshooting comum
Canal em estado IN-DOUBT:
/* Canal IN-DOUBT significa unidade de trabalho não resolvida */
DISPLAY CHSTATUS(QM1.TO.QM2) INDOUBT
/* Resolver forçando commit ou rollback */
RESOLVE CHANNEL(QM1.TO.QM2) ACTION(COMMIT)
/* ou */
RESOLVE CHANNEL(QM1.TO.QM2) ACTION(BACKOUT)
Fila acumulando mensagens (consumidor parou):
/* 1. Verificar profundidade */
DISPLAY QSTATUS(FILA.PEDIDOS) CURDEPTH IPPROCS
/* 2. Verificar se GET está habilitado */
DISPLAY QLOCAL(FILA.PEDIDOS) GET
/* 3. Se GET estiver DISABLED — habilitar */
ALTER QLOCAL(FILA.PEDIDOS) GET(ENABLED)
/* 4. Verificar DLQ — mensagens podem estar lá */
DISPLAY QSTATUS(SISTEMA.DLQ) CURDEPTH
Mensagens presas — excederam BOTHRESH:
/* Ver fila de backout */
DISPLAY QLOCAL(FILA.PEDIDOS) BOQNAME BOTHRESH
DISPLAY QSTATUS(FILA.PEDIDOS.BACKOUT) CURDEPTH
Mensagens na backout queue = mensagens que falharam N vezes
→ investigar o motivo da falha antes de reprocessar
5. Backup e manutenção
/* Exportar definições do QM para script MQSC */
/* No z/OS, usar CSQUTIL para extrair definições */
//MQEXPORT JOB ...
//STEP1 EXEC PGM=CSQUTIL,PARM='CSQ1'
//SYSPRINT DD SYSOUT=*
//CMDIN DD *
COMMAND DDNAME(CMDOUT)
DISPLAY QLOCAL(*) ALL
DISPLAY CHANNEL(*) ALL
/*
//CMDOUT DD DSN=BACKUP.MQ.DEFS,DISP=(NEW,CATLG)
/* Parar e reiniciar o Queue Manager (console z/OS) */
/CSQ1MSTR STOP QMGR MODE(QUIESCE) Para de forma limpa
/S CSQ1MSTR Reinicia
6. CSQUTIL — utilitário batch MQ
O CSQUTIL é o canivete suíço da administração MQ no z/OS. Além de executar MQSC, tem funções específicas:
/* CSQUTIL — copiar mensagens de uma fila para dataset */
//MQCOPY JOB ...
//STEP1 EXEC PGM=CSQUTIL,PARM='CSQ1'
//SYSPRINT DD SYSOUT=*
//MSGS DD DSN=BACKUP.MQ.MSGS,DISP=(NEW,CATLG)
//SYSIN DD *
COPY QNAME(FILA.PEDIDOS) TOFILE(MSGS)
BROWSE
/*
/* BROWSE = apenas lê sem remover; sem BROWSE = destrutivo */
/* Restaurar mensagens de dataset para fila */
//SYSIN DD *
COPY FROMFILE(MSGS) QNAME(FILA.PEDIDOS)
/*
💡 Próximos passos em IBM MQ
Com esta trilha você tem base para trabalhar com MQ em ambientes mainframe reais. Os tópicos avançados incluem: MQ Clusters (balanceamento automático de carga entre QMs), MQ Managed File Transfer (MFT) para transferência de arquivos grandes, IBM MQ Advanced Message Security (AMS) para criptografia ponto a ponto de mensagens, e integração com IBM Event Streams (Kafka) para arquiteturas event-driven modernas.