def run(): monitor = Monitor() while True: try: monitor.check() except Exception, e: log.error(e) time.sleep(ConfUtil.getCycle())
def index(): try: addrList = ConfUtil.getMQAddrList() addr = request.args.get('addr', addrList[0]) queues = MQService.getQueues(addr) addrList.remove(addr) addrList.insert(0, addr) except Exception, e: log.error(e)
def sendMultiMail(data): print data try: server = smtplib.SMTP(smtpServer, smtpPort) server.set_debuglevel(1) server.login(fromAddr, password) for (mail, content) in data.items(): if len(content) == 0: continue message = MIMEText('\n'.join(content), 'plain', 'utf-8') message['Subject'] = Header(u'RabbitMQ报警', 'utf-8').encode() server.sendmail(fromAddr, mail, message.as_string()) except Exception, e: log.error(e)
def check(self): mailContent = {} for mail in ConfUtil.getGlobalMailList(): mailContent[mail.strip()] = [] for addr in self.__addrList: overviewUrl = 'http://' + addr.strip() + '/api/overview' try: res = requests.get(overviewUrl, auth=(self.__username, self.__password)) except ConnectionError, e: for mail in ConfUtil.getGlobalMailList(): mailContent[mail].append(addr + ' is dead.') continue queueUrl = 'http://' + addr.strip() + '/api/queues' res = requests.get(queueUrl, auth=(self.__username, self.__password)) for queue in json.loads(res.text): queueName = queue.get('name') if queueName in ConfUtil.getIgnoreQueueList(): continue messages = queue.get('messages', 0) doc = MonitorDao.findQueue(addr, queueName) if doc == None: if messages > ConfUtil.getGlobalMsgTotalMax(): alarm = addr + ', ' + queueName + ', ' + 'msgTotal is ' + str( messages) + '(' + str( ConfUtil.getGlobalMsgTotalMax()) + ').' for mail in ConfUtil.getGlobalMailList(): mailContent[mail].append(alarm) else: try: msgTotalMax = 0 if len(doc.get('msgTotalMax')) > 0: msgTotalMax = (int)(doc.get('msgTotalMax')) except Exception, e: log.error(doc) mailList = doc.get('mailList') if messages > msgTotalMax: alarm = addr + ', ' + queueName + ', ' + 'msgTotal is ' + str( messages) + '(' + str(msgTotalMax) + ').' for mail in mailList: if mailContent.get(mail) == None: mailContent[mail] = [] mailContent[mail.strip()].append(alarm)
def check(self): mailContent = {} for mail in ConfUtil.getGlobalMailList(): mailContent[mail.strip()] = [] for addr in self.__addrList: overviewUrl = 'http://' + addr.strip() + '/api/overview' try: res = requests.get(overviewUrl, auth=(self.__username, self.__password)) except ConnectionError, e: for mail in ConfUtil.getGlobalMailList(): mailContent[mail].append(addr + ' is dead.') continue queueUrl = 'http://' + addr.strip() + '/api/queues' res = requests.get(queueUrl, auth=(self.__username, self.__password)) for queue in json.loads(res.text): queueName = queue.get('name') if queueName in ConfUtil.getIgnoreQueueList(): continue messages = queue.get('messages', 0) doc = MonitorDao.findQueue(addr, queueName) if doc == None: if messages > ConfUtil.getGlobalMsgTotalMax(): alarm = addr + ', ' + queueName + ', ' + 'msgTotal is ' + str(messages) + '(' + str(ConfUtil.getGlobalMsgTotalMax()) + ').' for mail in ConfUtil.getGlobalMailList(): mailContent[mail].append(alarm) else: try: msgTotalMax = 0 if len(doc.get('msgTotalMax')) > 0: msgTotalMax = (int)(doc.get('msgTotalMax')) except Exception, e: log.error(doc) mailList = doc.get('mailList') if messages > msgTotalMax: alarm = addr + ', ' + queueName + ', ' + 'msgTotal is ' + str(messages) + '(' + str(msgTotalMax) + ').' for mail in mailList: if mailContent.get(mail) == None: mailContent[mail] = [] mailContent[mail.strip()].append(alarm)