Beispiel #1
0
    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)
Beispiel #2
0
    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)