Exemplo n.º 1
0
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
Exemplo n.º 2
0
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