From 7a96e905713a15bee7b6a3eab5f2c6d10154a873 Mon Sep 17 00:00:00 2001 From: Jimmy Jones Date: Fri, 7 Dec 2012 13:18:19 -0800 Subject: [PATCH 1/2] 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) + From c87caf6cd755943b019e07779e15aea91e08edfb Mon Sep 17 00:00:00 2001 From: Jimmy Jones Date: Thu, 24 Jan 2013 12:19:41 -0800 Subject: [PATCH 2/2] Add licence and more description --- plugins/qpid/qpid_bytedepth | 4 ++++ plugins/qpid/qpid_discardsring | 4 ++++ plugins/qpid/qpid_enqueuebytes | 4 ++++ plugins/qpid/qpid_enqueuecount | 4 ++++ plugins/qpid/qpid_msgdepth | 4 ++++ 5 files changed, 20 insertions(+) diff --git a/plugins/qpid/qpid_bytedepth b/plugins/qpid/qpid_bytedepth index e89d506f..43959fe8 100755 --- a/plugins/qpid/qpid_bytedepth +++ b/plugins/qpid/qpid_bytedepth @@ -1,12 +1,16 @@ #!/usr/bin/env python # # Plugin to monitor Apache Qpid +# - graphs the number of outstanding bytes on queue(s) specified in config # # Parameters understood: # # queues (required) - space separated list of queues to display (regex allowed) # # Made by Jimmy Jones (jimmyjones2 AT gmx DOT co DOT uk) +# +# Licence: GPLv2 +# import re import sys diff --git a/plugins/qpid/qpid_discardsring b/plugins/qpid/qpid_discardsring index f2a12e5d..62d85d1b 100755 --- a/plugins/qpid/qpid_discardsring +++ b/plugins/qpid/qpid_discardsring @@ -1,12 +1,16 @@ #!/usr/bin/env python # # Plugin to monitor Apache Qpid +# - graphs the number of messages discarded from queue(s) specified in config # # Parameters understood: # # queues (required) - space separated list of queues to display (regex allowed) # # Made by Jimmy Jones (jimmyjones2 AT gmx DOT co DOT uk) +# +# Licence: GPLv2 +# import re import sys diff --git a/plugins/qpid/qpid_enqueuebytes b/plugins/qpid/qpid_enqueuebytes index c2713a01..8afc420f 100755 --- a/plugins/qpid/qpid_enqueuebytes +++ b/plugins/qpid/qpid_enqueuebytes @@ -1,12 +1,16 @@ #!/usr/bin/env python # # Plugin to monitor Apache Qpid +# - graph ingest rate (bytes/sec) of queue(s) specified in config # # Parameters understood: # # queues (required) - space separated list of queues to display (regex allowed) # # Made by Jimmy Jones (jimmyjones2 AT gmx DOT co DOT uk) +# +# Licence: GPLv2 +# import re import sys diff --git a/plugins/qpid/qpid_enqueuecount b/plugins/qpid/qpid_enqueuecount index 38c34381..45420d89 100755 --- a/plugins/qpid/qpid_enqueuecount +++ b/plugins/qpid/qpid_enqueuecount @@ -1,12 +1,16 @@ #!/usr/bin/env python # # Plugin to monitor Apache Qpid +# - graphs ingest rate (messages/sec) of queue(s) specified in config # # Parameters understood: # # queues (required) - space separated list of queues to display (regex allowed) # # Made by Jimmy Jones (jimmyjones2 AT gmx DOT co DOT uk) +# +# Licence: GPLv2 +# import re import sys diff --git a/plugins/qpid/qpid_msgdepth b/plugins/qpid/qpid_msgdepth index c68616b8..33143d00 100755 --- a/plugins/qpid/qpid_msgdepth +++ b/plugins/qpid/qpid_msgdepth @@ -1,12 +1,16 @@ #!/usr/bin/env python # # Plugin to monitor Apache Qpid +# - graphs the number of outstanding messages on queue(s) specified in config # # Parameters understood: # # queues (required) - space separated list of queues to display (regex allowed) # # Made by Jimmy Jones (jimmyjones2 AT gmx DOT co DOT uk) +# +# Licence: GPLv2 +# import re import sys