Monitor performance of your IBM MQ queue manager objects.








Monitor the performance of your IBM MQ queue manager objects and collect performance metrics from queue managers running locally on your OneAgent host or remotely from your ActiveGate instances using the
IBM MQ extension.
LD_LIBRARY_PATH on Linux.
The user running the extension must be able to find these libraries.User running the OneAgent dtuser by default must also have read access to the queue manager directories /var/mqm/qmgrs/<queue_manager> and read/write to log directories /var/mqm/log so that it can bind properly.
Ensure MQ libraries are accessible by dtuser or whichever user your OneAgent service is running under. Default location for these libraries is /opt/mqm/lib64
By default, IBM MQ installs an ldconfig file called /etc/ld.so.conf.d/mqm.conf that adds /usr/lib64 to the LD_LIBRARY_PATH.
Ensure the IBM MQ library's symbolic links to /opt/mqm/lib64 are found on that path.
If there is no reference in /usr/lib64 to /opt/mqm/lib64 libraries, you may have to create your own .conf file and place it in /etc/ld.so.conf.d/.
Using ldconfig allows the MQ libraries to be loaded by default.
To do this, you can do the following:
ibmmq_ext.conf./opt/mqm/lib64.ldconfig.Extensions on the left menu, select IBM MQ.Select which hosts will run this extension.
dtuser by default.Rules are evaluated in sequential order.
You can include or exclude objects from the result of the previous rule.
For example, *, -SYSTEM.*, SYSTEM.CLUSTER* consists of all queues, then removes those that start with SYSTEM and includes those that begin with SYSTEM.CLUSTER.
Pay close attention to the order in which you enter your rules, whether in Wizard or Advanced mode.
Read settings and Write settings.Select which feature sets (metric groups) you want this configuration to collect. Selecting too few won't give you the proper visibility, and you may miss out on essential performance data and key indicators that can be correlated between different objects.

Select which ActiveGate group runs this extension.
Rules are evaluated in sequential order.
You can include or exclude objects from the previous rule result.
For example, *, -SYSTEM.*, SYSTEM.CLUSTER* would include all queues, then remove those that start with SYSTEM.CLUSTER.
Pay close attention to the order in which you enter your rules, whether in Wizard or Advanced mode.
Read settings and Write settings.
Select which feature sets (metric groups) you want this configuration to collect. Selecting too few won't give you the proper visibility, and you may miss out on essential performance data and key indicators that can be correlated between different objects.
IBM MQ has several ways to authenticate client and local connections. The administrator of your MQ environment determines this according to their own security policies.
User authentication depends on the configuration of Channel Authentication (CHLAUTH).
If disabled or ADOPTCTX is disabled, IBM MQ will attempt to authenticate the user running the extension process, not the user passed in the endpoint configuration.
When ADOPTCTX and CHLAUTH are enabled, the user and password combination entered in the endpoint is passed in an MQCSP block that IBM MQ will attempt to authenticate.
Consider this when authenticating users or if you receive unauthorized errors.

