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
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)
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)