Skip to content

Commit 2df50b9

Browse files
author
wenfeng.wf
committed
support compress performance items.
1 parent 568c015 commit 2df50b9

File tree

2 files changed

+28
-4
lines changed

2 files changed

+28
-4
lines changed

src/alibabacloud_rds_openapi_mcp_server/server.py

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -78,10 +78,25 @@ async def describe_db_instance_performance(region_id: str,
7878
region_id: db instance region(e.g. cn-hangzhou)
7979
db_instance_id: db instance id(e.g. rm-xxx)
8080
db_type: the db instance database type(e.g. mysql,pgsql,sqlserver)
81-
perf_keys: Performance Key (e.g. ["MemCpuUsage", "QPSTPS", "Sessions", "COMDML", "RowDML"])
81+
perf_keys: Performance Key (e.g. ["MemCpuUsage", "QPSTPS", "Sessions", "COMDML", "RowDML", "ThreadStatus", "MBPS", "DetailedSpaceUsage"])
8282
start_time: start time(e.g. 2023-01-01 00:00)
8383
end_time: end time(e.g. 2023-01-01 00:00)
8484
"""
85+
def _compress_performance(performance_value, max_items=10):
86+
if len(performance_value) > max_items:
87+
result = []
88+
offset = len(performance_value) / 10
89+
for i in range(0, len(performance_value), int(offset)):
90+
_item = None
91+
for j in range(i, min(i + int(offset), len(performance_value))):
92+
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('&')]):
93+
_item = performance_value[j]
94+
else:
95+
result.append(_item)
96+
return result
97+
else:
98+
return performance_value
99+
85100
try:
86101
start_time = transform_to_datetime(start_time)
87102
end_time = transform_to_datetime(end_time)
@@ -98,7 +113,7 @@ async def describe_db_instance_performance(region_id: str,
98113
response = client.describe_dbinstance_performance(request)
99114
responses = []
100115
for perf_key in response.body.performance_keys.performance_key:
101-
perf_key_info = f"""Key={perf_key.key}; Unit={perf_key.unit}; ValueFormat={perf_key.value_format}; Values={compress_json_array([item.to_map() for item in perf_key.values.performance_value])}"""
116+
perf_key_info = f"""Key={perf_key.key}; Unit={perf_key.unit}; ValueFormat={perf_key.value_format}; Values={compress_json_array([item.to_map() for item in _compress_performance(perf_key.values.performance_value)])}"""
102117
responses.append(perf_key_info)
103118
return responses
104119
except Exception as e:

src/alibabacloud_rds_openapi_mcp_server/utils.py

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,15 +13,21 @@
1313
"Sessions": ["MySQL_Sessions"],
1414
"COMDML": ["MySQL_COMDML"],
1515
"RowDML": ["MySQL_RowDML"],
16-
"SpaceUsage": ["MySQL_DetailedSpaceUsage"]
16+
"SpaceUsage": ["MySQL_DetailedSpaceUsage"],
17+
"ThreadStatus": ["MySQL_ThreadStatus"],
18+
"MBPS": ["MySQL_MBPS"],
19+
"DetailedSpaceUsage": ["MySQL_DetailedSpaceUsage"]
1720
},
1821
"pgsql": {
1922
"MemCpuUsage": ["MemoryUsage", "CpuUsage"],
2023
"QPSTPS": ["PolarDBQPSTPS"],
2124
"Sessions": ["PgSQL_Session"],
2225
"COMDML": ["PgSQL_COMDML"],
2326
"RowDML": ["PolarDBRowDML"],
24-
"SpaceUsage": ["PgSQL_SpaceUsage"]
27+
"SpaceUsage": ["PgSQL_SpaceUsage"],
28+
"ThreadStatus": [],
29+
"MBPS": [],
30+
"DetailedSpaceUsage": ["SQLServer_DetailedSpaceUsage"]
2531
},
2632
"sqlserver": {
2733
"MemCpuUsage": ["SQLServer_CPUUsage"],
@@ -30,6 +36,9 @@
3036
"COMDML": [],
3137
"RowDML": [],
3238
"SpaceUsage": ["SQLServer_DetailedSpaceUsage"],
39+
"ThreadStatus": [],
40+
"MBPS": [],
41+
"DetailedSpaceUsage": ["PgSQL_SpaceUsage"]
3342
}
3443

3544
}

0 commit comments

Comments
 (0)