1818
1919use arrow_array:: RecordBatch ;
2020use arrow_schema:: { Field , Fields , Schema } ;
21- use chrono:: Local ;
21+ use chrono:: { Local , NaiveDateTime } ;
2222use itertools:: Itertools ;
2323use once_cell:: sync:: Lazy ;
2424use std:: collections:: HashMap ;
@@ -27,10 +27,10 @@ use std::sync::{Arc, RwLock};
2727use self :: error:: stream_info:: { CheckAlertError , LoadError , MetadataError } ;
2828use crate :: alerts:: Alerts ;
2929use crate :: metrics:: {
30- EVENTS_INGESTED , EVENTS_INGESTED_SIZE , EVENTS_INGESTED_SIZE_TODAY , EVENTS_INGESTED_TODAY ,
31- LIFETIME_EVENTS_INGESTED , LIFETIME_EVENTS_INGESTED_SIZE ,
30+ EVENTS_INGESTED , EVENTS_INGESTED_DATE , EVENTS_INGESTED_SIZE , EVENTS_INGESTED_SIZE_DATE ,
31+ EVENTS_STORAGE_SIZE_DATE , LIFETIME_EVENTS_INGESTED , LIFETIME_EVENTS_INGESTED_SIZE ,
3232} ;
33- use crate :: storage:: { LogStream , ObjectStorage , StorageDir } ;
33+ use crate :: storage:: { LogStream , ObjectStorage , ObjectStoreFormat , StorageDir } ;
3434use crate :: utils:: arrow:: MergedRecordReader ;
3535use derive_more:: { Deref , DerefMut } ;
3636
@@ -244,7 +244,8 @@ impl StreamInfo {
244244 let alerts = storage. get_alerts ( & stream. name ) . await ?;
245245 let schema = storage. get_schema_on_server_start ( & stream. name ) . await ?;
246246 let meta = storage. get_stream_metadata ( & stream. name ) . await ?;
247-
247+ let meta_clone = meta. clone ( ) ;
248+ let stream_name = stream. name . clone ( ) ;
248249 let schema = update_schema_from_staging ( & stream. name , schema) ;
249250 let schema = HashMap :: from_iter (
250251 schema
@@ -268,10 +269,30 @@ impl StreamInfo {
268269 let mut map = self . write ( ) . expect ( LOCK_EXPECT ) ;
269270
270271 map. insert ( stream. name , metadata) ;
272+ Self :: load_daily_metrics ( meta_clone, & stream_name) ;
271273
272274 Ok ( ( ) )
273275 }
274276
277+ fn load_daily_metrics ( meta : ObjectStoreFormat , stream_name : & str ) {
278+ let manifests = meta. snapshot . manifest_list ;
279+ for manifest in manifests {
280+ let manifest_date = manifest. time_lower_bound . date_naive ( ) . to_string ( ) ;
281+ let events_ingested = manifest. events_ingested ;
282+ let ingestion_size = manifest. ingestion_size ;
283+ let storage_size = manifest. storage_size ;
284+ EVENTS_INGESTED_DATE
285+ . with_label_values ( & [ stream_name, "json" , & manifest_date] )
286+ . set ( events_ingested as i64 ) ;
287+ EVENTS_INGESTED_SIZE_DATE
288+ . with_label_values ( & [ stream_name, "json" , & manifest_date] )
289+ . set ( ingestion_size as i64 ) ;
290+ EVENTS_STORAGE_SIZE_DATE
291+ . with_label_values ( & [ "data" , stream_name, "parquet" , & manifest_date] )
292+ . set ( storage_size as i64 ) ;
293+ }
294+ }
295+
275296 pub fn list_streams ( & self ) -> Vec < String > {
276297 self . read ( )
277298 . expect ( LOCK_EXPECT )
@@ -286,18 +307,20 @@ impl StreamInfo {
286307 origin : & ' static str ,
287308 size : u64 ,
288309 num_rows : u64 ,
310+ parsed_timestamp : NaiveDateTime ,
289311 ) -> Result < ( ) , MetadataError > {
312+ let parsed_date = parsed_timestamp. date ( ) . to_string ( ) ;
290313 EVENTS_INGESTED
291314 . with_label_values ( & [ stream_name, origin] )
292315 . add ( num_rows as i64 ) ;
293- EVENTS_INGESTED_TODAY
294- . with_label_values ( & [ stream_name, origin] )
316+ EVENTS_INGESTED_DATE
317+ . with_label_values ( & [ stream_name, origin, parsed_date . as_str ( ) ] )
295318 . add ( num_rows as i64 ) ;
296319 EVENTS_INGESTED_SIZE
297320 . with_label_values ( & [ stream_name, origin] )
298321 . add ( size as i64 ) ;
299- EVENTS_INGESTED_SIZE_TODAY
300- . with_label_values ( & [ stream_name, origin] )
322+ EVENTS_INGESTED_SIZE_DATE
323+ . with_label_values ( & [ stream_name, origin, parsed_date . as_str ( ) ] )
301324 . add ( size as i64 ) ;
302325 LIFETIME_EVENTS_INGESTED
303326 . with_label_values ( & [ stream_name, origin] )
0 commit comments