@@ -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 :
0 commit comments