[UNIX, Linux, Windows, IBM i]

Metrics published on the system topics

Metrics are categorized into classes, and sub-categorized into types. There are various metrics published under each metric class and type.

Index

CPU (platform central processing units)

Introduction

Where statistics refer to the current interval, this is the interval defined in the published message by the MQIAMO64_MONITOR_INTERVAL parameter.

Statistics are usually published every 10 seconds, the published interval, as long as there is at least one active subscriber, but the precise interval should always be taken from the message.
Important: Unless otherwise specified, metrics are otherwise absolute values for the point in time when captured.
SystemSummary (CPU performance - platform wide)
User CPU time percentage X%

The average percentage of time (taken over the last 10 second interval) used by the CPU when it was in non-privileged code.

System CPU time percentage X%

The average percentage of time (taken over the last 10 second interval) used by the CPU when it was in privileged code.

CPU load - one minute average X

The one minute load average. "Load average" is a industry-wide term, but the exact value reported might differ across platforms.

CPU load - five minute average X

The five minute load average. "Load average" is a industry-wide term, but the exact value reported might differ across platforms.

CPU load - fifteen minute average X

The fifteen minute load average. "Load average" is a industry-wide term, but the exact value reported might differ across platforms.

CPU system summary

RAM free percentage X%

RAM total bytes XMB

RAM free percentage X%
RAM total bytes XMB
QMgrSummary (CPU performance - running queue manager)
User CPU time - percentage estimate for queue manager X%
System CPU time - percentage estimate for queue manager X%
RAM total bytes - estimate for queue manager XMB

DISK (platform persistent data stores)

The SystemSummary and QMgrSummary are absolute values at the point of time of capture. See the Introduction for details of the published interval.

SystemSummary (disk usage - platform wide)
MQ errors file system - bytes in use XMB
MQ errors file system - free space X%
MQ FDC file count X
MQ trace file system - bytes in use XMB
MQ trace file system - free space X%
QMgrSummary (disk usage - running queue managers)
Queue Manager file system - bytes in use XMB
Queue Manager file system - free space X%
Log (disk usage - queue manager recovery log)
Log - bytes in use X
Log - bytes max X

The maximum number of bytes that can be written to the log if all the primary and secondary extents were full. This is less than the size of the log filesystem

Log file system - bytes in use X
Log file system - bytes max X
Log - physical bytes written X

See the Introduction for the definition of current interval.

Log - logical bytes written X
Log - write latency X uSec

A rolling average that represents the time that a single write to disk takes.

Where LogWriteIntegrity=TripleWrite, the physical number of bytes written to disk is greater than the logical bytes written.

Log - write size X
Log - bytes occupied by extents waiting to be archived X
Log - bytes required for media recovery X
Log - bytes occupied by reusable extents X
Log - current primary space in use X%
Log - workload primary space utilization X%
[MQ 9.2.0.35 Apr 2025]Log - slowest write since restart

The highest latency individual log write since the queue manager was started (in microseconds).

[MQ 9.2.0.35 Apr 2025]Log - timestamp of slowest write

The UTC timestamp when the highest latency individual log write occurred (expressed as microseconds since the epoch - 1970-01-01T00:00:00Z).

STATMQI (API usage statistics)

All API usage statistics reflect occurrences and/or percentages for the published interval. See the Introduction for the definition of published interval.

The statistics outputs a count of the number of failed MQI calls, but not every failed MQI call appears in these statistics - indeed the failures of not every MQI call have their statistics recorded. This is because many reasons that MQI calls fail are diagnosed before the MQI call reached the internals of the queue manager where the statistics are recorded.

An example of this is MQRC_HCONN_ERROR returned to a client application. If a client application passes a bad hconn, the MQ client diagnoses that error and returns MQRC_HCONN_ERROR without passing the MQI call onto the queue manager. Hence, the failed MQI call never appears in the statistics recorded by the queue manager.

Statistics of failed MQI calls are useful because they enable customers to troubleshoot poorly-written applications that generate unnecessary failed MQI calls, thereby impacting performance. Some examples of failing reasons for various MQI calls that are recorded in the statistics:
  • MQCONN/MQCONNX/MQOPEN returns 2035 MQRC_NOT_AUTHORIZED when diagnosed by the queue manager, not the client. For example running amqsput as nobody.
  • MQPUT/MQPUT1 returns 2053 MQRC_Q_FULL because MAXDEPTH has been exceeded.
  • MQGET returns 2033 MQRC_NO_MSG_AVAILABLE when browsing or destructively getting from an empty queue
  • MQSUBRQ returns 2437 MQRC_NO_RETAINED_MSG because there is no retained message
