def slowquery_review(request): instance_name = request.POST.get('instance_name') db_name = request.POST.get('db_name') start_time = request.POST.get('StartTime') end_time = request.POST.get('EndTime') limit = request.POST.get('limit') offset = request.POST.get('offset') # 计算页数 page_number = (int(offset) + int(limit)) / int(limit) values = {"PageSize": int(limit), "PageNumber": int(page_number)} # DBName非必传 if db_name: values['DBName'] = db_name # UTC时间转化成阿里云需求的时间格式 start_time = '%sZ' % start_time end_time = '%sZ' % end_time # 通过实例名称获取关联的rds实例id instance_info = AliyunRdsConfig.objects.get(instance__instance_name=instance_name) # 调用aliyun接口获取SQL慢日志统计 slowsql = Aliyun(rds=instance_info).DescribeSlowLogs(start_time, end_time, **values) # 解决table数据丢失精度、格式化时间 sql_slow_log = json.loads(slowsql)['Items']['SQLSlowLog'] for SlowLog in sql_slow_log: SlowLog['SQLId'] = str(SlowLog['SQLHASH']) SlowLog['CreateTime'] = Aliyun.utc2local(SlowLog['CreateTime'], utc_format="%Y-%m-%dZ") result = {"total": json.loads(slowsql)['TotalRecordCount'], "rows": sql_slow_log, "PageSize": json.loads(slowsql)['PageRecordCount'], "PageNumber": json.loads(slowsql)['PageNumber']} # 返回查询结果 return result
def slowquery_review_history(request): instance_name = request.POST.get('instance_name') start_time = request.POST.get('StartTime') end_time = request.POST.get('EndTime') db_name = request.POST.get('db_name') sql_id = request.POST.get('SQLId') limit = request.POST.get('limit') offset = request.POST.get('offset') # 计算页数 page_number = (int(offset) + int(limit)) / int(limit) values = {"PageSize": int(limit), "PageNumber": int(page_number)} # SQLId、DBName非必传 if sql_id: values['SQLHASH'] = sql_id if db_name: values['DBName'] = db_name # UTC时间转化成阿里云需求的时间格式 start_time = datetime.datetime.strptime( start_time, "%Y-%m-%d").date() - datetime.timedelta(days=1) start_time = '%sT16:00Z' % start_time end_time = '%sT15:59Z' % end_time # 通过实例名称获取关联的rds实例id instance_info = AliyunRdsConfig.objects.get( instance__instance_name=instance_name) # 调用aliyun接口获取SQL慢日志统计 slowsql = Aliyun().DescribeSlowLogRecords(instance_info.rds_dbinstanceid, start_time, end_time, **values) # 格式化时间\过滤HostAddress sql_slow_record = json.loads(slowsql)['Items']['SQLSlowRecord'] for SlowRecord in sql_slow_record: SlowRecord['ExecutionStartTime'] = Aliyun.utc2local( SlowRecord['ExecutionStartTime'], utc_format='%Y-%m-%dT%H:%M:%SZ') SlowRecord['HostAddress'] = SlowRecord['HostAddress'].split('[')[0] result = { "total": json.loads(slowsql)['TotalRecordCount'], "rows": sql_slow_record, "PageSize": json.loads(slowsql)['PageRecordCount'], "PageNumber": json.loads(slowsql)['PageNumber'] } # 返回查询结果 return result