RESET_Q_STATISTICS command, therefore needing CHG permissions. If you can't provide this permission, make sure you deselect those metrics on the Feature Sets page of your monitoring configuration.
CONTROL permission is only required if collecting Enqueue/Dequeue metrics.
To retrieve the following metrics, statistics on queues are reset. To reset them, CHG permission must be granted to the queues:
Queue monitoring must be enabled on queues to retrieve the following metrics. Any monitoring resolution starts collecting these statistics.
When activating your extension using monitoring configuration, you can limit monitoring to one of the feature sets. To work properly the extension has to collect at least one metric after the activation.
In highly segmented networks, feature sets can reflect the segments of your environment. Then, when you create a monitoring configuration, you can select a feature set and a corresponding ActiveGate group that can connect to this particular segment.
All metrics that aren't categorized into any feature set are considered to be the default and are always reported.
A metric inherits the feature set of a subgroup, which in turn inherits the feature set of a group. Also, the feature set defined on the metric level overrides the feature set defined on the subgroup level, which in turn overrides the feature set defined on the group level.
| Metric name | Metric key | Description |
|---|---|---|
| Open input handles | ibmmq.queue.open_input_handles | Number of handles opened by applications for input |
| Open output handles | ibmmq.queue.open_output_handles | Number of handles opened by applications for output |
| Metric name | Metric key | Description |
|---|---|---|
| Publish count | ibmmq.topic.pub_cnt | The number of applications currently publishing to the topic. |
| Subcription count | ibmmq.topic.sub_cnt | The number of subscribers for this topic string, including durable subscribers who are not currently connected. |
| Metric name | Metric key | Description |
|---|---|---|
| Enqueue count | ibmmq.queue.enqueue_cnt | Number of messages enqueued. This count includes messages that have been put to the queue, but have not yet been committed. Enqueue rate also comes with this metric. |
| Dequeue count | ibmmq.queue.dequeue_cnt | Number of messages dequeued. This count includes messages that have been successfully retrieved (with a nonbrowse MQGET) from the queue, even though the MQGET has not yet been committed. Dequeue rate also comes with this metric. |
| Metric name | Metric key | Description |
|---|---|---|
| Channel status | ibmmq.channel.status | Used to round up channel status counts for alerting and charting purposes |
| Last started time | ibmmq.channel.last_started | Time when this channel was last started |
| Metric name | Metric key | Description |
|---|---|---|
| Log utilization | ibmmq.queue_manager.log_utilization | Percentage estimate of how well the queue manager workload is contained within the primary log space |
| Log in use | ibmmq.queue_manager.log_in_use | Percentage of the primary log space in use for restart recovery |
| Log archive size | ibmmq.queue_manager.log_archive_size | Amount of space occupied, in megabytes, by log extents no longer required for restart or media recovery, but waiting to be archived. |
| Log reuse size | ibmmq.queue_manager.log_reuse_size | Amount of space occupied, in megabytes, by log extents available to be reused. |
| z/OS Total log data sets | ibmmq.queue_manager.total_log_data_sets | The total number of active log data sets. |
| z/OS Full log data sets | ibmmq.queue_manager.full_log_data_sets | The total number of full active log data sets that have not yet been archived. |
| Metric name | Metric key | Description |
|---|---|---|
| Availability | ibmmq.queue_manager.availability | Percentage of time queue manager was reachable and available to this extension. While a queue manager sometimes may be up and running, availability is within the context of this extension. |
| Uptime | ibmmq.queue_manager.uptime | Time in seconds since last time queue manager started |
| Metric name | Metric key | Description |
|---|---|---|
| Long retries left | ibmmq.channel.long_retries_left | Number of long retry attempts remaining |
| Short retries left | ibmmq.channel.short_retries_left | Number of short retry attempts remaining |
| Metric name | Metric key | Description |
|---|---|---|
| Messages | ibmmq.channel.messages | Number of messages sent or received, or number of MQI calls handled. |
| Batches | ibmmq.channel.batches | Number of completed batches |
| In-doubt messages | ibmmq.channel.current_messages | Number of messages in-doubt |
| Metric name | Metric key | Description |
|---|---|---|
| Inhibit publish | ibmmq.topic.inhibit_pub | Whether publishes are not allowed |
| Inhibit subscription | ibmmq.topic.inhibit_sub | Whether subscriptions are not allowed |
| Metric name | Metric key | Description |
|---|---|---|
| Connections | ibmmq.queue_manager.connections | Number of active connections to queue manager |
| Queues count | ibmmq.queue_manager.monitored_queues | Number of monitored queues |
| DLQ depth | ibmmq.queue_manager.dlq_depth | Number of messages in dead letter queue |
| Active channels | ibmmq.queue_manager.active_channels | Number of channels in an active current status |
| Metric name | Metric key | Description |
|---|---|---|
| Total pages | ibmmq.queue_manager.usage.pageset.total_pages | The total number of 4 KB pages in the page set. Available only on z/OS IBM MQ |
| Expand count | ibmmq.queue_manager.usage.pageset.expand_cnt | The number of times the page set has been dynamically expanded since restart. Available only on z/OS IBM MQ |
| Unused pages | ibmmq.queue_manager.usage.pageset.unused_pages | The number of pages that are not used (that is, available page sets). Available only on z/OS IBM MQ |
| Persistent pages | ibmmq.queue_manager.usage.pageset.persistent_data_pages | The number of pages holding persistent data. Available only on z/OS IBM MQ |
| Non-persistent pages | ibmmq.queue_manager.usage.pageset.nonpersistent_data_pages | The number of pages holding nonpersistent data. Available only on z/OS IBM MQ |
| Free buffers | ibmmq.queue_manager.usage.buffer_pool.free_buffers | Number of free buffers in buffer pool. Available only on z/OS IBM MQ |
| Percent of free buffers | ibmmq.queue_manager.usage.buffer_pool.percent_free_buffers | Number of free buffers as a percentage of all buffers in the buffer pool. Available only on z/OS IBM MQ |
| Total buffers | ibmmq.queue_manager.usage.buffer_pool.total_buffers | The number of buffers defined for specified buffer pool. Available only on z/OS IBM MQ |
| Metric name | Metric key | Description |
|---|---|---|
| Channel instances | ibmmq.channel.instances | Number of instances of this channel. This metric is only available to server-connection channels. |
| Total channel instances used | ibmmq.channel.total_instances_pct | Percentage of instances of this channel over its max intances. This metric is only available to server-connection channels. |
| Current shared conversations | ibmmq.channel.current_sharing_convs | Number of conversations currently active on this channel instance. This parameter is returned only for TCP/IP server-connection channels. |
| Metric name | Metric key | Description |
|---|---|---|
| Bytes sent | ibmmq.channel.bytes_sent | Number of bytes sent |
| Bytes received | ibmmq.channel.bytes_rcvd | Number of bytes received |
| Buffers sent | ibmmq.channel.buffers_sent | Number of buffers sent. |
| Buffers received | ibmmq.channel.buffers_rcvd | Number of buffers received. |
| Metric name | Metric key | Description |
|---|---|---|
| Last message sent | ibmmq.channel.last_msg | Time when last message was sent, or MQI call was handled |
| Network time short | ibmmq.channel.nettime_short | Amount of time, in microseconds, to send an end of batch request to the remote end of the channel and receive a response over a short period. |
| Network time long | ibmmq.channel.nettime_long | Amount of time, in microseconds, to send an end of batch request to the remote end of the channel and receive a response over a longer period. |
| XMIT queue time short | ibmmq.channel.xmitqtime_short | Time, in microseconds, that messages remained on the transmission queue before being retrieved over a short period. |
| XMIT queue time long | ibmmq.channel.xmitqtime_long | Time, in microseconds, that messages remained on the transmission queue before being retrieved over a longer period. |
| Metric name | Metric key | Description |
|---|---|---|
| Availability | ibmmq.listener.availability | Percentage this listener was running and available. |
| Metric name | Metric key | Description |
|---|---|---|
| Oldest message | ibmmq.queue.oldest_message | Age in seconds of the oldest message on the queue. |
| Uncommitted messages | ibmmq.queue.uncommitted_messages | Number of handles opened by applications for output |
| Last GET | ibmmq.queue.last_get | Time at which the last message was successfully read from the queue. |
| Last PUT | ibmmq.queue.last_put | Time at which the last message was successfully put in queue. |
| Short time indicator | ibmmq.queue.time_indicator_short | Amount of time that a message spent on the queue over a short period. |
| Long time indicator | ibmmq.queue.time_indicator_long | Amount of time that a message spent on the queue over a long period. |
| Metric name | Metric key | Description |
|---|---|---|
| Depth | ibmmq.queue.depth | Number of messages in queue |
| Depth percentage | ibmmq.queue.depth_percent | Percentage of messages filling up queue |
| Metric name | Metric key | Description |
|---|---|---|
| Inhibit GET | ibmmq.queue.inhibit_get | Whether queue inhibits MQGET |
| Inhibit PUT | ibmmq.queue.inhibit_put | Whether queue inhibits MQPUT |
| Metric name | Metric key | Description |
|---|---|---|
| In-doubt | ibmmq.channel.in_doubt | Whether the channel is currently in doubt. 0 = No. 1 = Yes |
The following is an approximation. Metrics change depending on the type of object. Some metrics are unavailable to all channels, and others are not available to all queues.
Assuming you get all metrics for all objects:
((10) + (Local queues * 16) + (Alias + Remote queues) * 2 + (Channels * 18) + (Listeners) + (Topics * 4)) * Queue managers * 525.6 = DDUs per year
For example:
1 Queue manager400 Local queues20 Alias and remote queues50 Channels1 Listener50 Topics( 10 + (400 * 16) + (20 * 2) + (50 * 18) + (1 * 1) + (50 * 4) ) * 1 * 525.6 =(10 + 6400 + 40 + 900 + 1 + 200) * 525.6 = approximately 3.9M DDUs per year
Some metrics depend on the type of queues. Other metrics depend on your queue manager configuration and whether your user has enough permissions to collect them.
Are you missing Enqueue and Dequeue? Make sure your user has CHG permission to reset the queue statistics. Only then can you receive Enqueue and Dequeue metrics.
Are you missing the oldest message and the last get/put? Make sure Monitoring statistics is enabled on your queue manager for all queues.
Are you looking at Alias or Remote queues? Only locally defined queues have status metrics. Alias and Remote only have Inhibit GET/PUT metrics.
Check the AMQERR01.LOG on the queue manager itself.
This log file will tell you what it tried to authenticate and what permissions you missed.
If you're unable to connect to your queue manager, make sure that either the user running the extension process has permissions to the queue manager or ADOPTCTX and CHLAUTH are enabled so that they can authenticate the user and password combination passed in the MQCSP block.
libmqm_r.so not foundThe IBM MQ libraries were not found in the Unix PATH.
Make sure you follow the ldconfig step above under local deployment.
MQRC_HOST_NOT_AVAILABLE: Queue manager is not reachable from your ActiveGate.
This usually means a firewall rule is missing.
Because a queue manager can run on a custom port, you need to make sure that host:port is reachable from the ActiveGate running the extension.
MQRC_NO_MSG_AVAILABLE: Your queue manager's response was too long and blank.
This can happen if your reply queue's MAX LENGTH is too small to accommodate the response payload.
You can try increasing that value.
A timeout or the queue manager may also cause it not to respond quickly.
MQRC_CONNECTION_BROKEN: The connection to the queue manager is severed due to a network interruption or the queue manager closed it.
Make sure your network performance is optimal.
Also, if you're using SSL, ensure you're not using an older TLS cipher that requires manual reset of TLS keys, such as TLS 1.2 AES-GCM ciphers. Switch to a TLS 1.3 Cipher that has automatic TLS keys reset.