forked from ask/rabbitmq-munin
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Ask Solem
committed
Jun 17, 2009
0 parents
commit dde96a9
Showing
1 changed file
with
74 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,74 @@ | ||
#!/bin/sh | ||
# | ||
# Plugin to monitor the queues of a virtual_host in RabbitMQ | ||
# | ||
# Usage: Link or copy into /etc/munin/node.d/ | ||
# | ||
# Parameters | ||
# env.vhost <AMQ virtual host> | ||
# env.queue_warn <warning queuesize> | ||
# env.queue_crit <critical queuesize> | ||
# | ||
# Magic markers (optional - only used by munin-config and some | ||
# installation scripts): | ||
# | ||
#%# family=auto | ||
#%# capabilities=autoconf | ||
|
||
# If run with the "autoconf"-parameter, give our opinion on wether we | ||
# should be run on this system or not. This is optinal, and only used by | ||
# munin-config. In the case of this plugin, we should most probably | ||
# always be included. | ||
|
||
if [ "$1" = "autoconf" ]; then | ||
echo yes | ||
exit 0 | ||
fi | ||
|
||
# If run with the "config"-parameter, give out information on how the | ||
# graphs should look. | ||
|
||
VHOST=${vhost:-/} | ||
QUEUE_STATUS=$(rabbitmqctl list_queues -p $VHOST | \ | ||
grep -v '^Listing' | \ | ||
grep -v 'done.$') | ||
QUEUES=$(echo $QUEUE_STATUS | awk '{print $1}') | ||
|
||
if [ "$1" = "config" ]; then | ||
QUEUE_WARN=${queue_warn:-10000} | ||
QUEUE_CRIT=${queue_crit:-20000} | ||
|
||
# The host name this plugin is for. (Can be overridden to have | ||
# one machine answer for several) | ||
|
||
# The title of the graph | ||
echo 'graph_title RabbitMQ $VHOST list_queues' | ||
# Arguments to "rrdtool graph". In this case, tell it that the | ||
# lower limit of the graph is '0', and that 1k=1000 (not 1024) | ||
echo 'graph_args --base 1000 -l 0' | ||
# The Y-axis label | ||
echo 'graph_vlabel queue_size' | ||
# We want Cur/Min/Avg/Max unscaled (i.e. 0.42 load instead of | ||
# 420 milliload) | ||
#echo 'graph_scale no' | ||
|
||
for queue in $QUEUES; do | ||
echo "$queue.label $queue" | ||
echo "$queue.warning $QUEUE_WARN" | ||
echo "$queue.critical $QUEUE_CRIT" | ||
echo "$queue.info Queue size for $queue" | ||
done | ||
|
||
echo 'graph_info Lists how many messages are in each queue.' | ||
# Last, if run with the "config"-parameter, quit here (don't | ||
# display any data) | ||
exit 0 | ||
fi | ||
|
||
# If not run with any parameters at all (or only unknown ones), do the | ||
# real work - i.e. display the data. Almost always this will be | ||
# "value" subfield for every data field. | ||
|
||
rabbitmqctl list_queues -p portal | \ | ||
grep -v "^Listing" | grep -v "done.$" | \ | ||
perl -nle'($q, $s) = split; print("$q.value $s")' |