@@ -32,16 +32,13 @@ pub fn analyze_resource_usage(
3232 description : & str ,
3333 top_n : usize ,
3434) -> Result < ResourceUsageResult , Box < dyn std:: error:: Error > > {
35- // Get time range from TSDB
3635 let ( start, end) = engine. get_time_range ( ) ;
3736 let step = tsdb. interval ( ) ;
38-
39- // Execute the query
37+
4038 let result = engine. query_range ( query, start, end, step) ?;
41-
42- // Extract samples from the result
39+
4340 use crate :: viewer:: promql:: { QueryResult , Sample } ;
44-
41+
4542 let mut consumers = Vec :: new ( ) ;
4643 let mut total_sum = 0.0 ;
4744
@@ -62,7 +59,6 @@ pub fn analyze_resource_usage(
6259 let max = values. iter ( ) . cloned ( ) . fold ( f64:: NEG_INFINITY , f64:: max) ;
6360 let min = values. iter ( ) . cloned ( ) . fold ( f64:: INFINITY , f64:: min) ;
6461
65- // Extract a readable name from labels
6662 let name = extract_consumer_name ( & series. metric ) ;
6763
6864 consumers. push ( ResourceConsumer {
@@ -104,8 +100,7 @@ pub fn analyze_resource_usage(
104100 b. avg_usage . partial_cmp ( & a. avg_usage )
105101 . unwrap_or ( std:: cmp:: Ordering :: Equal )
106102 } ) ;
107-
108- // Calculate percentages and take top N
103+
109104 for consumer in & mut consumers {
110105 if total_sum > 0.0 {
111106 consumer. percent_of_total = ( consumer. avg_usage / total_sum) * 100.0 ;
@@ -125,7 +120,7 @@ pub fn analyze_resource_usage(
125120
126121/// Extract a readable name from metric labels
127122fn extract_consumer_name ( labels : & HashMap < String , String > ) -> String {
128- // Priority order for naming
123+ // Labels checked in priority order
129124 if let Some ( name) = labels. get ( "name" ) {
130125 return name. clone ( ) ;
131126 }
@@ -142,7 +137,6 @@ fn extract_consumer_name(labels: &HashMap<String, String>) -> String {
142137 return format ! ( "id:{}" , id) ;
143138 }
144139
145- // Show the metric name if no good labels
146140 if let Some ( metric_name) = labels. get ( "__name__" ) {
147141 return metric_name. clone ( ) ;
148142 }
@@ -173,7 +167,6 @@ pub fn format_resource_usage(result: &ResourceUsageResult) -> String {
173167 result. total_usage
174168 ) ) ;
175169
176- // Header
177170 output. push_str ( & format ! (
178171 "{:<60} {:>10} {:>10} {:>10} {:>8}\n " ,
179172 "Consumer" , "Avg" , "Max" , "Min" , "% Total"
@@ -183,7 +176,6 @@ pub fn format_resource_usage(result: &ResourceUsageResult) -> String {
183176 "-" . repeat( 60 ) , "-" . repeat( 10 ) , "-" . repeat( 10 ) , "-" . repeat( 10 ) , "-" . repeat( 8 )
184177 ) ) ;
185178
186- // Data rows
187179 for ( i, consumer) in result. top_consumers . iter ( ) . enumerate ( ) {
188180 output. push_str ( & format ! (
189181 "{:2}. {:<57} {:>10.2} {:>10.2} {:>10.2} {:>7.1}%\n " ,
@@ -196,7 +188,6 @@ pub fn format_resource_usage(result: &ResourceUsageResult) -> String {
196188 ) ) ;
197189 }
198190
199- // Show cumulative percentage
200191 let cumulative_percent: f64 = result. top_consumers . iter ( )
201192 . map ( |c| c. percent_of_total )
202193 . sum ( ) ;
@@ -207,7 +198,6 @@ pub fn format_resource_usage(result: &ResourceUsageResult) -> String {
207198 cumulative_percent
208199 ) ) ;
209200
210- // Add interpretation
211201 if result. top_consumers . len ( ) > 0 {
212202 let top = & result. top_consumers [ 0 ] ;
213203 if top. percent_of_total > 50.0 {
0 commit comments