def run_service_is_disable_action(self, job): lb_id = job['lb_id'] vip_instance = job['vip_instance'] alert_time = job['alert_time'] #从info.yaml获取信息 alert_type = "service_is_down" infoyaml = self.get_info_yaml() cluster_id = infoyaml['cluster_id'] area = infoyaml['area'] vip_dict = self.search_vip_from_infoyaml(vip_instance) rs = 'ALL' if vip_dict: descript = vip_dict['descript'] owners = vip_dict['owners'] vip = [ '%s:%s' % (i['vip'], i['port']) for i in vip_dict['vip_group'] ] mailto = vip_dict['mailto'] else: descript = 'UnKown' owners = 'UnKown' vip = 'UnKown' mailto = None status = 'disable' message = u'严重!! 业务:%s 由于没有真实机器可用,已无法提供服务. VIP:%s' % (descript, vip) logging.info(u'严重!! 业务:%s 由于没有真实机器可用,已无法提供服务. VIP:%s' % (descript, vip)) #判断service现在的状态,如果为enable则置为disable且执行下面步骤,如果为disable则不管 service_key = '%s_service' % (vip_instance) service_status = self.search_rs_or_service_status(service_key) #把状态置为disable self.add_rs_or_service_status(service_key, 'disable') if service_status == 'enable' or service_status == 'pending': #把信息post给平台 time_now = self.timestampnow() print 'postdata' self.post_alert_message_to_api(cluster_id, lb_id, area, descript, owners, rs, status, message, alert_type, time_now, vip_instance, vip, alert_time) #sendmail admin_mail_group = infoyaml['admin_mail_group'] if mailto: mailtolist = admin_mail_group + mailto else: mailtolist = admin_mail_group mailhost = config['mail_host'] mail_me = config['mail_me'] mail_subject = u'严重!LVS业务IP掉线报警 (业务:%s,虚拟IP:%s)' % (descript, vip) content = self.write_mail_content(cluster_id, lb_id, area, descript, vip, owners, rs, status, message, vip_instance, alert_time) handler_mail = mysendmail(mailhost, mail_me, mailtolist, mail_subject) print 'service:%s is down, start sendmail' % vip_instance handler_mail.send_mail(content)
def run_rs_is_enable_action(self, job): lb_id = job['lb_id'] vip_instance = job['vip_instance'] alert_time = job['alert_time'] rs = job['rs'] #从info.yaml获取信息 alert_type = "rs_is_up" infoyaml = self.get_info_yaml() cluster_id = infoyaml['cluster_id'] area = infoyaml['area'] vip_dict = self.search_vip_from_infoyaml(vip_instance) if vip_dict: descript = vip_dict['descript'] owners = vip_dict['owners'] vip = [ '%s:%s' % (i['vip'], i['port']) for i in vip_dict['vip_group'] ] mailto = vip_dict['mailto'] else: descript = 'UnKown' owners = 'UnKown' vip = 'UnKown' mailto = None status = 'enable' message = u'后端服务器:%s 访问成功,已从集群列表中恢复' % rs logging.info(u'RS恢复 (业务:%s,虚拟IP:%s,真实IP:%s)' % (descript, vip, rs)) #判断rs现在的状态,如果为disable则置为enable且执行下面步骤,如果为enable则不管 rs_key = '%s_%s' % (vip_instance, rs) rs_status = self.search_rs_or_service_status(rs_key) #把状态置为enable self.add_rs_or_service_status(rs_key, 'enable') if rs_status == 'disable': #把信息post给平台 time_now = self.timestampnow() self.post_alert_message_to_api(cluster_id, lb_id, area, descript, owners, rs, status, message, alert_type, time_now, vip_instance, vip, alert_time) #sendmail admin_mail_group = infoyaml['admin_mail_group'] if mailto: mailtolist = admin_mail_group + mailto else: mailtolist = admin_mail_group mailhost = config['mail_host'] mail_me = config['mail_me'] mail_subject = u'LVS恢复报警 (业务:%s,虚拟IP:%s,真实IP:%s)' % (descript, vip, rs) content = self.write_mail_content(cluster_id, lb_id, area, descript, vip, owners, rs, status, message, vip_instance, alert_time) handler_mail = mysendmail(mailhost, mail_me, mailtolist, mail_subject) print 'rs:%s is enable, start sendmail' % rs handler_mail.send_mail(content)
def run_service_is_disable_action(self,job): lb_id = job['lb_id'] vip_instance = job['vip_instance'] alert_time = job['alert_time'] #从info.yaml获取信息 alert_type = "service_is_down" infoyaml = self.get_info_yaml() cluster_id = infoyaml['cluster_id'] area = infoyaml['area'] vip_dict = self.search_vip_from_infoyaml(vip_instance) rs = 'ALL' if vip_dict: descript = vip_dict['descript'] owners = vip_dict['owners'] vip = [ '%s:%s' % (i['vip'],i['port']) for i in vip_dict['vip_group']] mailto = vip_dict['mailto'] else: descript = 'UnKown' owners = 'UnKown' vip = 'UnKown' mailto = None status = 'disable' message = u'严重!! 业务:%s 由于没有真实机器可用,已无法提供服务. VIP:%s' %(descript,vip) logging.info(u'严重!! 业务:%s 由于没有真实机器可用,已无法提供服务. VIP:%s' %(descript,vip)) #判断service现在的状态,如果为enable则置为disable且执行下面步骤,如果为disable则不管 service_key = '%s_service' % (vip_instance) service_status = self.search_rs_or_service_status(service_key) #把状态置为disable self.add_rs_or_service_status(service_key,'disable') if service_status == 'enable' or service_status == 'pending': #把信息post给平台 time_now = self.timestampnow() print 'postdata' self.post_alert_message_to_api(cluster_id,lb_id,area,descript,owners,rs,status,message,alert_type,time_now,vip_instance,vip,alert_time) #sendmail admin_mail_group = infoyaml['admin_mail_group'] if mailto: mailtolist = admin_mail_group + mailto else: mailtolist = admin_mail_group mailhost = config['mail_host'] mail_me = config['mail_me'] mail_subject = u'严重!LVS业务IP掉线报警 (业务:%s,虚拟IP:%s)' %(descript,vip) content = self.write_mail_content(cluster_id,lb_id,area,descript,vip,owners,rs,status,message,vip_instance,alert_time) handler_mail = mysendmail(mailhost,mail_me,mailtolist,mail_subject) print 'service:%s is down, start sendmail' % vip_instance handler_mail.send_mail(content)
def run_rs_is_enable_action(self,job): lb_id = job['lb_id'] vip_instance = job['vip_instance'] alert_time = job['alert_time'] rs = job['rs'] #从info.yaml获取信息 alert_type = "rs_is_up" infoyaml = self.get_info_yaml() cluster_id = infoyaml['cluster_id'] area = infoyaml['area'] vip_dict = self.search_vip_from_infoyaml(vip_instance) if vip_dict: descript = vip_dict['descript'] owners = vip_dict['owners'] vip = [ '%s:%s' % (i['vip'],i['port']) for i in vip_dict['vip_group']] mailto = vip_dict['mailto'] else: descript = 'UnKown' owners = 'UnKown' vip = 'UnKown' mailto = None status = 'enable' message = u'后端服务器:%s 访问成功,已从集群列表中恢复' % rs logging.info(u'RS恢复 (业务:%s,虚拟IP:%s,真实IP:%s)' %(descript,vip,rs)) #判断rs现在的状态,如果为disable则置为enable且执行下面步骤,如果为enable则不管 rs_key = '%s_%s' % (vip_instance,rs) rs_status = self.search_rs_or_service_status(rs_key) #把状态置为enable self.add_rs_or_service_status(rs_key,'enable') if rs_status == 'disable': #把信息post给平台 time_now = self.timestampnow() self.post_alert_message_to_api(cluster_id,lb_id,area,descript,owners,rs,status,message,alert_type,time_now,vip_instance,vip,alert_time) #sendmail admin_mail_group = infoyaml['admin_mail_group'] if mailto: mailtolist = admin_mail_group + mailto else: mailtolist = admin_mail_group mailhost = config['mail_host'] mail_me = config['mail_me'] mail_subject = u'LVS恢复报警 (业务:%s,虚拟IP:%s,真实IP:%s)' %(descript,vip,rs) content = self.write_mail_content(cluster_id,lb_id,area,descript,vip,owners,rs,status,message,vip_instance,alert_time) handler_mail = mysendmail(mailhost,mail_me,mailtolist,mail_subject) print 'rs:%s is enable, start sendmail' % rs handler_mail.send_mail(content)