コード例 #1
0
ファイル: search.py プロジェクト: jonelovemira/zabimoni
    def generate_by_group_result_no_fee(cls,
                                        item_search_result,
                                        asg_name=None):
        result = {}

        row_content_generator = RowContentGeneratorFactory()\
         .produce_generator(BY_GROUP_RESULT)

        assert row_content_generator != None, 'Row type do not exists'

        table_head = row_content_generator.get_head()
        metric_count = 0
        metric_result = []
        for s in item_search_result:
            if s.itemtype.aws != None or s.itemtype.itemunit == None:
                continue

            if s.itemtype.zabbixvaluetype is not None and int(
                    s.itemtype.zabbixvaluetype) not in [0, 3, 15]:
                continue

            if asg_name != None and s.host.service.servicename != asg_name:
                continue

            if s.host.service is None:
                continue

            try:
                tmp_row = row_content_generator.id_2_content(s)
            except Exception, e:
                continue

            if tmp_row not in metric_result:
                metric_result.append(tmp_row)
                metric_count += 1
コード例 #2
0
ファイル: search.py プロジェクト: jonelovemira/zabimoni
    def generate_fee_data(cls, item_search_result, awsname):

        result = {}
        # table_head = AWS_FEE_TABEL_HEAD

        row_content_generator = RowContentGeneratorFactory()\
         .produce_generator(awsname)

        assert row_content_generator != None, 'Row type do not exists'

        table_head = row_content_generator.get_head()

        metric_count = 0
        metric_result = []

        for s in item_search_result:
            if s.itemtype.aws != None and s.itemtype.aws.awsname == awsname:

                try:
                    row = row_content_generator.id_2_content(s)
                except Exception, e:
                    continue

                metric_result.append(row)
                metric_count += 1
コード例 #3
0
ファイル: search.py プロジェクト: jonelovemira/zabimoni
    def generate_per_instance_result_no_fee(cls,
                                            item_search_result,
                                            asg_name=None):
        result = {}

        row_content_generator = RowContentGeneratorFactory()\
         .produce_generator(PER_INSTANCE_RESULT)

        assert row_content_generator != None, 'Row type do not exists'

        metric_count = 0
        metric_result = []
        table_head = row_content_generator.get_head()

        for s in item_search_result:
            if s.itemtype.aws != None or s.itemtype.itemunit == None:
                continue

            if s.itemtype.zabbixvaluetype is not None and int(
                    s.itemtype.zabbixvaluetype) not in [0, 3, 15]:
                continue

            if asg_name != None and s.host.service.servicename != asg_name:
                continue

            try:
                row = row_content_generator.id_2_content(s)
            except Exception, e:
                continue

            metric_result.append(row)

            metric_count += 1
コード例 #4
0
ファイル: search.py プロジェクト: jonelovemira/zabimoni
    def find_hostid_for_table_row_instance(cls, row):

        row_content_generator = RowContentGeneratorFactory()\
         .produce_generator(PER_INSTANCE_RESULT)

        assert row_content_generator != None, 'Row type do not exists'

        hostids = row_content_generator.get_hostids(row)

        return hostids[0] if len(hostids) > 0 else None
コード例 #5
0
ファイル: search.py プロジェクト: jonelovemira/zabimoni
    def find_item_list_for_table_row_instance(cls, row):

        row_content_generator = RowContentGeneratorFactory()\
         .produce_generator(PER_INSTANCE_RESULT)

        assert row_content_generator != None, 'Row type do not exists'

        result = row_content_generator.content_2_id(row)

        return result
コード例 #6
0
ファイル: search.py プロジェクト: jonelovemira/zabimoni
    def find_item_list_for_table_row_group(cls, row):

        row_content_generator = RowContentGeneratorFactory()\
         .produce_generator(BY_GROUP_RESULT)

        assert row_content_generator != None, 'Row type do not exists'

        result = row_content_generator.content_2_id(row)

        return result
コード例 #7
0
ファイル: search.py プロジェクト: jonelovemira/zabimoni
    def row_type_2_name(cls, row_type, row):

        row_content_generator = RowContentGeneratorFactory()\
         .produce_generator(row_type)

        assert row_content_generator != None, 'Row type do not exists'

        result = row_content_generator.get_series_name(row)

        return result
コード例 #8
0
ファイル: search.py プロジェクト: jonelovemira/zabimoni
    def row_2_item_list(cls, row_type, row):

        row_content_generator = RowContentGeneratorFactory()\
         .produce_generator(row_type)

        assert row_content_generator != None, 'Row type do not exists'

        result = row_content_generator.content_2_id(row)

        return result
