#!/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
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 webserver";
  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)

