Pre-Reqs:
For this to work AS IS, you need a document hosted on the IBM MQ server that has several headers defined below, the purpose of this was to create unique thresholds per queue based upon the admin needs and so they can modify thresholds themselves as often as needed without having to modify anything in SolarWinds directly.
AKA don’t page me out in the middle of the night to adjust thresholds because an external customer is having data flow issues!
These columns provide them the ability to enable/disable monitoring on a particular metric for a queue manage the thresholds for the queues, and manage the severity.
queues | highdepth_warning | highdepth_critical | lastget_crtical | Enabled | depth_warning | depth_critical | notread_enabled | lastput_warning_end | lastput_critical_end | notreceived_severity | notreceived_enabled | notread_severity | notread_enabled | highdepth_enabled | highdepth_severity |
What I have done is create a severity column on the csv file that will define that queue as critical or warning, and I have 2 of these templates assigned to each host which is filtered by severity through the component arguments:
The purpose of this in my environment is for the way my alerts are scoped, but feel free to modify based upon your needs.

Update the below variables:
Update with the server host name and the qmanager name(s) (duplicate this variable if you will be running this on multiple servers, and it will store these values to a hashtable and it will run to evaluate the systems hostname to determine what its qmgr name should be)
$global:Qmgr.add('HOST NAME','QMGR NAME')
- Example for multiple of these:
$global:Qmgr.add(server1,'QMGR1')
$global:Qmgr.add(server2,'QMGR2)
Update with the file path this threshold csv is located:
$Path
This template has a lot of customization specific to my needs, but the parts that really matter are these:
$cmd = 'echo "DISPLAY queue($($qname)) maxdepth curdepth" | runmqsc $mqmgr'
This command is actually polling the queue or channel data from the cmd line, the rest of these script is just formatting to make it easier to read, and evaluating current data vs thresholds.
This IBM MQ documentation has more commands and how to use them:
DISPLAY QSTATUS (display queue status) - IBM Documentation