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