From b7d4f92ad22336b417ebe6ef471c0fd1229a993e Mon Sep 17 00:00:00 2001 From: Jeremy Lecour Date: Wed, 29 Nov 2017 14:17:38 +0100 Subject: [PATCH] rabbitmq: add a munin plugin --- rabbitmq/files/rabbitmq_connections | 66 +++++++++++++++++++++++++++++ rabbitmq/handlers/main.yml | 6 ++- rabbitmq/tasks/main.yml | 11 +++++ rabbitmq/tasks/munin.yml | 45 ++++++++++++++++++++ 4 files changed, 127 insertions(+), 1 deletion(-) create mode 100644 rabbitmq/files/rabbitmq_connections create mode 100644 rabbitmq/tasks/munin.yml diff --git a/rabbitmq/files/rabbitmq_connections b/rabbitmq/files/rabbitmq_connections new file mode 100644 index 00000000..fb254604 --- /dev/null +++ b/rabbitmq/files/rabbitmq_connections @@ -0,0 +1,66 @@ +#!/bin/sh +# +# Plugin to monitor the number of connections to RabbitMQ +# +# Usage: Link or copy into /etc/munin/node.d/ +# +# Parameters +# env.conn_warn +# env.conn_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 + +HOME=/tmp/ + +# If run with the "config"-parameter, give out information on how the +# graphs should look. + +if [ "$1" = "config" ]; then + 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) + + # The title of the graph + echo 'graph_title RabbitMQ connections' + # 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 connections' + # We want Cur/Min/Avg/Max unscaled (i.e. 0.42 load instead of + # 420 milliload) + #echo 'graph_scale no' + echo 'graph_category RabbitMQ' + + echo "connections.label Connections" + echo "connections.warning $CONN_WARN" + echo "connections.critical $CONN_CRIT" + echo "connections.info Number of active connections" + + echo 'graph_info Shows the number of connections to RabbitMQ' + # 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. + +echo "connections.value $(HOME=$HOME rabbitmqctl list_connections | grep -v "^Listing" | grep -v "done.$" | wc -l)" diff --git a/rabbitmq/handlers/main.yml b/rabbitmq/handlers/main.yml index 4163ca25..9f73baa6 100644 --- a/rabbitmq/handlers/main.yml +++ b/rabbitmq/handlers/main.yml @@ -4,8 +4,12 @@ name: rabbitmq-server state: restarted - - name: restart nagios-nrpe-server service: name: nagios-nrpe-server state: restarted + +- name: restart munin-node + service: + name: munin-node + state: restarted diff --git a/rabbitmq/tasks/main.yml b/rabbitmq/tasks/main.yml index 0002ed26..b251276d 100644 --- a/rabbitmq/tasks/main.yml +++ b/rabbitmq/tasks/main.yml @@ -38,3 +38,14 @@ - include: nrpe.yml when: nrpe_evolix_config.stat.exists + +- name: is Munin present ? + stat: + path: /etc/munin + check_mode: no + register: etc_munin_directory + tags: + - nrpe + +- include: munin.yml + when: etc_munin_directory.stat.exists diff --git a/rabbitmq/tasks/munin.yml b/rabbitmq/tasks/munin.yml new file mode 100644 index 00000000..1b410d37 --- /dev/null +++ b/rabbitmq/tasks/munin.yml @@ -0,0 +1,45 @@ +--- + +- include_role: + name: remount-usr + tags: + - rabbitmq + - munin + +- name: Create local munin directory + file: + name: /usr/local/share/munin/ + state: directory + mode: "0755" + tags: + - rabbitmq + - munin + +- name: Create local plugins directory + file: + name: /usr/local/share/munin/plugins/ + state: directory + mode: "0755" + tags: + - rabbitmq + - munin + +- name: Copy rabbitmq_connections munin plugin + copy: + src: rabbitmq_connections + dest: /usr/local/share/munin/plugins/rabbitmq_connections + mode: "0755" + notify: restart munin-node + tags: + - rabbitmq + - munin + +- name: Enable rabbitmq_connections munin plugin + file: + src: /usr/local/share/munin/plugins/rabbitmq_connections + dest: "/etc/munin/plugins/rabbitmq_connections" + state: link + notify: restart munin-node + tags: + - rabbitmq + - munin