コード例 #9
0
    def server_2_server_data(self, input_dict):


        time_from = input_dict['time_from']
        time_to = input_dict['time_to']

        data = input_dict['data']


        row_content_generator = RowContentGeneratorFactory()\
            .produce_generator(BY_GROUP_RESULT)

        assert row_content_generator != None, 'undefined row generator'

        session = loadSession()
        result = {}
        result['data'] = []
        for d in data:
            from_tag = d['FROM']
            to_tag = d['TO']
            servicename = d['servicename']
            metricname = d['metricname']
            ground = 60
            sm = servicename

            itemids = row_content_generator.content_2_id(\
                row_content_generator.get_fake_row(sm, metricname))

            if len(itemids) > 0:

                history_data = Chart.item_list_2_history_data(itemids,\
                    ground, time_from,time_to)
                series_data = Chart.\
                    item_history_data_2_chart_update_series_data(history_data,\
                    time_from, 1)
                last_sum = series_data[1]

                tmp = {
                    'FROM' : from_tag,
                    'TO' : to_tag,
                    'servicename': servicename,
                    'metricname': metricname,
                    'value': last_sum,
                    'alias':d['alias']
                }

                result['data'].append(tmp)



        result['time_from'] = input_dict['time_from']
        result['time_to'] = input_dict['time_to']
        session.close()

        return result
コード例 #10
0
    def business_health(self,input_dict):
        services_metrics = input_dict['service_metrics']

        time_from = input_dict['time_from']
        time_to = input_dict['time_to']

        session = loadSession()
        result = {}

        row_content_generator = RowContentGeneratorFactory()\
            .produce_generator(BY_GROUP_RESULT)

        assert row_content_generator != None, 'undefined row generator'

        for sm in services_metrics:
            group = Service.query.filter_by(servicename=sm).first()
            if group != None:
                result[sm] = []
                for metric_condition in services_metrics[sm]:
                    metricname = metric_condition['metricname']
                    condition = metric_condition['condition']
                    itemids = row_content_generator.content_2_id(\
                        row_content_generator.get_fake_row(sm, metricname))

                    if len(itemids) > 0:
                        recordsuint = Zabbixhistoryuint.\
                            get_interval_condition_record(itemids,\
                            time_from, time_to,condition)
                        records = Zabbixhistory.\
                            get_interval_condition_record(itemids,\
                            time_from, time_to, condition)

                        if records is None and recordsuint is None:
                            continue

                        tmp_records = recordsuint if recordsuint is not None \
                            else records

                        for r in tmp_records:
                            itemid = r[0]
                            clock = r[1]
                            value = r[2]
                            item = Item.query.get(itemid)
                            if item != None:
                                host = item.host
                                zinterface = session.query(Zabbixinterface).\
                                    filter_by(hostid=host.hostid).first()
                                if zinterface != None:
                                    result[sm].append([host.hostname, \
                                    zinterface.ip, item.itemname, clock, value])


        session.close()
        return result
コード例 #11
0
	def save_chart(cls,selected_metrics,chart_config,windowname,user,index,window_type,page):

		if window_type == WINDOW_CHART:
			tmp_window = user.windows.filter_by(windowname=windowname).filter_by(type=window_type).first()
			if tmp_window != None:
				raise Exception('same name for saving is already exists')

		

		window = Window(windowname,window_type,index,user,page)

		db.session.add(window)

		sm = Selectedmetrics(window)

		db.session.add(sm)

		for option_iter in selected_metrics:

			option = Option(option_iter,sm)
			db.session.add(option)

			for table_title_iter in selected_metrics[option_iter]:

				dt = Displaytable(table_title_iter,option)
				db.session.add(dt)

				row_content_generator = RowContentGeneratorFactory().\
					produce_generator(table_title_iter)

				assert row_content_generator != None, 'undefined' + \
					' row_content_generator'
				table_head = row_content_generator.get_head()

				for td_content in selected_metrics[option_iter][table_title_iter]['metric_result']:

					dtr = Displaytablerow(dt)
					db.session.add(dtr)

					assert len(table_head) == len(td_content)

					for i in range(len(td_content)):
						attr = Attr(table_head[i],td_content[i],dtr,None)
						db.session.add(attr)

		cc = Chartconfig(window)
		db.session.add(cc)

		for key in chart_config:
			tmp_attr = Attr(key,chart_config[key],None,cc)
			db.session.add(tmp_attr)

		return window
