IBM MQ monitoring integration
preview
We're still working on this feature, but we'd love for you to try it out!
This feature is currently provided as part of a preview program pursuant to our pre-release policies.
Our IBM MQ integration collects and sends dimensional metrics from IBM MQ.
You can view this metric data in pre-built dashboards, create alerts policies, and create custom queries and charts.
Dashboard installed through the New Relic IBM MQ Monitor quickstart.
To get data from IBM MQ infrastructure, our IBM MQ integration uses a third-party Prometheus exporter, which exposes Prometheus metrics on the port specified in the configuration. The integration collects these metrics, filters them, and then sends them to New Relic.
Important
The IBM MQ integration doesn't support ARM64 architecture.
To start set up the IBM MQ integration, follow these steps:
Configuration options
To configure the integration, edit the config in the integration's YAML config file, ibmmq-config.yml
. An integration's YAML-format configuration is where you can place required login credentials and configure how to collect data. Which options you change depend on your setup and preference. The configuration file has common settings applicable to all integrations.
To read all about these common settings, refer to our configuration format document.
IBM MQ instance settings
The following configuration options are available:
Setting | Description | Default |
---|---|---|
| Hostname of the IBM MQ service | N/A |
| Port of the IBM MQ service | N/A |
| Queue Manager name | N/A |
| Channel name used to connect to the queue manager. Typically you can use | N/A |
| Username to authenticate to IBM MQ service. If the password is not specified, user/password authentication is disabled and the username should not be specified in the configuration.
The exporter will connect sending as | N/A |
| Password to authenticate to IBM MQ service | N/A |
| Queues to monitor (wildcards and | N/A |
| Channels to monitor (wildcards and | N/A |
| Topics to monitor (wildcards and | N/A |
| Subscriptions to monitor (wildcards and | N/A |
| Port to expose scrape endpoint on, If this is not provided a random port will be used to launch the exporter |
|
| Time until a scrape request times out |
|
| Needed to configure TLS
| N/A |
| Needed to configure TLS
Path to the ccdt file. Two different environment variable will be set automatically: | N/A |
| IBMMQ Client needs permissions to write in a directory specified in the | N/A |
|
| N/A |
Examples of the ibmmq-config.yml
file
This is the basic configuration used to collect metrics:
integrations: - name: nri-ibmmq config: hostname: localhost port: 1414 queue_manager: QM1 channel: SYSTEM.DEF.SVRCONN username: your_mq_user password: your_mq_password monitored_queues: '!SYSTEM.*,*' monitored_channels: '*' monitored_topics: '*' monitored_subscriptions: '*' exporter_port: 9157
This is the same basic configuration used to collect metrics showing how to run the integration twice connecting to two hosts. Notice that each instance of the integration will spawn an extra exporter listening on a different port.
integrations: - name: nri-ibmmq config: hostname: host1 port: 1414 queue_manager: QM1 channel: SYSTEM.DEF.SVRCONN username: your_mq_user password: your_mq_password monitored_queues: '!SYSTEM.*,*' monitored_channels: '*' monitored_topics: '*' monitored_subscriptions: '*' - name: nri-ibmmq config: hostname: host2 port: 1414 queue_manager: QM1 channel: SYSTEM.DEF.SVRCONN username: your_mq_user password: your_mq_password monitored_queues: '!SYSTEM.*,*' monitored_channels: '*' monitored_topics: '*' monitored_subscriptions: '*'
If the password is not specified, user/password authentication is disabled and you shouldn't specify the username in the configuration.
The exporter will try to connect sending as clientID
the user executing the integration. Depending on the agent installation mode it could be root
or nri-agent
.
Such user needs to be able to access the queue manager without providing a password.
integrations: - name: nri-ibmmq config: hostname: localhost port: 1414 queue_manager: QM1 channel: SYSTEM.DEF.SVRCONN monitored_queues: '!SYSTEM.*,*' monitored_channels: '*' monitored_topics: '*' monitored_subscriptions: '*' exporter_port: 9157
This is the basic configuration using filters to restrict the monitored queues.
In this example we monitor all queues named DEV.QUEUE
and specifically ignore queue DEV.QUEUE.1
. You can add other patterns separated by commas:
integrations: - name: nri-ibmmq config: hostname: localhost port: 1414 queue_manager: QM1 channel: SYSTEM.DEF.SVRCONN username: your_mq_user password: your_mq_password monitored_queues: 'DEV.QUEUE*,!DEV.QUEUE.1' monitored_channels: '*' monitored_topics: '*' monitored_subscriptions: '*' exporter_port: 9157
This is an advanced configuration showing how to setup mTLS.
The ccdt
file should indicate which certificate to present to the server thorugh the certificateLabel
field of the transmissionSecurity
section.
The certificate should be in the keystore with such label and trusted by the server.
Morever, the Keystore should contain a certificate capable of verifying the one presented by the server.
integrations: - name: nri-ibmmq config: queue_manager: QM1 channel: SYSTEM.DEF.SVRCONN username: your_mq_user password: your_mq_password monitored_queues: 'DEV.QUEUE*,!DEV.QUEUE.1' monitored_channels: '*' monitored_topics: '*' monitored_subscriptions: '*' exporter_port: 9157
# Configuring mTLS mqsslkeyr: "/key" ccdt_url: "file:///ccdt.json" home: /tmp
Metric data
Two entities are created: IBMMQ_MANAGER
and IBMMQ_QUEUE
.
The following dimensional metrics are captured scraping the exporter and linked to the entity IBMMQ_MANAGER
:
Name | Description | Dimensions |
---|---|---|
| Buffers rcvd |
|
| Buffers sent |
|
| Bytes rcvd |
|
| Bytes sent |
|
| Channel Instance Type |
|
| Messages (API Calls for SVRCONN) |
|
|
| |
| Channel Status - Simplified |
|
| Channel Substate |
|
| Time Since Msg |
|
| Channel Type |
|
| Alter durable subscription count |
|
| Channel Initiator Status |
|
| Command Server Status |
|
| Commit count |
|
| Concurrent connections - high water mark |
|
| Connection Count |
|
| CPU load - fifteen minute average |
|
| CPU load - five minute average |
|
| CPU load - one minute average |
|
| Create durable subscription count |
|
| Create non-durable subscription count |
|
| Delete durable subscription count |
|
| Delete non-durable subscription count |
|
| Durable subscriber - high water mark |
|
| Durable subscriber - low water mark |
|
| Expired message count |
|
| How many resource publications processed |
|
| Failed browse count |
|
| Failed create/alter/resume subscription count |
|
| Failed MQCB count |
|
| Failed MQCLOSE count |
|
| Failed MQCONN/MQCONNX count |
|
| Failed MQGET - count |
|
| Failed MQINQ count |
|
| Failed MQOPEN count |
|
| Failed MQPUT count |
|
| Failed MQPUT1 count |
|
| Failed MQSET count |
|
| Failed MQSUBRQ count |
|
| Failed topic MQPUT/MQPUT1 count |
|
| Got non-persistent messages - byte count |
|
| Got persistent messages - byte count |
|
| Interval total destructive get - byte count |
|
| Interval total destructive get- count |
|
| Interval total MQPUT/MQPUT1 byte count |
|
| Interval total MQPUT/MQPUT1 count |
|
| Interval total topic bytes put |
|
| Log - current primary space in use |
|
| Log file system - bytes in use |
|
| Log file system - bytes max |
|
| Log - bytes in use |
|
| Log - logical bytes written |
|
| Log - bytes max |
|
| Log - physical bytes written |
|
| Log - workload primary space utilization |
|
| Log - write latency |
|
| Log - write size |
|
| MQ errors file system - free space |
|
| MQ errors file system - bytes in use |
|
| MQ FDC file count |
|
| MQ trace file system - free space |
|
| MQ trace file system - bytes in use |
|
| MQCB count |
|
| MQCLOSE count |
|
| MQCONN/MQCONNX count |
|
| MQCTL count |
|
| MQDISC count |
|
| MQINQ count |
|
| MQOPEN count |
|
| MQSET count |
|
| MQSTAT count |
|
| MQSUBRQ count |
|
| Non-durable subscriber - high water mark |
|
| Non-durable subscriber - low water mark |
|
| Non-persistent message browse - byte count |
|
| Non-persistent message browse - count |
|
| Non-persistent message destructive get - count |
|
| Non-persistent message MQPUT count |
|
| Non-persistent message MQPUT1 count |
|
| Non-persistent - topic MQPUT/MQPUT1 count |
|
| Persistent message browse - byte count |
|
| Persistent message browse - count |
|
| Persistent message destructive get - count |
|
| Persistent message MQPUT count |
|
| Persistent message MQPUT1 count |
|
| Persistent - topic MQPUT/MQPUT1 count |
|
| Published to subscribers - byte count |
|
| Published to subscribers - message count |
|
| Purged queue count |
|
| Put non-persistent messages - byte count |
|
| Put persistent messages - byte count |
|
| Queue Manager file system - free space |
|
| Queue Manager file system - bytes in use |
|
| RAM free percentage |
|
| RAM total bytes |
|
| RAM total bytes - estimate for queue manager |
|
| Resume durable subscription count |
|
| Rollback count |
|
| Queue Manager Status |
|
| Subscription delete failure count |
|
| System CPU time - percentage estimate for queue manager |
|
| System CPU time percentage |
|
| Topic MQPUT/MQPUT1 interval total |
|
| Up time |
|
| User CPU time - percentage estimate for queue manager |
|
| User CPU time percentage |
|
| Messages Received |
|
| Time Since Message Received |
|
| Subscription Type |
|
| Received Messages |
|
| Number of publishers |
|
| Number of subscribers |
|
| Time Since Msg |
|
The following dimensional metrics are captured scraping the exporter and linked to the entity IBMMQ_QUEUE
:
Name | Description | Dimensions |
---|---|---|
| Queue Max Depth |
|
| Queue Usage |
|
| average queue time |
|
| queue avoided bytes |
|
| queue avoided puts |
|
| Queue depth |
|
| destructive MQGET fails |
|
| destructive MQGET fails with MQRC_NO_MSG_AVAILABLE |
|
| destructive MQGET fails with MQRC_TRUNCATED_MSG_FAILED |
|
| destructive MQGET non-persistent byte count |
|
| destructive MQGET non-persistent message count |
|
| destructive MQGET persistent byte count |
|
| destructive MQGET persistent message count |
|
| messages expired |
|
| Input Handles |
|
| lock contention |
|
| MQCLOSE count |
|
| MQGET browse fails |
|
| MQGET browse fails with MQRC_NO_MSG_AVAILABLE |
|
| MQGET browse fails with MQRC_TRUNCATED_MSG_FAILED |
|
| MQGET browse non-persistent byte count |
|
| MQGET browse non-persistent message count |
|
| MQGET browse persistent byte count |
|
| MQGET browse persistent message count |
|
| MQGET byte count |
|
| MQGET count |
|
| MQINQ count |
|
| MQOPEN count |
|
| MQPUT byte count |
|
| MQPUT/MQPUT1 count |
|
| MQPUT non-persistent message count |
|
| MQPUT persistent message count |
|
| MQPUT1 non-persistent message count |
|
| MQPUT1 persistent message count |
|
| MQSET count |
|
| non-persistent byte count |
|
| Oldest Message |
|
| Input Handles |
|
| persistent byte count |
|
| queue purged count |
|
| Queue File Current Size |
|
| Queue File Maximum Size |
|
| Queue Time Long |
|
| Queue Time Short |
|
| rolled back MQGET count |
|
| rolled back MQPUT count |
|
| Time Since Get |
|
| Time Since Put |
|
| Uncommitted Messages (Count) |
|