From 7a96e905713a15bee7b6a3eab5f2c6d10154a873 Mon Sep 17 00:00:00 2001 From: Jimmy Jones Date: Fri, 7 Dec 2012 13:18:19 -0800 Subject: [PATCH] Add Munin scripts for Apache Qpid monitoring --- plugins/qpid/qpid_bytedepth | 44 ++++++++++++++++++++++++++++++++++ plugins/qpid/qpid_discardsring | 44 ++++++++++++++++++++++++++++++++++ plugins/qpid/qpid_enqueuebytes | 44 ++++++++++++++++++++++++++++++++++ plugins/qpid/qpid_enqueuecount | 44 ++++++++++++++++++++++++++++++++++ plugins/qpid/qpid_msgdepth | 44 ++++++++++++++++++++++++++++++++++ 5 files changed, 220 insertions(+) create mode 100755 plugins/qpid/qpid_bytedepth create mode 100755 plugins/qpid/qpid_discardsring create mode 100755 plugins/qpid/qpid_enqueuebytes create mode 100755 plugins/qpid/qpid_enqueuecount create mode 100755 plugins/qpid/qpid_msgdepth diff --git a/plugins/qpid/qpid_bytedepth b/plugins/qpid/qpid_bytedepth new file mode 100755 index 00000000..e89d506f --- /dev/null +++ b/plugins/qpid/qpid_bytedepth @@ -0,0 +1,44 @@ +#!/usr/bin/env python +# +# Plugin to monitor Apache Qpid +# +# Parameters understood: +# +# queues (required) - space separated list of queues to display (regex allowed) +# +# Made by Jimmy Jones (jimmyjones2 AT gmx DOT co DOT uk) + +import re +import sys +import os +from qmf.console import Session + +if not "queues" in os.environ: + print >> sys.stderr, "Missing env.queues in config" + sys.exit(-1) + +output_queue = [] +sess = Session() +broker = sess.addBroker() +queues = sess.getObjects(_class="queue", _package="org.apache.qpid.broker") +for q in queues: + for match in os.environ["queues"].split(" "): + if re.match(match, q.name): + output_queue.append(re.sub('[^a-zA-Z0-9_]', '_', q.name)) + +if len(sys.argv) > 1 and sys.argv[1] == "config": + print "graph_category Qpid"; + print "graph_title Queue byte depth"; + print "graph_vlabel bytes" + for queue in output_queue: + print "%s.label %s" % (queue, queue) + print "%s.min 0" % queue + print "%s.type GAUGE" % queue +else: + for q in queues: + qname = re.sub('[^a-zA-Z0-9_]', '_', q.name) + if qname in output_queue: + print "%s.value %u" % (qname, q.byteDepth) + +sess.delBroker(broker) + diff --git a/plugins/qpid/qpid_discardsring b/plugins/qpid/qpid_discardsring new file mode 100755 index 00000000..f2a12e5d --- /dev/null +++ b/plugins/qpid/qpid_discardsring @@ -0,0 +1,44 @@ +#!/usr/bin/env python +# +# Plugin to monitor Apache Qpid +# +# Parameters understood: +# +# queues (required) - space separated list of queues to display (regex allowed) +# +# Made by Jimmy Jones (jimmyjones2 AT gmx DOT co DOT uk) + +import re +import sys +import os +from qmf.console import Session + +if not "queues" in os.environ: + print >> sys.stderr, "Missing env.queues in config" + sys.exit(-1) + +output_queue = [] +sess = Session() +broker = sess.addBroker() +queues = sess.getObjects(_class="queue", _package="org.apache.qpid.broker") +for q in queues: + for match in os.environ["queues"].split(" "): + if re.match(match, q.name): + output_queue.append(re.sub('[^a-zA-Z0-9_]', '_', q.name)) + +if len(sys.argv) > 1 and sys.argv[1] == "config": + print "graph_category Qpid"; + print "graph_title Ring queue discard rate"; + print "graph_vlabel messages/second"; + for queue in output_queue: + print "%s.label %s" % (queue, queue) + print "%s.min 0" % queue + print "%s.type COUNTER" % queue +else: + for q in queues: + qname = re.sub('[^a-zA-Z0-9_]', '_', q.name) + if qname in output_queue: + print "%s.value %u" % (qname, q.discardsRing) + +sess.delBroker(broker) + diff --git a/plugins/qpid/qpid_enqueuebytes b/plugins/qpid/qpid_enqueuebytes new file mode 100755 index 00000000..c2713a01 --- /dev/null +++ b/plugins/qpid/qpid_enqueuebytes @@ -0,0 +1,44 @@ +#!/usr/bin/env python +# +# Plugin to monitor Apache Qpid +# +# Parameters understood: +# +# queues (required) - space separated list of queues to display (regex allowed) +# +# Made by Jimmy Jones (jimmyjones2 AT gmx DOT co DOT uk) + +import re +import sys +import os +from qmf.console import Session + +if not "queues" in os.environ: + print >> sys.stderr, "Missing env.queues in config" + sys.exit(-1) + +output_queue = [] +sess = Session() +broker = sess.addBroker() +queues = sess.getObjects(_class="queue", _package="org.apache.qpid.broker") +for q in queues: + for match in os.environ["queues"].split(" "): + if re.match(match, q.name): + output_queue.append(re.sub('[^a-zA-Z0-9_]', '_', q.name)) + +if len(sys.argv) > 1 and sys.argv[1] == "config": + print "graph_category Qpid"; + print "graph_title Enqueue data rate"; + print "graph_vlabel bytes/second" + for queue in output_queue: + print "%s.label %s" % (queue, queue) + print "%s.min 0" % queue + print "%s.type COUNTER" % queue +else: + for q in queues: + qname = re.sub('[^a-zA-Z0-9_]', '_', q.name) + if qname in output_queue: + print "%s.value %u" % (qname, q.byteTotalEnqueues) + +sess.delBroker(broker) + diff --git a/plugins/qpid/qpid_enqueuecount b/plugins/qpid/qpid_enqueuecount new file mode 100755 index 00000000..38c34381 --- /dev/null +++ b/plugins/qpid/qpid_enqueuecount @@ -0,0 +1,44 @@ +#!/usr/bin/env python +# +# Plugin to monitor Apache Qpid +# +# Parameters understood: +# +# queues (required) - space separated list of queues to display (regex allowed) +# +# Made by Jimmy Jones (jimmyjones2 AT gmx DOT co DOT uk) + +import re +import sys +import os +from qmf.console import Session + +if not "queues" in os.environ: + print >> sys.stderr, "Missing env.queues in config" + sys.exit(-1) + +output_queue = [] +sess = Session() +broker = sess.addBroker() +queues = sess.getObjects(_class="queue", _package="org.apache.qpid.broker") +for q in queues: + for match in os.environ["queues"].split(" "): + if re.match(match, q.name): + output_queue.append(re.sub('[^a-zA-Z0-9_]', '_', q.name)) + +if len(sys.argv) > 1 and sys.argv[1] == "config": + print "graph_category Qpid"; + print "graph_title Enqueue message rate"; + print "graph_vlabel messages/second" + for queue in output_queue: + print "%s.label %s" % (queue, queue) + print "%s.min 0" % queue + print "%s.type COUNTER" % queue +else: + for q in queues: + qname = re.sub('[^a-zA-Z0-9_]', '_', q.name) + if qname in output_queue: + print "%s.value %u" % (qname, q.msgTotalEnqueues) + +sess.delBroker(broker) + diff --git a/plugins/qpid/qpid_msgdepth b/plugins/qpid/qpid_msgdepth new file mode 100755 index 00000000..c68616b8 --- /dev/null +++ b/plugins/qpid/qpid_msgdepth @@ -0,0 +1,44 @@ +#!/usr/bin/env python +# +# Plugin to monitor Apache Qpid +# +# Parameters understood: +# +# queues (required) - space separated list of queues to display (regex allowed) +# +# Made by Jimmy Jones (jimmyjones2 AT gmx DOT co DOT uk) + +import re +import sys +import os +from qmf.console import Session + +if not "queues" in os.environ: + print >> sys.stderr, "Missing env.queues in config" + sys.exit(-1) + +output_queue = [] +sess = Session() +broker = sess.addBroker() +queues = sess.getObjects(_class="queue", _package="org.apache.qpid.broker") +for q in queues: + for match in os.environ["queues"].split(" "): + if re.match(match, q.name): + output_queue.append(re.sub('[^a-zA-Z0-9_]', '_', q.name)) + +if len(sys.argv) > 1 and sys.argv[1] == "config": + print "graph_category Qpid"; + print "graph_title Queue message depth"; + print "graph_vlabel messages" + for queue in output_queue: + print "%s.label %s" % (queue, queue) + print "%s.min 0" % queue + print "%s.type GAUGE" % queue +else: + for q in queues: + qname = re.sub('[^a-zA-Z0-9_]', '_', q.name) + if qname in output_queue: + print "%s.value %u" % (qname, q.msgDepth) + +sess.delBroker(broker) +