Beispiel #1
0
def get_alert_info_from_DB(monitor_name, monitor_ip, monitor_port):
    # choice collection_info table
    now_year = datetime.datetime.now().year
    now_month = datetime.datetime.now().month
    if now_month < 10:
        collection_info = 'collection_info_' + str(now_year) + '0' + str(
            now_month)
    else:
        collection_info = 'collection_info_' + str(now_year) + str(now_month)

    dbconfig = {
        'host': config.get('COLLECTION_DB', 'host'),
        'port': int(config.get('COLLECTION_DB', 'port')),
        'user': config.get('COLLECTION_DB', 'user'),
        'passwd': config.get('COLLECTION_DB', 'pwd'),
        'db': config.get('COLLECTION_DB', 'db'),
        'charset': 'utf8'
    }

    db = MySQL(dbconfig)

    sql = "select monitor_name,monitor_ip,monitor_port,http_code,exec_code,api_info,create_time from {collection_info} where monitor_name = '{monitor_name}' and " \
          "monitor_ip = '{monitor_ip}' and monitor_port = {monitor_port} order by create_time desc ;". \
        format(collection_info=collection_info, monitor_name=monitor_name, monitor_ip=monitor_ip,
               monitor_port=monitor_port)
    # print sql
    # logger.info(sql)
    db.query(sql)
    result = db.fetchOneRow()
    db.close()

    return result
Beispiel #2
0
def get_first_error_time(monitor_name, monitor_ip, monitor_port):
    '''

    :param monitor_name:
    :param monitor_ip:
    :param monitor_port:
    :return:
    '''
    dbconfig = {
        'host': config.get('META', 'host'),
        'port': int(config.get('META', 'port')),
        'user': config.get('META', 'user'),
        'passwd': config.get('META', 'pwd'),
        'db': config.get('META', 'db'),
        'charset': 'utf8'
    }

    db = MySQL(dbconfig)

    sql = "select first_error_time from add_monitor_info " \
          "where monitor_name='{monitor_name}' and monitor_ip='{monitor_ip}' " \
          "and monitor_port={monitor_port} and on_off = 1;".format(monitor_name=monitor_name, monitor_ip=monitor_ip,
                                                                   monitor_port=monitor_port)
    db.query(sql)
    result = db.fetchOneRow()
    db.close()

    return result
Beispiel #3
0
def master():
    monitor_name = request.args.get('monitor_name', type=str, default=None)
    monitor_ip = request.args.get('monitor_ip', type=str, default=None)
    monitor_port = request.args.get('monitor_port', type=int, default=None)

    #get admin, business
    dbconfig = {
        'host': config.get('META', 'host'),
        'port': int(config.get('META', 'port')),
        'user': config.get('META', 'user'),
        'passwd': config.get('META', 'pwd'),
        'db': config.get('META', 'db'),
        'charset': 'utf8'
    }

    db = MySQL(dbconfig)

    sql = "select admin, business from collection_info where monitor_name = '{monitor_name}' and " \
          "monitor_ip = '{monitor_ip}' and monitor_port = {monitor_port};".format(monitor_name=monitor_name, monitor_ip=monitor_ip, monitor_port=monitor_port)
    db.query(sql)
    manager_info = db.fetchOneRow()
    db.close()

    admin, business = manager_info

    mail_subject = 'MFS:mfsmaster alert'

    alert_info = message_info('MFS:mfsmaster', admin, business, monitor_ip,
                              monitor_port)

    result = send_alert(monitor_name, monitor_ip, monitor_port, mail_subject,
                        alert_info)

    return jsonify(result)
Beispiel #4
0
def set_first_error_time(monitor_name, monitor_ip, monitor_port,
                         first_error_time):
    '''
    set now time or set default time 0.0
    :param monitor_name:
    :param monitor_ip:
    :param monitor_port:
    :param first_error_time:
    :return: 1 --> OK
    :return: False --> error
    '''
    try:
        # if first_error_time == '0.0':
        #    timestrip = first_error_time
        # else:
        #    timestrip = time.mktime(first_error_time.timetuple())
        # timestrip = first_error_time

        dbconfig = {
            'host': config.get('META', 'host'),
            'port': int(config.get('META', 'port')),
            'user': config.get('META', 'user'),
            'passwd': config.get('META', 'pwd'),
            'db': config.get('META', 'db'),
            'charset': 'utf8'
        }

        db = MySQL(dbconfig)
        sql = "update add_monitor_info set first_error_time='{first_error_time}' " \
              "where monitor_name = '{monitor_name}' and monitor_ip = '{monitor_ip}' " \
              "and monitor_port = {monitor_port} and on_off = 1;".format(monitor_name=monitor_name,
                                                                         monitor_ip=monitor_ip,
                                                                         monitor_port=monitor_port,
                                                                         first_error_time=first_error_time)
        result = db.update(sql)
        db.commit()
        db.close()

        exec_info = "[action]:set first error time" \
                    "[status]:OK" \
                    "[first_error_time]:{first_error_time}" \
                    "[return code]:{result}".format(first_error_time=first_error_time, result=result)
        logger.info(exec_info)

    except Exception, e:
        error_msg = "[action]:iset first error time" \
                    "[status]:FAIL" \
                    "[Errorcode]:{e}" \
                    "[first_error_time]:{first_error_time}".format(first_error_time=first_error_time, e=e)
        logger.error(error_msg)
Beispiel #5
0
def is_on(monitor_name):
    dbconfig = {
        'host': config.get('COLLECTION_DB', 'host'),
        'port': int(config.get('COLLECTION_DB', 'port')),
        'user': config.get('COLLECTION_DB', 'user'),
        'passwd': config.get('COLLECTION_DB', 'pwd'),
        'db': config.get('COLLECTION_DB', 'db'),
        'charset': 'utf8'
    }

    db = MySQL(dbconfig)

    sql = "select monitor_name,monitor_ip,monitor_port from add_monitor_info where monitor_name = '{monitor_name}' and " \
          "on_off = 1 ;".format(monitor_name=monitor_name)
    # print sql
    db.query(sql)
    result = db.fetchAllRows()
    db.close()

    return result
Beispiel #6
0
def verify_user(username, password):
    '''API users verify decorator'''
    config = ConfigParser.ConfigParser()
    metaConfig = recursiveSearchFile(project_abdir, '*alertConfig.ini')[0]
    config.read(metaConfig)
    dbconfig = {
        'host': config.get('META', 'host'),
        'port': int(config.get('META', 'port')),
        'user': config.get('META', 'user'),
        'passwd': config.get('META', 'pwd'),
        'db': config.get('META', 'db'),
        'charset': 'utf8'
    }

    db = MySQL(dbconfig)
    sql = "select id,name,password_hash from users where name = '{username}'".format(
        username=username)
    db.query(sql)
    info = db.fetchOneRow()
    db.close()

    check_user = User(id=info[0], name=info[1], password_hash=info[2])

    if not check_user or not check_user.verify_password(password):
        error_msg = "[action]:verify user" \
                    "[status]:FAIL" \
                    "[username]:{username}" \
                    "[verify status]:{status}".format(username=check_user.name,
                                                      status=check_user.verify_password(password))
        logger.error(error_msg)
        return False

    exec_info = "[action]:verify user" \
                "[status]:OK" \
                "[username]:{username}".format(username=username)
    logger.info(exec_info)
    return True