コード例 #12
0
    def core_data(self,input_dict):
        services_metrics = input_dict
        session = loadSession()
        result = {}

        row_content_generator = RowContentGeneratorFactory()\
            .produce_generator(BY_GROUP_RESULT)

        assert row_content_generator != None, 'undefined row generator'

        for sm in services_metrics:
            group = Service.query.filter_by(servicename=sm).first()
            if group != None:
                result[sm] = {}
                for metric in services_metrics[sm]:
                    time_from = services_metrics[sm][metric]['time_from']
                    time_to = services_metrics[sm][metric]['time_to']
                    ground = int(services_metrics[sm][metric]['frequency'])

                    result[sm][metric] = {}

                    itemids = row_content_generator.content_2_id(\
                        row_content_generator.get_fake_row(sm, metric))

                    # itemids = ItemSearch.find_item_list_for_table_row_group([sm,metric])

                    if len(itemids) > 0 :
                        v = Zabbixhistory.get_interval_history_no_ground(\
                            itemids, time_from, time_to)
                        vuint = Zabbixhistoryuint.\
                            get_interval_history_no_ground(itemids, \
                            time_from, time_to)

                        if vuint is  None and v is None:
                            continue

                        result[sm][metric]['statics'] = v if v is not None \
                            else vuint

                        time_from = time_to - ground
                        time_from = (time_from//ground) * ground

                        history_data = Chart.item_list_2_history_data(itemids, \
                            ground, time_from, time_to)
                        series_data = Chart.\
                            item_history_data_2_chart_update_series_data(\
                            history_data, time_from, 1)
                        last_sum = series_data[1]

                        result[sm][metric]['last'] = last_sum

        session.close()
        return result
コード例 #13
0
ファイル: search.py プロジェクト: jonelovemira/zabimoni
    def find_item_list_for_table_row_aws_fee(cls, row):

        tmp_aws = Aws.query.first()

        assert tmp_aws != None, 'no aws in database currently'
        assert tmp_aws.awsname != None, 'fee name can not be empty'

        row_content_generator = RowContentGeneratorFactory()\
         .produce_generator(tmp_aws.awsname)

        assert row_content_generator != None, 'Row type do not exists'

        result = row_content_generator.content_2_id(row)

        return result
コード例 #14
0
    def mechine_health(self,input_dict):
        services = input_dict['services']

        time_from = input_dict['time_from']
        time_to = input_dict['time_to']

        metrics = input_dict['metrics']
        session = loadSession()
        result = {}

        row_content_generator = RowContentGeneratorFactory()\
            .produce_generator(PER_INSTANCE_RESULT)

        assert row_content_generator != None, 'undefined row generator'

        for s in services:
            group = Service.query.filter_by(servicename=s).first()
            if group != None:
                result[s] = {}
                for h in group.hosts.all():
                    zinterface = session.query(Zabbixinterface).\
                        filter_by(hostid=h.hostid).first()
                    zh = session.query(Zabbixhosts).get(h.hostid)
                    if zinterface is None or zh is None:
                        continue
                    result[s][zinterface.ip] = {}
                    result[s][zinterface.ip]['available'] = zh.available

                    for m in metrics:
                        itemids = row_content_generator.content_2_id(\
                            row_content_generator.get_fake_row(zinterface.ip, \
                            m['metricname']))
                        # itemids = ItemSearch.find_item_list_for_table_row_instance([None,None,zinterface.ip,m['metricname'],None, None, None])

                        if len(itemids) > 0:
                            v = Zabbixhistory.get_interval_history_no_ground(\
                                    itemids,time_from,time_to)
                            vuint = Zabbixhistoryuint.\
                                get_interval_history_no_ground(\
                                itemids,time_from,time_to)
                            if vuint is  None and v is None:
                                continue
                            result[s][zinterface.ip][m['metricname']] = \
                                v if v is not None else vuint

        session.close()
        return result
コード例 #15
0
	def load_window_chart(cls,windowid):


		result = {}

		window = Window.query.get(windowid)
		if window == None:
			raise Exception('window do not exist')

		selected_metrics = {}
		selectedmetrics = window.selectedmetrics.first()
		chartconfig = window.chartconfig.first()
		chart_config = {}

		if selectedmetrics != None:
			for option in selectedmetrics.options.all():
				selected_metrics[option.optionname] = {}

				for dt in option.displaytables.all():
					selected_metrics[option.optionname][dt.displaytablename] = {}


					row_content_generator = RowContentGeneratorFactory()\
						.produce_generator(dt.displaytablename)

					assert row_content_generator != None, 'not defined ' + \
						'row_content_generator'

					table_head = row_content_generator.get_head()

					if table_head == None:
						raise Exception('unknown table head')

					selected_metrics[option.optionname][dt.displaytablename]['metric_count'] = 0
					selected_metrics[option.optionname][dt.displaytablename]['metric_result'] = []
					selected_metrics[option.optionname][dt.displaytablename]['table_head'] = table_head

					for dtr in dt.rows.all():
						selected_metrics[option.optionname][dt.displaytablename]['metric_count'] += 1
						tmp_arr = list(table_head)
						for attr in dtr.attrs.all():
							tmp_arr[table_head.index(attr.attrname)] = attr.attrvalue

						item_list = row_content_generator.content_2_id(tmp_arr)
						if len(item_list) > 0:
							item = Item.query.get(item_list[0])
							tmp_arr = row_content_generator.id_2_content(item)

						selected_metrics[option.optionname][dt.displaytablename]['metric_result'].append(tmp_arr)

		if chartconfig != None:
			for attr in chartconfig.attrs.all():
				chart_config[attr.attrname] = attr.attrvalue

		if chart_config['use_utc'] == '0':
			chart_config['use_utc'] = False
		elif chart_config['use_utc'] == '1':
			chart_config['use_utc'] = True

		result['selected_metrics'] = selected_metrics
		result['chart_config'] = chart_config
		result['chart_name'] = window.windowname

		return result