IBM MQ
Introduction
IBM MQ provides a universal messaging backbone with robust connectivity for flexible and reliable messaging for applications and the integration of existing IT assets using a service-oriented architecture. It works in multiple modes of operations including point-to-point, publish/subscribe, and file transfer. Applications can also publish messages to many subscribers over multicast.
Getting Started
Compatibility
The IBM MQ O11ySource supports IBM MQ versions 9.3.0.0 and later.
Data Collection Method
vuSmartMaps collects IBM MQ health and performance metrics using OmniAgent’s JVM probe, and ingests logs via OmniAgent’s log collection probes.
Prerequisites
Dependent Configuration
To configure this O11ySource, create a 'credential' of type 'user' under the 'Definition' tab.
Inputs for Configuring Data Source
- IBM MQ Server: The IP Address/FQDN of the IBM MQ server. This field is the key to identify each server you add here.
- Queue Manager Name: The name of the Queue Manager (QManager) that needs to be monitored.
- Port: The port which connects to queues and channels of IBM MQ Server.
- Channel Name: The name of the channel that the QManager is listening on.
- IBM MQ Credential: Select the credential containing the IBM MQ username and password.
- Period [in seconds]: How frequently data is gathered. The period should be between 60 seconds to 3000 seconds.
- Log Path Configuration: Provide the IBM MQ log path details.
- IBM MQ Error Log Path: Enter the full path to the IBM MQ error log file.
Applications
Firewall Requirement
To collect data from this O11ySource, ensure the following ports are opened:
| Source IP | Destination IP | Destination Port | Protocol | Direction |
|---|---|---|---|---|
| IP address of the IBM MQ server | vuSmartMaps Collection/Ingress node IP | 443* | TCP | Inbound |
*Before providing the firewall requirements, please update the port based on the customer environment.
Configuring the Target
Metrics from IBM MQ are collected by connecting to the Queue Manager (QMGR) using an OS user with the required MQ authorities.
To get started, create an OS user vunet on the host where IBM MQ is installed. Configure the username and credentials on the Definitions page in vuSmartMaps, as described in Setup O11ySource.
After creating the user, grant the following MQ authorities for vunet:
QMGR-level authorities:
setmqaut -m <QMGR NAME> -t qmgr -p "vunet" +connect +inq +dsp
setmqaut -m <QMGR NAME> -t q -n SYSTEM.DEFAULT.MODEL.QUEUE -p "vunet" +inq +get +dsp
setmqaut -m <QMGR NAME> -t q -n SYSTEM.ADMIN.COMMAND.QUEUE -p "vunet" +inq +put
Queue authorities (repeat for each queue to be monitored):
setmqaut -m <QMGR NAME> -n "<QUEUE NAME>" -t q -p "vunet" +browse +dsp +get +inq
Channel authorities (repeat for each channel to be monitored):
setmqaut -m <QMGR NAME> -n "<CHANNEL NAME>" -t chl -p "vunet" +dsp
Verify that the vunet user can connect to the QMGR and display the required objects.
Configuration Steps
Metrics Collected
| Name | Description | Data Type |
|---|---|---|
| MQIACH_HB_INTERVAL | Heartbeat interval for the channel | UInt16 |
| MQIA_MONITORING_CHANNEL | Indicates whether channel monitoring is enabled | UInt8 |
| target | Target destination or system for monitoring | String |
| Time | Timestamp of the event or metric capture | String |
| ChannelStatus | Current status of the channel | UInt8 |
| MQIACH_STOP_REQUESTED | Indicates if a stop has been requested for the channel | UInt8 |
| MQIACH_EXIT_TIME_INDICATOR | Time indicator for channel exit | Array(UInt8) |
| ConnectionName | Name of the connection | String |
| MQIACH_SECURITY_PROTOCOL | Security protocol used by the channel | UInt8 |
| MQCACH_MCA_JOB_NAME | Name of the MCA (Message Channel Agent) job | String |
| ChannelStartTime | Start time of the channel | String |
| MQCACH_SSL_CIPHER_SPEC | SSL cipher specification used by the channel | String |
| BuffersSent | Number of buffers sent by the channel | UInt32 |
| MQIACH_MAX_SHARING_CONVS | Maximum number of sharing conversations allowed | UInt8 |
| DisplayName | Display name for the metric or channel | String |
| MQIACH_MCA_STATUS | Status of the Message Channel Agent (MCA) | UInt8 |
| MQIACH_SSL_KEY_RESETS | Number of SSL key resets | UInt8 |
| MQCACH_LOCAL_ADDRESS | Local address of the channel | String |
| ChanneSubState | Sub-state of the channel | UInt16 |
| MQIACH_BYTES_RCVD/MQIACH_BYTES_RECEIVED | Number of bytes received by the channel | UInt32 |
| MQCACH_SSL_SHORT_PEER_NAME | Short name of the SSL peer | String |
| LastMessageDate | Date of the last message processed | Date |
| Messages | Number of messages processed | UInt32 |
| QmgrName | Name of the Queue Manager | String |
| MQIACH_COMPRESSION_TIME | Time taken for message compression | Array(UInt8) |
| MQCACH_SSL_KEY_RESET_TIME | Time of the last SSL key reset | String |
| Host | Hostname or IP address of the server | String |
| MQCACH_MCA_USER_ID | User ID of the MCA | String |
| MQCACH_REMOTE_VERSION | Version of the remote system | String |
| MQIACH_HDR_COMPRESSION | Header compression algorithm used | Array(UInt8) |
| MQCACH_REMOTE_APPL_TAG | Tag of the remote application | String |
| MQCACH_SSL_CERT_ISSUER_NAME | Issuer name of the SSL certificate | String |
| ChannelName | Name of the channel | String |
| MQCACH_SSL_KEY_RESET_DATE | Date of the last SSL key reset | String |
| StatisticType | Type of statistic | String |
| MQIACH_CHANNEL_INSTANCE_TYPE | Type of channel instance | UInt16 |
| LastMessageTime | Time of the last message processed | String |
| BytesSent | Number of bytes sent by the channel | UInt32 |
| MQIACH_BUFFERS_RCVD/MQIACH_BUFFERS_RECEIVED | Number of buffers received by the channel | UInt32 |
| CurrentNoOfCoversations | Current number of conversations | UInt8 |
| MQIACH_MSG_COMPRESSION | Message compression algorithm used | Array(UInt8) |
| MQIACH_COMPRESSION_RATE | Rate of compression | Array(UInt8) |
| ChannelType | Type of channel | UInt8 |
| ChannelStartDate | Start date of the channel | Date |
| MQCACH_REMOTE_PRODUCT | Name of the remote product | String |
| @timestamp | Event timestamp | String |
| timestamp | High-precision timestamp | DateTime64 |
| target | Target destination or system for monitoring | String |
| QmgrStartTime | Start time of the Queue Manager | String |
| ConnectionCount | Number of active connections to the Queue Manager | UInt32 |
| QmgrName | Name of the Queue Manager | String |
| StatisticType | Type of statistic being recorded | String |
| QmgrStartDate | Start date of the Queue Manager | Date |
| DisplayName | Display name for the metric or Queue Manager | String |
| Host | Hostname or IP address of the server | String |
| Time | Timestamp of the event or metric capture | String |
| QmgrStatus | Status of the Queue Manager | UInt8 |
| @timestamp | Event timestamp | String |
| timestamp | High-precision timestamp | DateTime64 |
| QueueDepthLowThreshold% | Percentage threshold for low queue depth | UInt8 |
| LastAlteredDate | Date when the queue was last altered | String |
| MQCA_CLUS_CHL_NAME | Cluster channel name | String |
| MQCA_Q_DESC | Description of the queue | String |
| MQIA_DEF_PUT_RESPONSE_TYPE | Default put response type | Int8 |
| MQIA_STATISTICS_Q | Indicates if statistics collection is enabled for the queue | Int8 |
| QueueType | Type of the queue | UInt8 |
| MQIA_Q_DEPTH_MAX_EVENT | Indicates if max depth event is enabled | UInt8 |
| MQIA_MONITORING_Q | Indicates if queue monitoring is enabled | Int8 |
| MQIA_Q_DEPTH_HIGH_EVENT | Indicates if high queue depth event is enabled | UInt8 |
| MQIA_HARDEN_GET_BACKOUT | Indicates if hardened backout is enabled | UInt8 |
| MQIA_MSG_DELIVERY_SEQUENCE | Sequence of message delivery | UInt8 |
| MQIA_TRIGGER_MSG_PRIORITY | Priority of messages that trigger | UInt8 |
| MQIA_SHAREABILITY | Indicates if the queue is shareable | UInt8 |
| MQIA_BACKOUT_THRESHOLD | Threshold for message backout | UInt8 |
| QmgrName | Name of the Queue Manager | String |
| MQIA_TRIGGER_TYPE | Type of trigger associated with the queue | UInt8 |
| MQIA_DEF_READ_AHEAD | Default read-ahead setting | UInt8 |
| MQIA_NPM_CLASS | Non-persistent message class | UInt8 |
| MQIA_RETENTION_INTERVAL | Retention interval for messages | UInt32 |
| StatisticType | Type of statistic | String |
| MQIA_INHIBIT_GET | Indicates if get operations are inhibited | UInt8 |
| MQIA_ACCOUNTING_Q | Indicates if accounting is enabled for the queue | Int8 |
| MQIA_TRIGGER_CONTROL | Trigger control setting | UInt8 |
| target | Target destination or system for monitoring | String |
| MQIA_Q_SERVICE_INTERVAL_EVENT | Indicates if a service interval event is enabled for the queue | UInt8 |
| Time | Timestamp of the event or metric capture | String |
| MQIA_PROPERTY_CONTROL | Control setting for queue properties | UInt8 |
| MQCA_CREATION_TIME | Time when the queue was created | String |
| MQCA_INITIATION_Q_NAME | Name of the initiation queue for a trigger | String |
| MaxQueueDepth | Maximum depth of the queue | UInt32 |
| MQCA_PROCESS_NAME | Name of the process associated with the queue | String |
| MQCA_TRIGGER_DATA | Data associated with the trigger | String |
| DisplayName | Display name for the metric or queue | String |
| QueueName | Name of the queue | String |
| MQIA_DEF_PRIORITY | Default priority for messages placed on the queue | UInt8 |
| MQIA_DEF_PERSISTENCE | Default persistence setting for messages on the queue | UInt8 |
| MQIA_Q_DEPTH_LOW_EVENT | Indicates if a low queue depth event is enabled | UInt8 |
| MQIA_TRIGGER_DEPTH | Depth at which a trigger event is generated | UInt8 |
| MQCA_CREATION_DATE | Date when the queue was created | String |
| MQIA_USAGE | Queue usage setting | UInt8 |
| Host | Hostname or IP address of the server | String |
| MaxMessageLength | Maximum length of messages allowed on the queue | UInt32 |
| MQCA_BACKOUT_REQ_Q_NAME | Name of the backout queue associated with the queue | String |
| MQIA_DEFINITION_TYPE | Type of queue definition | UInt8 |
| MQIA_Q_SERVICE_INTERVAL | Interval at which queue services are performed | UInt32 |
| MQIA_DEF_INPUT_OPEN_OPTION | Default open option for input on the queue | UInt8 |
| MQIA_INHIBIT_PUT | Inhibit put setting for the queue | UInt8 |
| QueueDepthHighThreshold% | Percentage threshold for high queue depth | UInt8 |
| LastAlteredTime | Time when the queue was last altered | String |
| MQCA_CUSTOM | Custom attribute associated with the queue | String |
| MQIA_DIST_LISTS | Indicates if distribution lists are enabled for the queue | UInt8 |
| CurrentQueueDepth | Current depth of the queue | UInt32 |
| OldestMessageAge | Age of the oldest message on the queue | Int32 |
| OpenOutputCount | Number of open output handles on the queue | UInt32 |
| OpenInputCount | Number of open input handles on the queue | UInt32 |
| UncommittedMessages | Number of uncommitted messages on the queue | UInt32 |
| LastPutDate | Date when the last message was put on the queue | String |
| LastPutTime | Time when the last message was put on the queue | String |
| LastGetDate | Date when the last message was retrieved from the queue | String |
| LastGetTime | Time when the last message was retrieved from the queue | String |
| MQCA_CLUSTER_NAME | Name of the cluster | String |
| MQCA_CLUSTER_NAMELIST | List of cluster names for the queue | String |
| MQCACF_MEDIA_LOG_EXTENT_NAME | Name of the media log extent | String |
| MQIA_CLWL_Q_PRIORITY | Cluster workload management (CLWL) queue priority | UInt64 |
| MQIA_CLWL_Q_RANK | Cluster workload management (CLWL) queue rank | UInt64 |
| MQIA_CLWL_USEQ | Indicates if the queue is a currently used queue | Int64 |
| MQIA_DEF_BIND | Default binding setting for the queue | UInt64 |
| MQIACF_Q_STATUS_TYPE | Type of status reported for the queue | UInt64 |
| OnQTime | Time a message spends on the queue | Array(Int64) |
| MQIA_SCOPE | Scope setting for the queue | UInt64 |
| @timestamp | Event timestamp | String |
| DeviceType | Type of device generating the metric | String |
| timestamp | High-precision timestamp | DateTime64 |
| target | Target system or destination for logging | String |
| file | File path where the log is stored | String |
| host | Hostname or IP address of the server where the log is collected | String |
| type | Type of log entry (e.g., error, info, warning) | String |
| instance | Name of the application or system instance | String |
| errorCode | Error code indicating an issue in the system | String |
| errorCodeDetails | Detailed description of the error code | String |
| PIDTID | Process ID and Thread ID associated with the log entry | String |
| ProgramName | Name of the program that generated the log entry | String |
| version | Version of the application or system generating the log | String |
| hostname | Name of the host machine where the log was recorded | String |
| Username | User responsible for generating the log entry or causing the error | String |
| AMPM | Indicates AM or PM in timestamp | String |
| ArithInsert | Additional details on the error and authentication issues | String |
| ActionDetails | Suggested actions or troubleshooting steps for resolving the error | String |
| ExplainationDetails | Explanation of the error and its cause | String |
| time | Timestamp when the log entry was created | String |
| @timestamp | Event timestamp in string format | String |
| timestamp | High-precision timestamp for logging | DateTime64 |
| message | Log message containing details about the event | String |
| qmgr | Name of the Queue Manager associated with the log entry | String |
