MSMQ Monitor

MSMQ Monitor is a complementary FREE tool that actively checks Microsoft MSMQ.  If any defined queue is over a specified threshold, a warning is generated. Queues that reach their threshold can be logged into the Event Log, XML or flat file. You can integrate your current Monitoring System to check for these alerts.

The best thing about MSMQ Monitor is that it is also completely free. If you have any questions please do not hesitate to contact us.

Prerequisites:
Microsoft .Net 3.5 sp1
Working EV installation

Command-line options:
-f, –filter=VALUE The path to monitor filter specification.
-t, –threshold=VALUE The default threshold for all queues not matching any filter.
-g, –generate=VALUE Name of configuration file to generate.
-o, –output=VALUE Name of output file, if output type is FLAT or XML. If EVENT then it will be the event name.
-a, –as=VALUE Output type (FLAT|XML|EVENT), default is FLAT
-i, –include_valid Include queues with status equal to Ok to report.
-h, –help Display Help.

Examples:
MSMQMonitor -t 4000 -g MSMQMonitor.xml
Generate a customer configuration file called MSMQMonitor.xml with a threshold of 2000 messages for each Queue.

MSMQMonitor -f MSMQMonitor.xml -a EVENT
Check all Queues specified in MSMQMonitor.xml and report any queues over their threshold to the Event Log.

MSMQMonitor -a XML -o OverThreshold.xml
Check all Queues specified in the default xml and report any queues over their threshold to OverThreshold.xml.

MSMQMonitor -t 3000 -a EVENT
Check all Queues and if any are over the threshold of 3000, report them into the Event Log.

XML Configuration File

To generate a config file you can use the –g switch, but it will need to be used in conjunction with –t to set the default threshold.

The config should be edited and custom thresholds set on different queues. Please see the “Best Practice” for a detailed description on what should be used for thresholds.

Wildcards can be used in the config file.
? – For any single character.
* – For 0 to n number of any characters

Wildcard Example:

If you wish to set a threshold on all retrieval tasks for all Exchange Servers you could use:

So if you wish to have a threshold of 250 on all Exchange Mailbox Tasks for the a3 queue, and a threshold of 0 for the rest.

As you can see, the two queues have been picked up and are marked as they have exceeded there threshold.

Logging

If one of the Queues goes over the set threshold there are three options for logging:

Event Log – Gets written to the application log.
XML File – If no output filename specified it will get generated in the location from where the application is run from.
Flat LOG File – If no output filename specified it will get generated in the location from where the application is run

EVENT

Only one Event will get generated for each queue that has reached its threshold.

XML

There will be one xml file with all the queues that have reached their threshold.

LOG

This is the same as the xml except it is a flat file will all the information regarding queues over their thresholds.

GlassHouse EVTools MSMQ Monitoring report (http://www.evtools.net/).

Number of private queues located: 23.
Queue ‘private$\enterprise vault exchange mailbox task for star01 100219165123 a3′ with 266 messages. Status: Exceed threshold value 250!
Queue ‘private$\enterprise vault exchange mailbox task for star01 100219165123 a7′ with 1 messages. Status: Exceed threshold value 0!
Queue ‘private$\enterprise vault archive agent admin queue’ with 0 messages. Status: Threshold not defined!

Valid queues: 0
Queues not configured: 1
Queues Exceed threshold: 2
Queues Failed to process: 0