From 4f42f596f3178f249f049741f977fd5a009dd8ef Mon Sep 17 00:00:00 2001 From: cn Date: Wed, 18 Apr 2018 08:35:57 +0200 Subject: [PATCH] Fix compatibility for RabbitMQ 3.7 --- README.rst | 39 +++------- rabbitmq_connections | 14 ++-- rabbitmq_messages_uncommitted | 73 ------------------- ...itmq_consumers => rabbitmq_queue_consumers | 25 ++++--- ...ages_unacknowledged => rabbitmq_queue_disk | 42 ++++++----- rabbitmq_queue_memory | 25 ++++--- rabbitmq_messages => rabbitmq_queue_messages | 40 +++++++--- 7 files changed, 100 insertions(+), 158 deletions(-) delete mode 100755 rabbitmq_messages_uncommitted rename rabbitmq_consumers => rabbitmq_queue_consumers (77%) rename rabbitmq_messages_unacknowledged => rabbitmq_queue_disk (62%) rename rabbitmq_messages => rabbitmq_queue_messages (63%) diff --git a/README.rst b/README.rst index a2fe357..d9c3538 100644 --- a/README.rst +++ b/README.rst @@ -2,19 +2,6 @@ RabbitMQ Munin Plug-Ins ========================= -Screenshots -=========== - -.. image:: http://cloud.github.com/downloads/ask/rabbitmq-munin/rabbitmq-munin-connections.png - -.. image:: http://cloud.github.com/downloads/ask/rabbitmq-munin/rabbitmq-munin-consumers.png - -.. image:: http://cloud.github.com/downloads/ask/rabbitmq-munin/rabbitmq-munin-list_queues.png - -.. image:: http://cloud.github.com/downloads/ask/rabbitmq-munin/rabbitmq-munin-queue-memory.png - -.. image:: http://cloud.github.com/downloads/ask/rabbitmq-munin/rabbitmq-munin-unacknowledged.png - Installation ============ @@ -30,21 +17,18 @@ root by changing the plug-in configuration file (on debian that is [rabbitmq_connections] user root - [rabbitmq_consumers] + [rabbitmq_queue_consumers] user root - [rabbitmq_messages] - user root - - [rabbitmq_messages_unacknowledged] - user root - - [rabbitmq_messages_uncommitted] + [rabbitmq_queue_disk] user root [rabbitmq_queue_memory] user root + [rabbitmq_queue_messages] + user root + Using a Custom Virtual Host ============================ @@ -52,17 +36,14 @@ Using a Custom Virtual Host You can set the name of virtual host by changing the plug-in configuration file (on debian that is ``/etc/munin/plugin-conf.d``):: - [rabbitmq_consumers] + [rabbitmq_queue_consumers] env.vhost vhostname - [rabbitmq_messages] - env.vhost vhostname - - [rabbitmq_messages_unacknowledged] - env.vhost vhostname - - [rabbitmq_messages_uncommitted] + [rabbitmq_queue_disk] env.vhost vhostname [rabbitmq_queue_memory] env.vhost vhostname + + [rabbitmq_queue_messages] + env.vhost vhostname diff --git a/rabbitmq_connections b/rabbitmq_connections index fb25460..d040c7d 100755 --- a/rabbitmq_connections +++ b/rabbitmq_connections @@ -1,5 +1,5 @@ -#!/bin/sh -# +#!/bin/bash +# # Plugin to monitor the number of connections to RabbitMQ # # Usage: Link or copy into /etc/munin/node.d/ @@ -27,11 +27,11 @@ fi HOME=/tmp/ # If run with the "config"-parameter, give out information on how the -# graphs should look. +# graphs should look. if [ "$1" = "config" ]; then - CONN_WARN=${queue_warn:-500} - CONN_CRIT=${queue_crit:-1000} + CONN_WARN=${queue_warn:-500} + CONN_CRIT=${queue_crit:-1000} # The host name this plugin is for. (Can be overridden to have # one machine answer for several) @@ -63,4 +63,6 @@ fi # real work - i.e. display the data. Almost always this will be # "value" subfield for every data field. -echo "connections.value $(HOME=$HOME rabbitmqctl list_connections | grep -v "^Listing" | grep -v "done.$" | wc -l)" +echo "total.value $(HOME=$HOME rabbitmqctl list_connections | grep -v "^Listing" | grep -v "done.$" | grep -v "\.\.\." | wc -l)" +echo "secure.value $(HOME=$HOME rabbitmqctl list_connections ssl | grep -v "^Listing" | grep -v "done.$" | grep -v "\.\.\." | grep "true" | wc -l)" +echo "insecure.value $(HOME=$HOME rabbitmqctl list_connections ssl | grep -v "^Listing" | grep -v "done.$" | grep -v "\.\.\." | grep "false" | wc -l)" diff --git a/rabbitmq_messages_uncommitted b/rabbitmq_messages_uncommitted deleted file mode 100755 index 349bcd9..0000000 --- a/rabbitmq_messages_uncommitted +++ /dev/null @@ -1,73 +0,0 @@ -#!/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 -# env.queue_warn -# env.queue_crit -# -# 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. - -HOME=/tmp/ -VHOST=${vhost:-"/"} -QUEUES=$(HOME=$HOME rabbitmqctl list_queues -p $VHOST name | \ - grep -v '^Listing' | \ - grep -v 'done\.$' | sed -e 's/[.=-]/_/g' ) - -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 Uncommitted Messages" - # 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 uncommitted' - # We want Cur/Min/Avg/Max unscaled (i.e. 0.42 load instead of - # 420 milliload) - #echo 'graph_scale no' - echo 'graph_category RabbitMQ' - - for queue in $QUEUES; do - echo "$queue.label $queue" - echo "$queue.warning $QUEUE_WARN" - echo "$queue.critical $QUEUE_CRIT" - echo "$queue.info Uncommitted messages 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. - -HOME=$HOME rabbitmqctl list_channels name vhost messages_uncommitted | grep -v "\.\.\." | grep $VHOST | sed "s/[ ]->.*[\t]/.value /g" diff --git a/rabbitmq_consumers b/rabbitmq_queue_consumers similarity index 77% rename from rabbitmq_consumers rename to rabbitmq_queue_consumers index 11b02f5..186c29c 100755 --- a/rabbitmq_consumers +++ b/rabbitmq_queue_consumers @@ -1,5 +1,5 @@ -#!/bin/sh -# +#!/bin/bash +# # Plugin to monitor the queues of a virtual_host in RabbitMQ # # Usage: Link or copy into /etc/munin/node.d/ @@ -26,17 +26,15 @@ if [ "$1" = "autoconf" ]; then fi # If run with the "config"-parameter, give out information on how the -# graphs should look. +# graphs should look. HOME=/tmp/ VHOST=${vhost:-"/"} -QUEUES=$(HOME=$HOME rabbitmqctl list_queues -p $VHOST name | \ - grep -v '^Listing' | \ - grep -v 'done\.$' | sed -e 's/[.=-]/_/g' ) - +QUEUES=$(HOME=$HOME rabbitmqctl list_queues -p $VHOST name | grep -v '^Listing' | grep -v 'done\.$' | grep -v "\.\.\." | sed 's/[^a-z0-9]\+/_/g') + if [ "$1" = "config" ]; then - QUEUE_WARN=${queue_warn:-100} - QUEUE_CRIT=${queue_crit:-500} + QUEUE_WARN=${queue_warn:-100} + QUEUE_CRIT=${queue_crit:-500} # The host name this plugin is for. (Can be overridden to have # one machine answer for several) @@ -70,4 +68,11 @@ fi # real work - i.e. display the data. Almost always this will be # "value" subfield for every data field. -HOME=$HOME rabbitmqctl list_queues -p $VHOST name consumers| grep -v "^Listing" | grep -v "done.$" | grep -v "\.\.\." | sed "s/[\t]/.value /g" +IFS=$'\n' +for line in $(HOME=$HOME rabbitmqctl list_queues -p $VHOST name consumers | grep -v "^Listing" | grep -v "done.$" | grep -v "\.\.\."); do + echo -n "$line" | cut -f1 | tr -d '\n' | sed 's/[^a-z0-9]\+/_/g' + echo -n ".value " + echo -n "$line" | cut -f2 | tr -d '\n' + echo "" +done +IFS=$' \t\n' diff --git a/rabbitmq_messages_unacknowledged b/rabbitmq_queue_disk similarity index 62% rename from rabbitmq_messages_unacknowledged rename to rabbitmq_queue_disk index a8d0a92..e2f698d 100755 --- a/rabbitmq_messages_unacknowledged +++ b/rabbitmq_queue_disk @@ -1,13 +1,11 @@ -#!/bin/sh -# +#!/bin/bash +# # Plugin to monitor the queues of a virtual_host in RabbitMQ # # Usage: Link or copy into /etc/munin/node.d/ # # Parameters # env.vhost -# env.queue_warn -# env.queue_crit # # Magic markers (optional - only used by munin-config and some # installation scripts): @@ -26,28 +24,23 @@ if [ "$1" = "autoconf" ]; then fi # If run with the "config"-parameter, give out information on how the -# graphs should look. +# graphs should look. HOME=/tmp/ VHOST=${vhost:-"/"} -QUEUES=$(HOME=$HOME rabbitmqctl list_queues -p $VHOST name | \ - grep -v '^Listing' | \ - grep -v 'done\.$' | sed -e 's/[.=-]/_/g' ) - -if [ "$1" = "config" ]; then - QUEUE_WARN=${queue_warn:-10000} - QUEUE_CRIT=${queue_crit:-20000} +QUEUES=$(HOME=$HOME rabbitmqctl list_queues -p $VHOST name | grep -v '^Listing' | grep -v 'done\.$' | grep -v "\.\.\." | sed 's/[^a-z0-9]\+/_/g') +if [ "$1" = "config" ]; then # 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 Unacknowledged Messages" + echo "graph_title RabbitMQ $VHOST Disk activity by queue" # 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' + echo 'graph_args --base 1000 --vertical-label Messages -l 0' # The Y-axis label - echo 'graph_vlabel unacknowledged' + echo 'graph_vlabel disk' # We want Cur/Min/Avg/Max unscaled (i.e. 0.42 load instead of # 420 milliload) #echo 'graph_scale no' @@ -55,12 +48,10 @@ if [ "$1" = "config" ]; then for queue in $QUEUES; do echo "$queue.label $queue" - echo "$queue.warning $QUEUE_WARN" - echo "$queue.critical $QUEUE_CRIT" - echo "$queue.info Unacknowledged messages for $queue" + echo "$queue.info Memory used by $queue" done - echo 'graph_info Lists how many messages are in each queue.' + echo 'graph_info Show disk activity by queue' # Last, if run with the "config"-parameter, quit here (don't # display any data) exit 0 @@ -70,5 +61,16 @@ fi # real work - i.e. display the data. Almost always this will be # "value" subfield for every data field. +IFS=$'\n' +for line in $(HOME=$HOME rabbitmqctl list_queues -p $VHOST name disk_reads disk_writes | grep -v "^Listing" | grep -v "done.$" | grep -v "\.\.\."); do + echo -n "$line" | cut -f1 | tr -d '\n' | sed 's/[^a-z0-9]\+/_/g' + echo -n ".read_count.value " + echo -n "$line" | cut -f2 | tr -d '\n' + echo "" -HOME=$HOME rabbitmqctl list_queues -p $VHOST name messages_unacknowledged | grep -v "^Listing" | grep -v "done.$" | sed "s/[\t]/.value /g" + echo -n "$line" | cut -f1 | tr -d '\n' | sed 's/[^a-z0-9]\+/_/g' + echo -n ".write_count.value " + echo -n "$line" | cut -f3 | tr -d '\n' + echo "" +done +IFS=$' \t\n' diff --git a/rabbitmq_queue_memory b/rabbitmq_queue_memory index c0b3d83..1528f51 100755 --- a/rabbitmq_queue_memory +++ b/rabbitmq_queue_memory @@ -1,5 +1,5 @@ -#!/bin/sh -# +#!/bin/bash +# # Plugin to monitor the queues of a virtual_host in RabbitMQ # # Usage: Link or copy into /etc/munin/node.d/ @@ -26,17 +26,15 @@ if [ "$1" = "autoconf" ]; then fi # If run with the "config"-parameter, give out information on how the -# graphs should look. +# graphs should look. HOME=/tmp/ VHOST=${vhost:-"/"} -QUEUES=$(rabbitmqctl list_queues -p $VHOST name | \ - grep -v '^Listing' | \ - grep -v 'done\.$' | sed -e 's/[.=-]/_/g' ) - +QUEUES=$(HOME=$HOME rabbitmqctl list_queues -p $VHOST name | grep -v '^Listing' | grep -v 'done\.$' | grep -v "\.\.\." | sed 's/[^a-z0-9]\+/_/g') + if [ "$1" = "config" ]; then - QUEUE_WARN=${queue_warn:-10000} - QUEUE_CRIT=${queue_crit:-20000} + 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) @@ -70,4 +68,11 @@ fi # real work - i.e. display the data. Almost always this will be # "value" subfield for every data field. -HOME=$HOME rabbitmqctl list_queues -p $VHOST name memory | grep -v "^Listing" | grep -v "done.$" | sed "s/[\t]/.value /g" +IFS=$'\n' +for line in $(HOME=$HOME rabbitmqctl list_queues -p $VHOST name memory | grep -v "^Listing" | grep -v "done.$" | grep -v "\.\.\."); do + echo -n "$line" | cut -f1 | tr -d '\n' | sed 's/[^a-z0-9]\+/_/g' + echo -n ".used.value " + echo -n "$line" | cut -f2 | tr -d '\n' + echo "" +done +IFS=$' \t\n' diff --git a/rabbitmq_messages b/rabbitmq_queue_messages similarity index 63% rename from rabbitmq_messages rename to rabbitmq_queue_messages index 436c203..a8ee16b 100755 --- a/rabbitmq_messages +++ b/rabbitmq_queue_messages @@ -1,5 +1,5 @@ -#!/bin/sh -# +#!/bin/bash +# # Plugin to monitor the queues of a virtual_host in RabbitMQ # # Usage: Link or copy into /etc/munin/node.d/ @@ -26,17 +26,15 @@ if [ "$1" = "autoconf" ]; then fi # If run with the "config"-parameter, give out information on how the -# graphs should look. +# graphs should look. HOME=/tmp/ VHOST=${vhost:-"/"} -QUEUES=$(HOME=$HOME rabbitmqctl list_queues -p $VHOST name | \ - grep -v '^Listing' | \ - grep -v 'done\.$' | sed -e 's/[.=-]/_/g' ) - +QUEUES=$(HOME=$HOME rabbitmqctl list_queues -p $VHOST name | grep -v '^Listing' | grep -v 'done\.$' | grep -v "\.\.\." | sed 's/[^a-z0-9]\+/_/g') + if [ "$1" = "config" ]; then - QUEUE_WARN=${queue_warn:-10000} - QUEUE_CRIT=${queue_crit:-20000} + 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) @@ -70,4 +68,26 @@ fi # real work - i.e. display the data. Almost always this will be # "value" subfield for every data field. -HOME=$HOME rabbitmqctl list_queues -p $VHOST | grep -v "^Listing" | grep -v "done.$" | grep -v "\.\.\." | sed "s/[\t]/.value /g" +IFS=$'\n' +for line in $(HOME=$HOME rabbitmqctl list_queues -p $VHOST name messages messages_ready messages_unacknowledged messages_persistent | grep -v "^Listing" | grep -v "done.$" | grep -v "\.\.\."); do + echo -n "$line" | cut -f1 | tr -d '\n' | sed 's/[^a-z0-9]\+/_/g' + echo -n ".total.value " + echo -n "$line" | cut -f2 | tr -d '\n' + echo "" + + echo -n "$line" | cut -f1 | tr -d '\n' | sed 's/[^a-z0-9]\+/_/g' + echo -n ".ready.value " + echo -n "$line" | cut -f3 | tr -d '\n' + echo "" + + echo -n "$line" | cut -f1 | tr -d '\n' | sed 's/[^a-z0-9]\+/_/g' + echo -n ".unacknowledged.value " + echo -n "$line" | cut -f4 | tr -d '\n' + echo "" + + echo -n "$line" | cut -f1 | tr -d '\n' | sed 's/[^a-z0-9]\+/_/g' + echo -n ".persistent.value " + echo -n "$line" | cut -f5 | tr -d '\n' + echo "" +done +IFS=$' \t\n'