@@ -317,6 +317,20 @@ def generate_h002_unused_indexes_report(self, cluster: str = "local", node_name:
317317
318318 unused_indexes_by_db = {}
319319 for db_name in databases :
320+ # Query stats_reset timestamp for this database
321+ stats_reset_query = f'last_over_time(pgwatch_stats_reset_stats_reset_epoch{{cluster="{ cluster } ", node_name="{ node_name } ", database_name="{ db_name } "}}[10h])'
322+ stats_reset_result = self .query_instant (stats_reset_query )
323+
324+ stats_reset_epoch = None
325+ days_since_reset = None
326+ stats_reset_time = None
327+
328+ if stats_reset_result .get ('status' ) == 'success' and stats_reset_result .get ('data' , {}).get ('result' ):
329+ stats_reset_epoch = float (stats_reset_result ['data' ]['result' ][0 ]['value' ][1 ]) if stats_reset_result ['data' ]['result' ] else None
330+ if stats_reset_epoch :
331+ stats_reset_time = datetime .fromtimestamp (stats_reset_epoch ).isoformat ()
332+ days_since_reset = (datetime .now () - datetime .fromtimestamp (stats_reset_epoch )).days
333+
320334 # Query unused indexes for each database using last_over_time to get most recent value
321335 unused_indexes_query = f'last_over_time(pgwatch_unused_indexes_index_size_bytes{{cluster="{ cluster } ", node_name="{ node_name } ", dbname="{ db_name } "}}[10h])'
322336 unused_result = self .query_instant (unused_indexes_query )
@@ -363,7 +377,12 @@ def generate_h002_unused_indexes_report(self, cluster: str = "local", node_name:
363377 "unused_indexes" : unused_indexes ,
364378 "total_count" : len (unused_indexes ),
365379 "total_size_bytes" : total_unused_size ,
366- "total_size_pretty" : self .format_bytes (total_unused_size )
380+ "total_size_pretty" : self .format_bytes (total_unused_size ),
381+ "stats_reset" : {
382+ "stats_reset_epoch" : stats_reset_epoch ,
383+ "stats_reset_time" : stats_reset_time ,
384+ "days_since_reset" : days_since_reset
385+ }
367386 }
368387
369388 return self .format_report_data ("H002" , unused_indexes_by_db , node_name )
0 commit comments