Example #1
0
def parse_perfdata(cursor, callback):
    final_data = {}
    final_data['data'] = {}
    yield cursor.fetch_next
    record = cursor.next_object()
    if not record:
        callback(None)
    all_records = record['data']
    final_data['uuid'] = record['uuid']
    final_data['type'] = record['type']

    #根据预先定义的颜色值,设置每个数据字段的颜色
    colors = get_chart_colors()

    # 填充keys
    for key in all_records.keys():
        has_disabled_filed = False
        for field in chart_disabled_fields:
            if field in key:
                has_disabled_filed = True
                break
        if has_disabled_filed:
            continue
        final_data['data'][key] = {}
        final_data['data'][key]['data'] = []
        final_data['data'][key]['color'] = colors.pop()

    # 填充数据
    for key, items in all_records.items():
        has_disabled_filed = False
        for field in chart_disabled_fields:
            if field in key:
                has_disabled_filed = True
                break
        if has_disabled_filed:
            continue
        for item in items:
            data = float("%1.f" % item['data'])
            time = int(item['timestamp']) * 1000
            final_data['data'][key]['data'].append([time, data])

    callback(final_data)
Example #2
0
def parse_perfdata(cursor, callback):
    final_data = {}
    final_data["data"] = {}
    yield cursor.fetch_next
    record = cursor.next_object()
    if not record:
        callback(None)
    all_records = record["data"]
    final_data["uuid"] = record["uuid"]
    final_data["type"] = record["type"]

    # 根据预先定义的颜色值,设置每个数据字段的颜色
    colors = get_chart_colors()

    # 填充keys
    for key in all_records.keys():
        has_disabled_filed = False
        for field in chart_disabled_fields:
            if field in key:
                has_disabled_filed = True
                break
        if has_disabled_filed:
            continue
        final_data["data"][key] = {}
        final_data["data"][key]["data"] = []
        final_data["data"][key]["color"] = colors.pop()

    # 填充数据
    for key, items in all_records.items():
        has_disabled_filed = False
        for field in chart_disabled_fields:
            if field in key:
                has_disabled_filed = True
                break
        if has_disabled_filed:
            continue
        for item in items:
            data = float("%1.f" % item["data"])
            time = int(item["timestamp"]) * 1000
            final_data["data"][key]["data"].append([time, data])

    callback(final_data)
Example #3
0
def parse_perfdata(cursor, frequency=1, callback=None):
    """
    根据frequency(频率)计算平均值
    每段数据的时间点,取每段的第一条数据
    """
    fields_data = {}
    
    # 获取性能数据的字段
    fields = []
    while(yield cursor.fetch_next):
        record = cursor.next_object()
        perf_data = record['perf_data']
        for item in perf_data:
           field = item['field']
           if "/" in field:
               field = field.replace("/", "_")
           if "'" in field:
               field = field.replace("'", "")
           fields.append(field)
        break
    
    cursor.rewind()
    
    #根据预先定义的颜色值,设置每个数据字段的颜色
    colors = get_chart_colors()
    
    # 预先填充字段名
    for field in fields:
        if "/" in field:
            field = field.replace("/", "_")
        if "'" in field:
            field = field.replace("'", "")
        fields_data[str(field)] = {}
        fields_data[str(field)]['data'] = []
        fields_data[str(field)]['color'] = colors.pop()
    
    final_data = []
    while(yield cursor.fetch_next):
        record = cursor.next_object()
        final_data.append(record)
        
    data_length = len(final_data)
    
    for i in xrange(0, data_length, frequency):
        start = i
        if start >0 and frequency>1:
            start = start - 1
        end = i + frequency
        
        temp_data = {}
        for f in fields:
            temp_data[str(f)] = 0
        
        temp_timestamp = int(final_data[start]['timestamp'] * 1000)
        
        for record in final_data[start:end]:
            perf_data = record['perf_data']
            for item in perf_data:
                field = str(item['field'])
                if "/" in field:
                    field = field.replace("/", "_")
                if "'" in field:
                    field = field.replace("'", "")
                data = item['data'][0]
                
                
                # 如果记录中已经存在字段的'别名'
                if "field_alias" in item:
                    fields_data[field]['field_alias'] = item['field_alias']
                        
                # 如果数据的'单位'已经存在与记录中
                if "unit" in item:
                    unit = item['unit']
                else:
                    unit = re.match(r".*\d(.*)", data).groups()[0]
                fields_data[field]['unit'] = str(unit)
                
                # 替换数据中的'单位'字符串为空格
                temp_data[field] += float(data.replace(unit, ""))
            
        for k,v in temp_data.items():
            value = "%.2f" % (v/frequency)
            fields_data[k]['data'].append([temp_timestamp, float(value)])
        
    callback(fields_data)
Example #4
0
def parse_perfdata(cursor, frequency=1, callback=None):
    """
    根据frequency(频率)计算平均值
    每段数据的时间点,取每段的第一条数据
    """
    fields_data = {}

    # 获取性能数据的字段
    fields = []
    while (yield cursor.fetch_next):
        record = cursor.next_object()
        perf_data = record['perf_data']
        for item in perf_data:
            field = item['field']
            if "/" in field:
                field = field.replace("/", "_")
            if "'" in field:
                field = field.replace("'", "")
            fields.append(field)
        break

    cursor.rewind()

    #根据预先定义的颜色值,设置每个数据字段的颜色
    colors = get_chart_colors()

    # 预先填充字段名
    for field in fields:
        if "/" in field:
            field = field.replace("/", "_")
        if "'" in field:
            field = field.replace("'", "")
        fields_data[str(field)] = {}
        fields_data[str(field)]['data'] = []
        fields_data[str(field)]['color'] = colors.pop()

    final_data = []
    while (yield cursor.fetch_next):
        record = cursor.next_object()
        final_data.append(record)

    data_length = len(final_data)

    for i in xrange(0, data_length, frequency):
        start = i
        if start > 0 and frequency > 1:
            start = start - 1
        end = i + frequency

        temp_data = {}
        for f in fields:
            temp_data[str(f)] = 0

        temp_timestamp = int(final_data[start]['timestamp'] * 1000)

        for record in final_data[start:end]:
            perf_data = record['perf_data']
            for item in perf_data:
                field = str(item['field'])
                if "/" in field:
                    field = field.replace("/", "_")
                if "'" in field:
                    field = field.replace("'", "")
                data = item['data'][0]

                # 如果记录中已经存在字段的'别名'
                if "field_alias" in item:
                    fields_data[field]['field_alias'] = item['field_alias']

                # 如果数据的'单位'已经存在与记录中
                if "unit" in item:
                    unit = item['unit']
                else:
                    unit = re.match(r".*\d(.*)", data).groups()[0]
                fields_data[field]['unit'] = str(unit)

                # 替换数据中的'单位'字符串为空格
                temp_data[field] += float(data.replace(unit, ""))

        for k, v in temp_data.items():
            value = "%.2f" % (v / frequency)
            fields_data[k]['data'].append([temp_timestamp, float(value)])

    callback(fields_data)