CONNDISC (MQCONN and MQDISC)
MQCONN/MQCONNX count X
Failed MQCONN/MQCONNX count X
Concurrent connections - high water mark X
MQDISC count X
OPENCLOSE (MQOPEN and MQCLOSE)
MQOPEN count X Y/sec
Failed MQOPEN count X
MQCLOSE count X Y/sec
Failed MQCLOSE count X
INQSET (MQINQ and MQSET)
MQINQ count X
Failed MQINQ count X
MQSET count X
Failed MQSET count X
PUT (MQPUT)
Interval total MQPUT/MQPUT1 count X
Interval total MQPUT/MQPUT1 byte count X Y/sec
Non-persistent message MQPUT count X
Persistent message MQPUT count X
Failed MQPUT count X
Non-persistent message MQPUT1 count X
Persistent message MQPUT1 count X
Failed MQPUT1 count X
Put non-persistent messages - byte count X Y/sec
Put persistent messages - byte count X
MQSTAT count X
GET (MQGET)
Interval total destructive get- count X
Interval total destructive get - byte count X Y/sec
Non-persistent message destructive get - count X
Persistent message destructive get - count X
Failed MQGET - count X
Got non-persistent messages - byte count X Y/sec
Got persistent messages - byte count X
Non-persistent message browse - count X
Persistent message browse - count X
Failed browse count X
Non-persistent message browse - byte count X Y/sec
Persistent message browse - byte count X
Expired message count X
Purged queue count X
MQCB count X
Failed MQCB count X
MQCTL count X
SYNCPOINT (commit and rollback)
Commit count X
Rollback count X
SUBSCRIBE (subscribe)
Create durable subscription count X
Alter durable subscription count X
Resume durable subscription count X
Create non-durable subscription count X
Failed create/alter/resume subscription count X
Delete durable subscription count X
Delete non-durable subscription count X
Subscription delete failure count X
MQSUBRQ count X
Failed MQSUBRQ count X
Durable subscriber - high water mark X
Durable subscriber - low water mark X
Non-durable subscriber - high water mark X
Non-durable subscriber - low water mark X
PUBLISH (publish)
Topic MQPUT/MQPUT1 interval total X
Interval total topic bytes put X Y/sec
Published to subscribers - message count X
Published to subscribers - byte count X
Non-persistent - topic MQPUT/MQPUT1 count X
Persistent - topic MQPUT/MQPUT1 count X
Failed topic MQPUT/MQPUT1 count X

STATQ (API per-queue usage statistics)

[MQ 9.2.3 Jul 2021]GENERAL (General)
messages expired X (moved from GET for IBM® MQ 9.2.3 and later CD versions)
queue purged count X (moved from GET for IBM MQ 9.2.3 and later CD versions)
average queue time X uSec (moved from GET for IBM MQ 9.2.3 and later CD versions)
Queue depth X (moved from GET for IBM MQ 9.2.3 and later CD versions)
[MQ 9.2.0.35 Apr 2025]open input count

Number of queue handles open at the end of the interval for input (MQGET). This value is the same as the IPPROCS value reported by DISPLAY QLOCAL / QSTATUS.

[MQ 9.2.0.35 Apr 2025]open output count

Number of queue handles at the end of the interval that are open for output (MQPUT). This value is the same as the OPPROCS value reported by DISPLAY QLOCAL / QSTATUS.

[MQ 9.2.0.35 Apr 2025]open browse count

Number of queue handles open at the end of the interval that included the MQOO_BROWSE option on their call to MQOPEN. Note: these handles are also included in the open input count.

[MQ 9.2.0.35 Apr 2025]open publish count

Number of queue handles open at the end of the interval that were opened by queue manager processes to put messages to subscriptions that specified this queue as their destination. Note: these handles are also included in the open output count.

OPENCLOSE (MQOPEN and MQCLOSE)
MQOPEN count X
MQCLOSE count X
INQSET (MQINQ and MQSET)
MQINQ count X
MQSET count X
PUT (MQPUT and MQPUT1)
MQPUT/MQPUT1 count X
MQPUT byte count X
MQPUT non-persistent message count X
MQPUT persistent message count X
[MQ 9.2.0 Jul 2020][MQ 9.2.0 Jul 2020]rolled back MQPUT count X
MQPUT1 non-persistent message count X
MQPUT1 persistent message count X
non-persistent byte count X
persistent byte count X
lock contention X%

The percentage of attempts to lock the queue that resulted in waiting for another process to release the lock first. Decreasing lock contention is likely to increase the maximum throughput of your system because taking a lock that is not currently locked is a more efficient than waiting for a lock to be released.

