Exemplo n.º 1
0
    def __init__(self):
        self.manager_list = []

        self.rule_manager = AlarmRuleManager()
        self.manager_list.append(self.rule_manager)

        self.data_manager = AlarmDataManager()
        self.manager_list.append(self.data_manager)

        self.exp_manager = AlarmExpManager()
        self.manager_list.append(self.exp_manager)

        self.cb_manager = AlarmCallbackManager()
        self.manager_list.append(self.cb_manager)

        self.stop = False
Exemplo n.º 2
0
 def __init__(self):
     self.manager_list = []
     
     self.rule_manager = AlarmRuleManager()
     self.manager_list.append(self.rule_manager)
     
     self.data_manager = AlarmDataManager()
     self.manager_list.append(self.data_manager)
     
     self.exp_manager = AlarmExpManager()
     self.manager_list.append(self.exp_manager)
     
     self.cb_manager = AlarmCallbackManager()
     self.manager_list.append(self.cb_manager)
     
     self.stop = False
Exemplo n.º 3
0
class Alarm:
    '''
        定期进行告警检查
    '''
    def __init__(self):
        self.manager_list = []

        self.rule_manager = AlarmRuleManager()
        self.manager_list.append(self.rule_manager)

        self.data_manager = AlarmDataManager()
        self.manager_list.append(self.data_manager)

        self.exp_manager = AlarmExpManager()
        self.manager_list.append(self.exp_manager)

        self.cb_manager = AlarmCallbackManager()
        self.manager_list.append(self.cb_manager)

        self.stop = False

    def run(self):
        while not self.stop:
            begin = time.time()
            log.info("BEGIN TO CHECK")
            self.pre_check_manager_list()
            self.judge_host_rule()

            self.post_check_manager_list()
            end = time.time()
            log.info("END CHECK using %.3fs" % (end - begin))

            self.interval()

    def judge_specify_rule(self, host, rule, data_set):
        try:
            #exp_result = self.exp_manager.judge(host, rule, data_set)
            return self.exp_manager.judge(host, rule, data_set)
            #self.cb_manager.callback(host, rule, exp_result)
        except:
            log.exception("get exception with h:%s r:%s" % (host, rule))
        return []

    def judge_host_rule(self):
        '''
        为每个host的规则进行判断
        '''
        try:
            alarm_list = []
            host_list = self.get_host_list()
            #添加集群规则
            host_list.append("cluster")
            for host in host_list:
                rule_list = self.rule_manager.get_rule_by_host(host)
                data_set = self.data_manager.get_data_by_host(host)
                for rule in rule_list:
                    temp = self.judge_specify_rule(host, rule, data_set)
                    alarm_list.extend(temp)
            self.cb_manager.deal_alarm_list(alarm_list)
        except:
            log.exception("get exeception judge_host_rule")

    def get_host_list(self):
        #TODO
        host_list = []
        session = database.getSession()
        for instance in session.query(Instance).filter(
                Instance.role == "gmond"):
            host_list.append(instance.host)
        session.close()
        return host_list

    def pre_check_manager_list(self):
        for manager in self.manager_list:
            manager.pre_check()

    def post_check_manager_list(self):
        for manager in self.manager_list:
            manager.post_check()

    def interval(self):
        time.sleep(config.alarm_interval)
Exemplo n.º 4
0
class Alarm:
    '''
        定期进行告警检查
    '''
   
    def __init__(self):
        self.manager_list = []
        
        self.rule_manager = AlarmRuleManager()
        self.manager_list.append(self.rule_manager)
        
        self.data_manager = AlarmDataManager()
        self.manager_list.append(self.data_manager)
        
        self.exp_manager = AlarmExpManager()
        self.manager_list.append(self.exp_manager)
        
        self.cb_manager = AlarmCallbackManager()
        self.manager_list.append(self.cb_manager)
        
        self.stop = False
        
    def run(self):
        while not self.stop:
            begin = time.time()
            log.info("BEGIN TO CHECK")
            self.pre_check_manager_list()
            self.judge_host_rule()
               
            self.post_check_manager_list()
            end = time.time()
            log.info("END CHECK using %.3fs" % (end-begin) )
            
            self.interval()
            

    def judge_specify_rule(self, host, rule, data_set ):
        try:
            #exp_result = self.exp_manager.judge(host, rule, data_set)
            return self.exp_manager.judge(host, rule, data_set)
            #self.cb_manager.callback(host, rule, exp_result)
        except:
            log.exception("get exception with h:%s r:%s" % (host,rule) )
        return []

    def judge_host_rule(self):
        '''
        为每个host的规则进行判断
        '''
        try:
            alarm_list = []
            host_list = self.get_host_list()
            #添加集群规则
            host_list.append("cluster")
            for host in host_list:
                rule_list = self.rule_manager.get_rule_by_host(host)
                data_set = self.data_manager.get_data_by_host(host)
                for rule in rule_list:
                    temp = self.judge_specify_rule(host, rule, data_set)
                    alarm_list.extend(temp)
            self.cb_manager.deal_alarm_list(alarm_list)
        except:
            log.exception("get exeception judge_host_rule")

    def get_host_list(self):
        #TODO
        host_list = []
        session = database.getSession()
        for instance in session.query(Instance).filter(Instance.role == "gmond"):
            host_list.append(instance.host)
        session.close()
        return host_list
            
    def pre_check_manager_list(self):
        for manager in self.manager_list:
            manager.pre_check()
        
    def post_check_manager_list(self):
        for manager in self.manager_list:
            manager.post_check()
            
    def interval(self):
        time.sleep(config.alarm_interval)