def run_query(self, query): database = self.database result = {} data = new_execute_ash_return_json(query) result[database.alias] = data2result( data, PERFORMANCE_DICT.get(database.db_type)) return result
def get_history_data_by_range(self, begin_time, end_time, instance_id=None): """ :param instance_id: id :param begin_time: :param end_time: :return: """ database = self.database performance_name = enum2str(PERFORMANCE_DICT.get(database.db_type)) group_by_clause = "group by database_id, name_id, date_trunc('minute', created_at)" if int( end_time ) - int( begin_time ) <= 604800 else "group by database_id, name_id, date_trunc('hour', created_at)" filter_by_clause = f'''created_at between to_timestamp({begin_time}) and to_timestamp({end_time})''' query = f'''select name_id, avg(value), cast(extract(epoch from min(created_at)) as bigint)*1000 from monitor_performance where database_id = '{(database.id)}' and {filter_by_clause} and name_id in ({performance_name}) {group_by_clause} order by name_id, 3''' result = {} data = new_execute_ash_return_json(query) result = data2result(data, PERFORMANCE_DICT.get(database.db_type)) return result
def get_realtime_data(self): database = self.database result = {} query = ( "select name_id, avg(value), cast(extract(epoch from created_at) as bigint)*1000 from monitor_performance where database_id = '{}' and created_at = timestamp 'now' - EXTRACT(SECOND FROM TIMESTAMP 'now') * interval '1 seconds' and name_id in ({}) group by database_id,name_id,created_at" ).format(database.id, enum2str(SQLServerPerformanceType)) data_dic = new_execute_performance_return_json(query) result[database.alias] = data2result(data_dic, SQLServerPerformanceType, is_open=False) return result
def get_realtime_data(self): database = self.database result = {} query = ( "with max_t as (select max(created_at) t from monitor_performance where database_id = '{}') select name_id, avg(value), cast(extract(epoch from created_at) as bigint)*1000 from monitor_performance, max_t where database_id = '{}' and created_at = t and name_id in ({}) group by database_id,name_id,created_at" ).format(database.id, database.id, enum2str(DB2PerformanceType)) data_dic = new_execute_performance_return_json(query) result[database.alias] = data2result(data_dic, DB2PerformanceType, is_open=False) return result