queue avoided puts X%

If a message is put to a queue when there is a waiting getter, the message might not need to be queued as it can be possible for it to be passed to the getter immediately. So this message is said to have avoided the queue, and "queue avoided puts" is the count of such messages. Increasing queue avoidance is likely to increase the maximum throughput of your system because it avoids the cost of putting the message onto the queue and getting it off again.

queue avoided bytes X%

If a message is put to a queue when there is a waiting getter, the message might not need to be queued as it can be possible for it to be passed to the getter immediately. So this message is said to have avoided the queue, and "queue avoided bytes" is the count of such bytes. Increasing queue avoidance is likely to increase the maximum throughput of your system because it avoids the cost of putting the message onto the queue and getting it off again.

GET (MQGET)
MQGET count X
MQGET byte count X
destructive MQGET non-persistent message count X
destructive MQGET persistent message count X
[MQ 9.2.0 Jul 2020][MQ 9.2.0 Jul 2020]rolled back MQGET count X
destructive MQGET non-persistent byte count X
destructive MQGET persistent byte count X
MQGET browse non-persistent message count X
MQGET browse persistent message count X
MQGET browse non-persistent byte count X
MQGET browse persistent byte count X
messages expired X [MQ 9.2.3 Jul 2021] (moved to GENERAL for IBM MQ 9.2.3 and later CD versions)
queue purged count X [MQ 9.2.3 Jul 2021] (moved to GENERAL for IBM MQ 9.2.3 and later CD versions)
average queue time X uSec [MQ 9.2.3 Jul 2021] (moved to GENERAL for IBM MQ 9.2.3 and later CD versions)
Queue depth X [MQ 9.2.3 Jul 2021] (moved to GENERAL for IBM MQ 9.2.3 and later CD versions)
[MQ 9.2.0 Jul 2020][MQ 9.2.0 Jul 2020]destructive MQGET fails X
[MQ 9.2.0 Jul 2020][MQ 9.2.0 Jul 2020]destructive MQGET fails with MQRC_NO_MSG_AVAILABLE X
[MQ 9.2.0 Jul 2020][MQ 9.2.0 Jul 2020]destructive MQGET fails with MQRC_TRUNCATED_MSG_FAILED X
[MQ 9.2.0 Jul 2020][MQ 9.2.0 Jul 2020]MQGET browse fails X
[MQ 9.2.0 Jul 2020][MQ 9.2.0 Jul 2020]MQGET browse fails with MQRC_NO_MSG_AVAILABLE X
[MQ 9.2.0 Jul 2020][MQ 9.2.0 Jul 2020]MQGET browse fails with MQRC_TRUNCATED_MSG_FAILED X
[MQ 9.2.0.35 Apr 2025]EXTENDED
[MQ 9.2.0.35 Apr 2025]msg search count

Number of MQGETs where the queue manager searched for a message (this will be every MQGET that was not satisfied by directly passing an MQPUT to a waiting getter - see "queue avoided puts").

[MQ 9.2.0.35 Apr 2025]msg not found count

Number of MQGETs where the queue manager failed to find a message.

[MQ 9.2.0.35 Apr 2025]msg examine count

Number of (matching and unmatching) messages examined by searches. Reasons for match failures are described in the following statistics:

[MQ 9.2.0.35 Apr 2025]intran get skipped count

Messages examined but skipped because they were locked by an uncommitted MQGET transaction.

[MQ 9.2.0.35 Apr 2025]put skipped count

Messages examined but skipped because they had been put in a transaction that had not been committed.

[MQ 9.2.0.35 Apr 2025]selection mismatch count

Messages that were checked and did not match properties required by selector.

[MQ 9.2.0.35 Apr 2025]correlid mismatch short count

Messages examined because of MQMO_MATCH_CORREL_ID and skipped because quick CorrelId hash did not match requested Id.

[MQ 9.2.0.35 Apr 2025]correlid mismatch long count

Messages examined and matching quick CorrelId hash check, but failing full CorrelId comparison.

[MQ 9.2.0.35 Apr 2025]msgid mismatch count

Messages examined because of MQMO_MATCH_MSG_ID and skipped because MsgId did not match requested Id.

[MQ 9.2.0.35 Apr 2025]load msg dtl count

Messages or message headers that needed to be loaded from the Q file to check for a match.

STATAPP (per-application usage statistics)

[MQ 9.2.0 Jul 2020][MQ 9.2.0 Jul 2020]
INSTANCE (instance statistics)
Instance count X
Movable instance count X
Instance shortfall count X
Instances started X
Initiated outbound instance moves X
Completed outbound instance moves X
Instances ended during reconnect X
Instances ended X