AIX MQ Monitor Template
IBM MQ is the most popular system for cross- platform messaging, providing assured delivery of messages across 35 plus IBM and non-IBM platforms, including IBM mainframe and midrange, Windows, AIX and Linux.
Central Configuration Manager contains an AIX Template for managing MQ installations running on AIX. This contains the following monitors:
AIX Script Monitor
The script monitor is the engine-room of the MQ monitor. Use the script provided to interrogate an MQ environment.
The script is installed to, and must reside in /var/lib/halcyon
Configure the hmq.config file to point to the MQ installation namely:
• The location of the runmqsc command.
• The location of the mqs.ini file.

Contains the following rules:
- MQ *SAMPLE* - Channel indicator running? - Script(/bin/ksh /var/lib/halcyon/hmq.sh -qmgr jupiter.queue.manager -monitor CHINIT .+)
- MQ *SAMPLE* - Channel is RUNNING? - Script(/bin/ksh /var/lib/halcyon/hmq.sh -qmgqr jupiter.queue.manager -monitor CHANNEL -name HALAIX61.HALAIX71 .+)
- MQ *SAMPLE* - Command Server running? - Script(/bin/ksh /var/lib/halcyon/hmq.sh -qmgr jupiter.queue.manager -monitor CMDSERV .+)
- MQ *SAMPLE* - Connection count - Script(/bin/ksh /var/lib/halcyon/hq.sh -qmgr jupiter.queue.manager -monitor CONNS -ge 20 .+)
- MQ *SAMPLE* - Dead Letter queue CURDEPTH > 0 - Script/bin.ksh /var/lib/halcyon/hmq.sh -qmgr jupiter.queue.manager -monitor CURDEPTH -name DEADLETTER.QUEUE -gt 0 .+)
- MQ *SAMPLE* - Listener status - Script(/bin/ksh /var/lib/halcyon/hmq.sh -qmgr jupiter.queue.manager -monitor LISTENER -name HALAIX61.LISTENER.TCP .+)
- MQ *SAMPLE* - Message age test - Script(/bin/ksh /var/lib/halcyon/hmq.sh -qmgr jupiter.queue.manager -monitor MSGAGE -name TEST.SEND.QUEUE -ge 120 .+)
- MQ *SAMPLE* - Monitor the number of handles that are currently open for input for the queue - Script(/bin/ksh /var/lib/halcyon/hmq.sh -qmgr jupiter.queue.manager -monitor IPPROCS -name TEST.SEND.QUEUE -ge 25 .+)
- MQ *SAMPLE* - Monitor the number of handles that are currently open for output for the queue - Script(/bin/ksh /var/lib/halcyon/hmq.sh -qmgr jupiter.queue.manager -monitor OPPROCS -name TEST.SEND.QUEUE -ge 25 .+)
- MQ *SAMPLE* - QMGR Performance Events not enabled? - Script(/bin/ksh /var/lib/halcyon/hmq.sh -qmgr jupiter.queue.manager -monitor QMGR -name PERFMEV -value ENABLED .+)
- MQ *SAMPLE* - Queue depth percentage test - Script(/bin/ksh /var/lib/halcyon/hmq.sh -qmgr jupiter.queue.manager -monitor QDEPTHCT -name TEST.SEND.QUEUE -ge 75 .+)
- MQ *SAMPLE* - Queue depth test - Script(/bin/ksh /var/lib/halcyon/hmq.sh -qmgr jupiter.queue.manager -monitor CURDEPTH -name TEST.SEND.QUEUE -ge 3 .+)
- MQ *SAMPLE* - Queue LASTGET test (All day) - Script(/bin/ksh /var/lib/halcyon/hmq.sh -qmgr jupiter.queue.manager -monitor LASTGET -name TEST.SEND.QUEUE -ge120 .+)
- MQ *SAMPLE* - Queue LASTGET test (Daytime) - Script(/bin/ksh /var/lib/halcyon/hmq.sh -qmgr jupiter.queue.manager -monitor LASTGET -name TEST.SEND.QUEUE -ge 120 .+)
- MQ *SAMPLE* - Queue LASTGET test (Overnight) - Script(/bin/ksh /var/lib/halcyon/hmq.sh -qmgr jupiter.queue.manager -monitor LASTGET -name TEST.SEND.QUEUE - ge 120 .+)
- MQ *SAMPLE* - QUEUE LASTPUT test (All day) - Script(/bin/ksh /var/lib/halcyon/hmq.sh -qmgr jupiter.queue.manager - monitor LASTPUT -name TEST.SEND.QUEUE -ge 120 .+)
- MQ *SAMPLE* - QUEUE LASTPUT test (Daytime) - Script(/bin/ksh /var/lib/halcyon/hmq.sh -qmgr jupiter.queue.manager - monitor LASTPUT -name TEST.SEND.QUEUE -ge 120 .+)
- MQ *SAMPLE* - QUEUE LASTPUT test (Overnight) - Script(/bin/ksh /var/lib/halcyon/hmq.sh -qmgr jupiter.queue.manager -monitor LASTPUT -name TEST.SEND.QUEUE -ge 120 .+)
- MQ *SAMPLE* - QUEUE uncommitted message count - Script(/bin/ksh /var/lib/halcyon/hmq.sh -qmgr jupiter.queue.manager -monitor UNCOM -name TEST.SEND.QUEUE -ne 0 .+)
- MQ *SAMPLE* - Queue with wrong name (Shows error message) - Script(/bin/ksh /var/lib/halcyon/hmq.sh -qmgr jupiter.queue.manager -monitor CURDEPTH -name HALAIX61.SEND.QPO -gt 10 .+)
- MQ *SAMPLE* - SYSTEM.ADMIN.CHANNEL.EVENT Queue depth test - Script(/bin/ksh /var/lib/halcyon/hmq.sh -qmgr jupiter.queue.manager -monitor CURDEPTH -name SYSTEM.ADMIN.CHANNEL.EVENT -ne 0 .+)
- MQ *SAMPLE* - SYSTEM.ADMIN.COMMAND.EVENT Queue depth test - Script(/bin/ksh /var/lib/halcyon/hmq.sh -qmgr jupiter.queue.manager -monitor CURDEPTH -name SYSTEM.ADMIN.COMMAND.EVENT -ne 0 .+)
- MQ *SAMPLE* - SYSTEM.ADMIN.CONFIG.EVENT Queue depth test - Script(/bin/ksh /var/lib/halcyon/hmq.sh -qmgr jupiter.queue.manager -monitor CURDEPTH -name SYSTEM.ADMIN.CONFIG.EVENT -ne 0 .+)
- MQ *SAMPLE* - SYSTEM.ADMIN.LOGGER.EVENT Queue depth test - Script(/bin/ksh /var/lib/halcyon/hmq.sh -qmgr jupiter.queue.manager -monitor CURDEPTH -name SYSTEM.ADMIN.LOGGER.EVENT -ne 0 .+)
- MQ *SAMPLE - SYSTEM.ADMIN.PERFM.EVENT Queue depth test - Script(/bin/ksh /var/lib/halcyon/hmq.sh -qmgr jupiter.queue.manager -monitor CURDEPTH -name SYSTEM.ADMIN.PERFM.EVENT -ne 0 .+)
- MQ *SAMPLE* - SYSTEM.ADMIN.PUBSUB.EVENT Queue depth test - Script(/bin/ksh /var/lib/halcyon/hmq.sh -qmgr jupiter.queue.manager -monitor CURDEPTH -name SYSTEM.ADMIN.PUBSUB.EVENT -ne 0 .+)
- MQ *SAMPLE* - SYSTEM.ADMIN.QMGR.EVENT Queue depth test - Script(/bin/ksh /var/lib/halcyon/hmq.sh -qmgr jupiter.queue.manager -monitor CURDEPTH -name SYSTEM.ADMIN.QMGR.EVENT -ne 0 .+)

