@@ -78,10 +78,25 @@ async def describe_db_instance_performance(region_id: str,
78
78
region_id: db instance region(e.g. cn-hangzhou)
79
79
db_instance_id: db instance id(e.g. rm-xxx)
80
80
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" ])
82
82
start_time: start time(e.g. 2023-01-01 00:00)
83
83
end_time: end time(e.g. 2023-01-01 00:00)
84
84
"""
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
+
85
100
try :
86
101
start_time = transform_to_datetime (start_time )
87
102
end_time = transform_to_datetime (end_time )
@@ -98,7 +113,7 @@ async def describe_db_instance_performance(region_id: str,
98
113
response = client .describe_dbinstance_performance (request )
99
114
responses = []
100
115
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 ) ])} """
102
117
responses .append (perf_key_info )
103
118
return responses
104
119
except Exception as e :
0 commit comments