describe_db_instance_performance
Retrieve performance metrics of an RDS instance, including MemCpuUsage, QPSTPS, and Sessions, by specifying region, instance ID, database type, and time range for detailed analysis.
Instructions
Queries the performance data of an instance using the RDS OpenAPI.
This method provides performance data collected from the RDS service, such as MemCpuUsage, QPSTPS, Sessions, ThreadStatus, MBPS, etc.
Args:
region_id: db instance region(e.g. cn-hangzhou)
db_instance_id: db instance id(e.g. rm-xxx)
db_type: the db instance database type(e.g. mysql,pgsql,sqlserver)
perf_keys: Performance Key (e.g. ["MemCpuUsage", "QPSTPS", "Sessions", "COMDML", "RowDML", "ThreadStatus", "MBPS", "DetailedSpaceUsage"])
start_time: start time(e.g. 2023-01-01 00:00)
end_time: end time(e.g. 2023-01-01 00:00)
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| db_instance_id | Yes | ||
| db_type | Yes | ||
| end_time | Yes | ||
| perf_keys | Yes | ||
| region_id | Yes | ||
| start_time | Yes |
Implementation Reference
- The core handler function for the 'describe_db_instance_performance' tool. It calls the Alibaba Cloud RDS DescribeDBInstancePerformance API, processes performance keys based on DB type, compresses data points if too many, and formats the response with keys, units, formats, and CSV values.@mcp.tool(annotations=READ_ONLY_TOOL) async def describe_db_instance_performance(region_id: str, db_instance_id: str, db_type: str, perf_keys: list[str], start_time: str, end_time: str): """ Queries the performance data of an instance using the RDS OpenAPI. This method provides performance data collected from the RDS service, such as MemCpuUsage, QPSTPS, Sessions, ThreadStatus, MBPS, etc. Args: region_id: db instance region(e.g. cn-hangzhou) db_instance_id: db instance id(e.g. rm-xxx) db_type: the db instance database type(e.g. mysql,pgsql,sqlserver) perf_keys: Performance Key (e.g. ["MemCpuUsage", "QPSTPS", "Sessions", "COMDML", "RowDML", "ThreadStatus", "MBPS", "DetailedSpaceUsage"]) start_time: start time(e.g. 2023-01-01 00:00) end_time: end time(e.g. 2023-01-01 00:00) """ def _compress_performance(performance_value, max_items=10): if len(performance_value) > max_items: result = [] offset = len(performance_value) / 10 for i in range(0, len(performance_value), int(offset)): _item = None for j in range(i, min(i + int(offset), len(performance_value))): if _item is None or sum([float(v) for v in performance_value[j].value.split('&')]) > sum( [float(v) for v in _item.value.split('&')]): _item = performance_value[j] _item.date = parse_iso_8601(_item.date) result.append(_item) return result else: for item in performance_value: item.date = parse_iso_8601(item.date) return performance_value try: start_time = transform_to_datetime(start_time) end_time = transform_to_datetime(end_time) client = get_rds_client(region_id) perf_key = transform_perf_key(db_type, perf_keys) if not perf_key: raise OpenAPIError(f"Unsupported perf_key: {perf_key}") request = rds_20140815_models.DescribeDBInstancePerformanceRequest( dbinstance_id=db_instance_id, start_time=transform_to_iso_8601(start_time, "minutes"), end_time=transform_to_iso_8601(end_time, "minutes"), key=",".join(perf_key) ) response = client.describe_dbinstance_performance(request) responses = [] for perf_key in response.body.performance_keys.performance_key: perf_key_info = f"""Key={perf_key.key}; Unit={perf_key.unit}; ValueFormat={perf_key.value_format}; Values={json_array_to_csv(_compress_performance(perf_key.values.performance_value))}""" responses.append(perf_key_info) return responses except Exception as e: raise e