Contains the following rules:
- *SAMPLE* MQ - Queue Manager .ini file permissions and ownership check. - File(/var/mqm/qmgrs/jupiter!queue!manager) Include(qm.ini) Trigger(Does Not Exist)
- *SAMPLE* Queue Manager Error log ownership and permissions - File(/var/mqm/qmgrs/jupiter!queue!Manager/errors) Include(AMQERR*.LOG) Trigger(Does Not Exist)
- MQ - /var/mqm directory permissions an ownership check. - Folder(/var) Include(mqm) Trigger(Does Not Exist)
- MQ - /var/mqm/config directory permissions and ownership check. - Folder(/var/mqm) Include(config) Trigger(Does Not Exist)
- MQ - /var/mqm/conv directory permissions and ownership check. - Folder(/var/mqm) Include(conv) Trigger(Does Not Exist)
- MQ - /var/mqm/errors directory permissions and ownership check. - Folder(/var/mqm) Include(errors) Trigger(Does Not Exist)
- MQ - /var/mqm/errors/*.FDC file(s) found - File(/var/mqm/errors) Include(*.FDC) Trigger(Exists)
- MQ - /var/mqm/exits directory permissions and ownership check. - Folder(/var/mqm) Include(exits) Trigger(Does Not Exist)
- MQ - /var/mqm/exits64 directory permissions and ownership check. - Folder(/var/mqm) Include(exits64) Trigger(Does Not Exist)
- MQ - /var/mqm/log directory permissions and ownership check. - Folder(/var/mqm) Include(log) Trigger(Does Not Exist)
- MQ - /var/mqm/mqft directory permissions and ownership check. - Folder(/var/mqm) Include(Mqft) Trigger(Does Not Exist)
- MQ - /var/mqm/mqs.ini file permissions, ownership and changed check. - (Mulitple Criteria Defined)
- MQ - /var/mqm/qmgrs directory permissions and ownership check. - Folder(/var/mqm) Include(qmgrs) Trigger(Does Not Exist)
- MQ - /var/mqm/shared directory permissions and ownership check. - Folder(/var/mqm) Include(shared) Trigger(Does Not Exist)
- MQ - /var/mqm/sockets directory permissions and ownership check. - Folder(/var/mqm) Include(sockets) Trigger(Does Not Exist)
- MQ - /var/mqm/trace directory permissions and ownership check. - Folder(/var/mqm) Include(trace) Trigger(Does Not Exist)

Contains the following rules:
- MQ Error monitor - AMQ5027 (The Listener has ended) - LogFile(/var/mqm/qmgrs/jupiter!queue!manager/errors/AMQERR01.LOG) Expression(^AMQ5027*)
- MQ Error monitor - AMQ5041 (The queue manager task has ended) - LogFile(/var/mqm/qmgrs/jupiter!queue!manager/errors/AMQER01.LOG) Expression(^AMQ5041*)
- MQ Error monitor - AMQ5976 (WebSphere MQ Distributed Pub/Sub has ended) - LogFile(/var/mqm/qmgrs/jupiter!queue!manager/errors/AMQERR01.LOG) Expression(^AMQ5976*)
- MQ Error monitor - AMQ6090 (WebSphere MQ was unable to display an error message) - LogFile(/var/mqm/qmgrs/jupiter!queue!manager/errors/AMQERR01.LOG) Expression(^AMQ6090*)
- MQ Error monitor - AMQ6119 (An internal WebSphere MQ error has occurred) - LogFile(/var/mqm/qmgrs/jupiter!queue!manager/errors/AMQERR01.LOG) Expression(^AMQ6119*)
- MQ Error monitor - AMQ6125 (An internal WebSphere MQ error has occurred) - LogFile(/var/mqm/qmgrs/jupiter!queue!manager/errors/AMQERR01.LOG) Expression(^AMQ6125*)
- MQ Error monitor - AMQ6183 (An internal WebSphere MQ error has occurred) - LogFile(/var/mqm/qmgrs/jupiter!queue!manager/errors/AMQERR01.LOG) Expression(^AMQ6183*)
- MQ Error monitor - AMQ6184 (An internal WebSphere MQ error has occurred on queue manager) - LogFile(/var/mqm/qmgrs/jupiter!queue!manager/errors/AMQERR01.LOG) Expression(^AMQ6184*)
- MQ Error monitor - AMQ7469 (Transactions rolled back to release log space) - LogFile(/var/mqm/qmgrs/jupiter!queue!manager/errors/AMQERR01.LOG) Expression(^AMQ7469*)
- MQ Error monitor - AMQ8004 (WebSphere MQ queue manager ended) - LogFile(/var/mqm/qmgrs/jupiter!queue!manager/errors/AMQERR01.LOG) Expression(^AMQ8004*)
- MQ Error monitor - AMQ8101 (WebSphere MQ error (XXXXXXX) has occurred) - LogFile(/var/mqm/qmgrs/jupiter!queue!manager/errors/AMQERR01.LOG) Expression(^AMQ8101*)
- MQ Error monitor - AMQ8420 (Channel status not found) - LogFile(/var/mqm/qmgrs/jupiter!queue!manager/errors/AMQERR01.LOG) Expression(^AMQ8420*)
- MQ Error monitor - AMQ9001 (Channel ended normally) - LogFile(/var/mqm/qmgrs/jupiter!queue!manager/errors/AMQERR01.LOG) Expression(^AMQ9001*)
- MQ Error monitor - AMQ9202 (Remote host not available, retry) - LogFile(/var/mqm/qmgrs/jupiter!queue!manager/errors/AMQERR01.LOG) Expression(^AMQ9202*)
- MQ Error monitor - AMQ9208 (Error on receive from host) - LogFile(/var/mqm/qmgrs/jupiter!queue!manager/errors/AMQERR01.LOG) Expression(^AMQ9208*)
- MQ Error monitor - AMQ9209 (Connection to host XXXXXXXX closed) - LogFile(/var/mqm/qmgrs/jupiter!queue!manager/errors/AMQERR01.LOG) Expression(^AMQ9209*)
- MQ Error monitor - AMQ9213 (A communications error for XXXXXXXX occurred) - LogFile(/var/mqm/qmgrs/jupiter!queue!manager/errors/AMQERR01.LOG) Expression(^AMQ9213*)
- MQ Error monitor - AMQ9218 (The TCP/IP listener program could not bind to port number) - LogFile(/var/mqm/qmgrs/jupiter!queue!manager/errors/AMQERR01.LOG) Expression(^AMQ9218*)
- MQ Error monitor - AMQ9228 (The XXXXXXXX responder program could not be started) - LogFile(/var/mqm/qmgrs/jupiter!queue!manager/errors/AMQERR01.LOG) Expression(^AMQ9228*)
- MQ Error monitor - AMQ9503 (Channel negotiation failed) - LogFile(/var/mqm/qmgrs/jupiter!queue!manager/errors/AMQERR01.LOG) Expression(^AMQ9503*)
- MQ Error monitor - AMQ9513 (Maximum number of channels reached) - LogFile(/var/mqm/qmgrs/jupiter!queue!manager/errors/AMQERR01.LOG) Expression(^AMQ9513*)
- MQ Error monitor - AMQ9526 (Message sequence number error for channel XXXXXXXX) - LogFile(/var/mqm/qmgrs/jupiter!queue!manager/errors/AMQERR01.LOG) Expression(^AMQ9526*)
- MQ Error monitor - AMQ9542 (Queue manager is ending) - LogFile(/var/mqm/qmgrs/jupiter!queue!manager/errors/AMQERR01.LOG) Expression(^AMQ9542*)
- MQ Error monitor - AMQ9999 (Channel to host ended abnormally) - LogFile(/var/mqm/qmgrs/jupiter!queue!manager/errors/AMQERR01.LOG) Expression(^AMQ9999*)
- MQ FFST record (.FDC file) *SAMPLE* - LogFile(/var/adm/syslog) Expression(.+FFST record created in .+)

Contains the following rules:
- MQ Monitor - Broker worker process (amqfcxba) not active - Type(Process By Name) Process(amqfcxba) Trigger(Does Not Exist)
- MQ Monitor - Channel initiator(runmqchi) not active - Type(Process By Name) Process(runmqchi) Trigger(Does Not Exist)
- MQ Monitor - Channel initiator(amqrmppa) not active - Type(Process By Name) Process(amqrmppa) Trigger(Does Not Exist)
- MQ Monitor - Channel process manager(amqzmuc0) not active - Type(Process By Name) Process(amqzmuc0) Trigger(Does Not Exist)
- MQ Monitor - Dead letter queue handler(runmqdlq) not active - Type(Process By Name) Process(runmqdlq) Trigger(Does Not Exist)
- MQ Monitor - LQM Agents (amqzlaa0) not active - Type(Process By Name) Process(amqzlaa0) Trigger(Does Not Exist)
- MQ Monitor - LU62 receiver channel and client connection (amqcrs6b) not active - Type(Process By Name) Process(amqcrs6b) Trigger(Does Not Exist)
- MQ Monitor - MQ listener (runmqlsr) not active - Type(Process By Name) Process(runmqlsr) Trigger(Does Not Exist)
- MQ Monitor - Object Authority Manager (amqzfuma) not active - Type(Process By Name) Process(amqzfuma) Trigger(Does Not Exist)
- MQ Monitor -Process controller(amqzmgr0) not active - Type(Process By Name) Process(amqzmgr0) Trigger(Does Not Exist)
- MQ Monitor - Processing controller (amqzxma0) not active - Type(Process By Name) Process(amqzxma0) Trigger(Does Not Exist)
- MQ Monitor - Publish subscribe process (amqfqpub) not active - Type(Process By Name) Process(amqfqpub) Trigger(Does Not Exist)
- MQ Monitor - PubSub restartable utility manager (amqzmuf0) not active - Type(Process By Name) Process(amqzmuf0) Trigger(Does Not Exist)
- MQ Monitor - Queue manager agent (amqzsla0) not active - Type(Process By Name) Process(amqzsla0) Trigger(Does Not Exist)
- MQ Monitor - Repository process (amqrrmfa) not active - Type(Process By Name) Process(amqrrmfa) Trigger(Does Not Exist)
- MQ Monitor - Restartable process manager (amqzmur0) not active - Type(Process By Name) Process(amqzmur0) Trigger(Does Not Exist)
- MQ Monitor -TCP/IP-invoked channel responder (amqcrsta) not active - Type(Process By Name) Process(amqcrsta) Trigger(Does Not Exist)
- MQ Monitor - The command server (amqpcesa) not active - Type(Process By Name) Process(amqpcesa) Trigger(Does Not Exist)
- MQ Monitor - Trigger monitor (runmqtrm) not active - Type(Process By Name) Process(runmqtrm) Trigger(Does Not Exist)