@@ -368,64 +368,29 @@ pub async fn sync_role_update_with_ingestors(
368368 Ok ( ( ) )
369369}
370370
371- pub async fn fetch_daily_stats_from_ingestors (
372- stream_name : & str ,
371+ pub fn fetch_daily_stats_from_ingestors (
373372 date : & str ,
373+ stream_meta_list : & [ ObjectStoreFormat ] ,
374374) -> Result < Stats , StreamError > {
375- let mut total_events_ingested: u64 = 0 ;
376- let mut total_ingestion_size: u64 = 0 ;
377- let mut total_storage_size: u64 = 0 ;
378-
379- let ingestor_infos = get_ingestor_info ( ) . await . map_err ( |err| {
380- error ! ( "Fatal: failed to get ingestor info: {:?}" , err) ;
381- StreamError :: Anyhow ( err)
382- } ) ?;
383- for ingestor in ingestor_infos. iter ( ) {
384- let uri = Url :: parse ( & format ! (
385- "{}{}/metrics" ,
386- & ingestor. domain_name,
387- base_path_without_preceding_slash( )
388- ) )
389- . map_err ( |err| {
390- StreamError :: Anyhow ( anyhow:: anyhow!( "Invalid URL in Ingestor Metadata: {}" , err) )
391- } ) ?;
392-
393- let res = HTTP_CLIENT
394- . get ( uri)
395- . header ( header:: AUTHORIZATION , & ingestor. token )
396- . header ( header:: CONTENT_TYPE , "application/json" )
397- . send ( )
398- . await ;
399-
400- if let Ok ( res) = res {
401- let text = res
402- . text ( )
403- . await
404- . map_err ( |err| StreamError :: Anyhow ( anyhow:: anyhow!( "Request failed: {}" , err) ) ) ?;
405- let lines: Vec < Result < String , std:: io:: Error > > =
406- text. lines ( ) . map ( |line| Ok ( line. to_owned ( ) ) ) . collect_vec ( ) ;
407-
408- let sample = prometheus_parse:: Scrape :: parse ( lines. into_iter ( ) )
409- . map_err ( |err| {
410- StreamError :: Anyhow ( anyhow:: anyhow!(
411- "Invalid URL in Ingestor Metadata: {}" ,
412- err
413- ) )
414- } ) ?
415- . samples ;
416-
417- let ( events_ingested, ingestion_size, storage_size) =
418- Metrics :: get_daily_stats_from_samples ( sample, stream_name, date) ;
419- total_events_ingested += events_ingested;
420- total_ingestion_size += ingestion_size;
421- total_storage_size += storage_size;
375+ // for the given date, get the stats from the ingestors
376+ let mut events_ingested = 0 ;
377+ let mut ingestion_size = 0 ;
378+ let mut storage_size = 0 ;
379+
380+ for meta in stream_meta_list. iter ( ) {
381+ for manifest in meta. snapshot . manifest_list . iter ( ) {
382+ if manifest. time_lower_bound . date_naive ( ) . to_string ( ) == date {
383+ events_ingested += manifest. events_ingested ;
384+ ingestion_size += manifest. ingestion_size ;
385+ storage_size += manifest. storage_size ;
386+ }
422387 }
423388 }
424389
425390 let stats = Stats {
426- events : total_events_ingested ,
427- ingestion : total_ingestion_size ,
428- storage : total_storage_size ,
391+ events : events_ingested ,
392+ ingestion : ingestion_size ,
393+ storage : storage_size ,
429394 } ;
430395 Ok ( stats)
431396}
@@ -475,17 +440,17 @@ pub async fn fetch_stats_from_ingestors(
475440 Utc :: now ( ) ,
476441 IngestionStats :: new (
477442 count,
478- format ! ( "{} Bytes" , ingestion_size) ,
443+ ingestion_size,
479444 lifetime_count,
480- format ! ( "{} Bytes" , lifetime_ingestion_size) ,
445+ lifetime_ingestion_size,
481446 deleted_count,
482- format ! ( "{} Bytes" , deleted_ingestion_size) ,
447+ deleted_ingestion_size,
483448 "json" ,
484449 ) ,
485450 StorageStats :: new (
486- format ! ( "{} Bytes" , storage_size) ,
487- format ! ( "{} Bytes" , lifetime_storage_size) ,
488- format ! ( "{} Bytes" , deleted_storage_size) ,
451+ storage_size,
452+ lifetime_storage_size,
453+ deleted_storage_size,
489454 "parquet" ,
490455 ) ,
491456 ) ;
0 commit comments