Ejemplo n.º 1
0
	def monitor_qpid(self):
		
		self.logger.debug("Staring monitoring...")
		
		# Create an instance of the QMF session manager.  Set userBindings to True to allow
		# this program to choose which objects classes it is interested in.
		sess = Session(self, manageConnections=True, rcvEvents=False, userBindings=True)
		
		# Register to receive updates for broker:queue objects.
		sess.bindClass("org.apache.qpid.broker", "queue")
		sess.bindClass("org.apache.qpid.broker", "exchange")
		broker = sess.addBroker()
		
		self.monitor = True
		while(self.monitor):
			sleep(1)
		
		self.logger.debug("monitor set to false, therefore stopping monitor")
		# Disconnect the broker before exiting
		sess.delBroker(broker)
		sess = None
Ejemplo n.º 2
0
class MintSession(object):
    def __init__(self, app, broker_uris):
        self.app = app
        self.broker_uris = broker_uris

        self.qmf_session = None
        self.qmf_brokers = list()

    def add_broker(self, uri):
        mechs = get_sasl_mechanisms(uri, self.app.sasl_mech_list)
        uri_without_password = uri[uri.rfind("@") + 1:]
        log.info("Adding QMF broker at %s with mech_list %s", uri_without_password, mechs)

        assert self.qmf_session

        qmf_broker = self.qmf_session.addBroker(uri, mechanisms=mechs)
        self.qmf_brokers.append(qmf_broker)

    def check(self):
        log.info("Checking %s", self)

    def init(self):
        log.info("Initializing %s", self)

    def init_qmf_classes(self):
        # Apply the package filter to the class list
        if len(self.app.qmf_classes):
            black_list = set()
            for cls in self.app.qmf_classes:
                if cls._package._name in self.app.qmf_package_filter:
                    black_list.add(cls)
            self.app.qmf_classes.difference_update(black_list)
        else:
            # Generate the package list from the model, minus
            # the package filter
            for pkg in self.app.model._packages:
                if pkg._name not in self.app.qmf_package_filter:
                    self.app.qmf_packages.add(pkg)

    def start(self):
        log.info("Starting %s", self)

        assert self.qmf_session is None

        self.qmf_session = Session(MintConsole(self.app.model),
                                   manageConnections=True,
                                   rcvObjects=True,
                                   rcvEvents=False,
                                   rcvHeartbeats=False,
                                   userBindings=True)

        if len(self.app.qmf_agents):
            for agent in self.app.qmf_agents:
                if len(agent) == 1:
                    self.qmf_session.bindAgent(label=agent[0])
                    log.info("Binding agent, label is %s" % agent[0])
                else:
                    self.qmf_session.bindAgent(vendor=agent[0], 
                                               product=agent[1], 
                                               instance=agent[2])
                    log.info("Binding agent %s:%s:%s" % (agent[0],agent[1],agent[2])) 
                    
        else:
            self.qmf_session.bindAgent("*")
            log.info("Binding all agents")
   
        # Handle bind by class
        if len(self.app.qmf_classes):
            for cls in self.app.qmf_classes:
                pname = cls._package._name
                cname = cls._name
                self.qmf_session.bindClass(pname.lower(), cname.lower())
                log.info("Binding QMF class %s.%s" % (pname, cname))
        else:            
            # Handle bind by package
            for pkg in self.app.qmf_packages:
                self.qmf_session.bindPackage(pkg._name.lower())
                log.info("Binding QMF package %s" % pkg._name)

        for uri in self.broker_uris:
            self.add_broker(uri)

    def stop(self):
        log.info("Stopping %s", self)

        for qmf_broker in self.qmf_brokers:
            self.qmf_session.delBroker(qmf_broker)

    def __repr__(self):
        uris_without_password = [x[x.rfind("@")+1:]  for x in self.broker_uris]
        return "%s(%s)" % (self.__class__.__name__, uris_without_password)
Ejemplo n.º 3
0
    host = "127.0.0.1"
    port = 12345
    #self.send_to_splunk(host, port, "queue=%s,enqueues=%d,dequeues=%d,queue_size_count=%d,queue_size_bytes=%d,consumers=%d,consumers_high=%d,consumers_low=%d, bindings=%d, bindings_high=%d, bindings_low=%d" %  (queue_name,total_enqueues,total_dequeues,queue_size_count,queue_size_bytes,consumer_count,consumer_high,consumer_low,binding_count,binding_high, binding_low))
    # if the delete-time is non-zero, this object has been deleted.  Remove it from the map.
    if record.getTimestamps()[2] > 0:
      queueMap.pop(oid)

    def send_to_splunk(self, host, port, message):
        s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        s.connect((host, port))
        s.sendall(message)
        s.close()

# Create an instance of the QMF session manager.  Set userBindings to True to allow
# this program to choose which objects classes it is interested in.
sess = Session(MyConsole(), manageConnections=True, rcvEvents=False, userBindings=True)

# Register to receive updates for broker:queue objects.
sess.bindClass("org.apache.qpid.broker", "queue")
broker = sess.addBroker()

# Suspend processing while the asynchronous operations proceed.
try:
  while True:
    sleep(1)
except:
  pass

# Disconnect the broker before exiting.
sess.delBroker(broker)