def run(self): while 1: #try: ins = queue_moniting.get(True) instance_result = dict() moniting_state = eval(ins['moniting_state']) ipaddress = eval(ins['ipaddress']) ping = moniting_state['ping'] arp = moniting_state['arp'] tcp = moniting_state['tcp'] udp = moniting_state['udp'] if ipaddress: instance_result['uuid'] = ins['uuid'] for ip in ipaddress: instance_result[ip] = dict() if ping: instance_result[ip]['ping'] = 1 if icmp_checker.check_icmp(ip) == True else 0 if arp: instance_result[ip]['arp'] = 1 if arp_checker.check_arp(ip) == True else 0 if tcp: instance_result[ip]['tcp'] = dict() if isinstance(tcp,unicode): # if tcp is unicode string, means that's only one port. port = tcp instance_result[ip]['tcp'][port] = 1 if tcp_checker.check_tcp(ip,int(port)) == True else 0 else: for port in tcp: instance_result[ip]['tcp'][port] = 1 if tcp_checker.check_tcp(ip,int(port)) == True else 0 if udp: instance_result[ip]['udp'] = dict() if isinstance(udp,unicode): # if tcp is unicode string, means that's only one port. port = udp instance_result[ip]['udp'][port] = 1 if udp_checker.checker_udp(ip,int(port)) == True else 0 else: for port in udp: instance_result[ip]['udp'][port] = 1 if udp_checker.checker_udp(ip,int(port)) == True else 0 # send notification to user, use http or sms send_notification(instance_result,'moniting') # save last notification, used in next time save_one_notification(instance_result,'moniting') q = self.session.query(Instances).filter(Instances.uuid==ins['uuid']) if q.all(): q.update( {Instances.moniting_state:simplejson.dumps(instance_result)} ) self.session.commit() #except: # pass # dont forget to close session at the end self.session.close()
def check_moniting_state_icmp(i): while 1: #try: session = Session() ins = queue_moniting.get(True) print "Greenlets %s got : %s" % (i,time.asctime()), " " , ins instance_result = dict() moniting_state = eval(ins['moniting_state']) ipaddress = eval(ins['ipaddress']) ping = moniting_state['ping'] arp = moniting_state['arp'] tcp = moniting_state['tcp'] udp = moniting_state['udp'] if ipaddress: instance_result['uuid'] = ins['uuid'] for ip in ipaddress: instance_result[ip] = dict() if ping: instance_result[ip]['ping'] = 1 if icmp_checker_gevent.check_icmp(ip) == True else 0 #if arp: # instance_result[ip]['arp'] = 1 if arp_checker_gevent.check_arp(ip) == True else 0 #if tcp: # instance_result[ip]['tcp'] = dict() # if isinstance(tcp,unicode): # # if tcp is unicode string, means that's only one port. # port = tcp # instance_result[ip]['tcp'][port] = 1 if tcp_checker_gevent.check_tcp(ip,int(port)) == True else 0 # else: # for port in tcp: # instance_result[ip]['tcp'][port] = 1 if tcp_checker_gevent.check_tcp(ip,int(port)) == True else 0 ##if udp: # instance_result[ip]['udp'] = dict() # if isinstance(udp,unicode): # # if tcp is unicode string, means that's only one port. # port = udp # instance_result[ip]['udp'][port] = 1 if udp_checker.checker_udp(ip,int(port)) == True else 0 # else: # for port in udp: # instance_result[ip]['udp'][port] = 1 if udp_checker.checker_udp(ip,int(port)) == True else 0 print "Greenlets moniting %s got : %s" % (i,time.asctime()) , instance_result # send notification to user, use http or sms send_notification(instance_result,'moniting') # save last notification, used in next time save_one_notification(instance_result,'moniting') q = session.query(Instances).filter(Instances.uuid==ins['uuid']) if q.all(): q.update( {Instances.moniting_state:simplejson.dumps(instance_result)} ) session.commit()
nics_rx_bytes_max.append(int(v['rx_bytes'])) nics_tx_bytes_max.append(int(v['tx_bytes'])) rx_bytes_max = max(nics_rx_bytes_max) tx_bytes_max = max(nics_tx_bytes_max) if (rx_bytes_max > bandwidth_usage_warnning and rx_bytes_max < bandwidth_usage_critical) or \ (tx_bytes_max > bandwidth_usage_warnning and tx_bytes_max < bandwidth_usage_critical): notification_result['bandwidth_usage'] = 1 if rx_bytes_max <= bandwidth_usage_warnning or tx_bytes_max <= bandwidth_usage_warnning: notification_result['bandwidth_usage'] = 0 if rx_bytes_max >= bandwidth_usage_critical or tx_bytes_max >= bandwidth_usage_critical: notification_result['bandwidth_usage'] = 2 # send notification to user, use http or sms send_notification(notification_result,'notification') # save last notification, used in next time save_one_notification(notification_result,'monitifaction') return notification_result def send_notification(result,result_type): """ process message from moniting and notification and send to sms or http. """ # process for notification message if result_type == "notification": s_data = dict() failed_item = 0 s_data['type'] = 'notification' s_data['notification_type'] = 0