@@ -24,6 +24,7 @@ use crate::option::{Mode, CONFIG};
2424use crate :: storage;
2525use crate :: { metadata, stats} ;
2626
27+ use crate :: stats:: Stats ;
2728use actix_web:: { web, HttpRequest , Responder } ;
2829use chrono:: { DateTime , Utc } ;
2930use clokwerk:: { AsyncScheduler , Interval } ;
@@ -70,6 +71,12 @@ pub struct Report {
7071 total_events_count : u64 ,
7172 total_json_bytes : u64 ,
7273 total_parquet_bytes : u64 ,
74+ current_events_count : u64 ,
75+ current_json_bytes : u64 ,
76+ current_parquet_bytes : u64 ,
77+ deleted_events_count : u64 ,
78+ deleted_json_bytes : u64 ,
79+ deleted_parquet_bytes : u64 ,
7380 metrics : HashMap < String , Value > ,
7481}
7582
@@ -112,6 +119,12 @@ impl Report {
112119 total_events_count : ingestor_metrics. 3 ,
113120 total_json_bytes : ingestor_metrics. 4 ,
114121 total_parquet_bytes : ingestor_metrics. 5 ,
122+ current_events_count : ingestor_metrics. 6 ,
123+ current_json_bytes : ingestor_metrics. 7 ,
124+ current_parquet_bytes : ingestor_metrics. 8 ,
125+ deleted_events_count : ingestor_metrics. 9 ,
126+ deleted_json_bytes : ingestor_metrics. 10 ,
127+ deleted_parquet_bytes : ingestor_metrics. 11 ,
115128 metrics : build_metrics ( ) . await ,
116129 } )
117130 }
@@ -132,26 +145,70 @@ fn total_streams() -> usize {
132145 metadata:: STREAM_INFO . list_streams ( ) . len ( )
133146}
134147
135- fn total_event_stats ( ) -> ( u64 , u64 , u64 ) {
148+ fn total_event_stats ( ) -> ( Stats , Stats , Stats ) {
136149 let mut total_events: u64 = 0 ;
137150 let mut total_parquet_bytes: u64 = 0 ;
138151 let mut total_json_bytes: u64 = 0 ;
139152
153+ let mut current_events: u64 = 0 ;
154+ let mut current_parquet_bytes: u64 = 0 ;
155+ let mut current_json_bytes: u64 = 0 ;
156+
157+ let mut deleted_events: u64 = 0 ;
158+ let mut deleted_parquet_bytes: u64 = 0 ;
159+ let mut deleted_json_bytes: u64 = 0 ;
160+
140161 for stream in metadata:: STREAM_INFO . list_streams ( ) {
141162 let Some ( stats) = stats:: get_current_stats ( & stream, "json" ) else {
142163 continue ;
143164 } ;
144- total_events += stats. events ;
145- total_parquet_bytes += stats. storage ;
146- total_json_bytes += stats. ingestion ;
165+ total_events += stats. lifetime_stats . events ;
166+ total_parquet_bytes += stats. lifetime_stats . storage ;
167+ total_json_bytes += stats. lifetime_stats . ingestion ;
168+
169+ current_events += stats. current_stats . events ;
170+ current_parquet_bytes += stats. current_stats . storage ;
171+ current_json_bytes += stats. current_stats . ingestion ;
172+
173+ deleted_events += stats. deleted_stats . events ;
174+ deleted_parquet_bytes += stats. deleted_stats . storage ;
175+ deleted_json_bytes += stats. deleted_stats . ingestion ;
147176 }
148- ( total_events, total_json_bytes, total_parquet_bytes)
177+
178+ (
179+ Stats {
180+ events : total_events,
181+ ingestion : total_json_bytes,
182+ storage : total_parquet_bytes,
183+ } ,
184+ Stats {
185+ events : current_events,
186+ ingestion : current_json_bytes,
187+ storage : current_parquet_bytes,
188+ } ,
189+ Stats {
190+ events : deleted_events,
191+ ingestion : deleted_json_bytes,
192+ storage : deleted_parquet_bytes,
193+ } ,
194+ )
149195}
150196
151- async fn fetch_ingestors_metrics ( ) -> anyhow:: Result < ( u64 , u64 , usize , u64 , u64 , u64 ) > {
197+ async fn fetch_ingestors_metrics (
198+ ) -> anyhow:: Result < ( u64 , u64 , usize , u64 , u64 , u64 , u64 , u64 , u64 , u64 , u64 , u64 ) > {
152199 let event_stats = total_event_stats ( ) ;
153- let mut node_metrics =
154- NodeMetrics :: new ( total_streams ( ) , event_stats. 0 , event_stats. 1 , event_stats. 2 ) ;
200+ let mut node_metrics = NodeMetrics :: new (
201+ total_streams ( ) ,
202+ event_stats. 0 . events ,
203+ event_stats. 0 . ingestion ,
204+ event_stats. 0 . storage ,
205+ event_stats. 1 . events ,
206+ event_stats. 1 . ingestion ,
207+ event_stats. 1 . storage ,
208+ event_stats. 2 . events ,
209+ event_stats. 2 . ingestion ,
210+ event_stats. 2 . storage ,
211+ ) ;
155212
156213 let mut vec = vec ! [ ] ;
157214 let mut active_ingestors = 0u64 ;
@@ -198,6 +255,12 @@ async fn fetch_ingestors_metrics() -> anyhow::Result<(u64, u64, usize, u64, u64,
198255 node_metrics. total_events_count ,
199256 node_metrics. total_json_bytes ,
200257 node_metrics. total_parquet_bytes ,
258+ node_metrics. current_events_count ,
259+ node_metrics. current_json_bytes ,
260+ node_metrics. current_parquet_bytes ,
261+ node_metrics. deleted_events_count ,
262+ node_metrics. deleted_json_bytes ,
263+ node_metrics. deleted_parquet_bytes ,
201264 ) )
202265}
203266
@@ -255,30 +318,56 @@ struct NodeMetrics {
255318 total_events_count : u64 ,
256319 total_json_bytes : u64 ,
257320 total_parquet_bytes : u64 ,
321+ current_events_count : u64 ,
322+ current_json_bytes : u64 ,
323+ current_parquet_bytes : u64 ,
324+ deleted_events_count : u64 ,
325+ deleted_json_bytes : u64 ,
326+ deleted_parquet_bytes : u64 ,
258327}
259328
260329impl NodeMetrics {
261330 fn build ( ) -> Self {
262331 let event_stats = total_event_stats ( ) ;
263332 Self {
264333 stream_count : total_streams ( ) ,
265- total_events_count : event_stats. 0 ,
266- total_json_bytes : event_stats. 1 ,
267- total_parquet_bytes : event_stats. 2 ,
334+ total_events_count : event_stats. 0 . events ,
335+ total_json_bytes : event_stats. 0 . ingestion ,
336+ total_parquet_bytes : event_stats. 0 . storage ,
337+
338+ current_events_count : event_stats. 1 . events ,
339+ current_json_bytes : event_stats. 1 . ingestion ,
340+ current_parquet_bytes : event_stats. 1 . storage ,
341+
342+ deleted_events_count : event_stats. 2 . events ,
343+ deleted_json_bytes : event_stats. 2 . ingestion ,
344+ deleted_parquet_bytes : event_stats. 2 . storage ,
268345 }
269346 }
270-
347+ # [ allow ( clippy :: too_many_arguments ) ]
271348 fn new (
272349 stream_count : usize ,
273350 total_events_count : u64 ,
274351 total_json_bytes : u64 ,
275352 total_parquet_bytes : u64 ,
353+ current_events_count : u64 ,
354+ current_json_bytes : u64 ,
355+ current_parquet_bytes : u64 ,
356+ deleted_events_count : u64 ,
357+ deleted_json_bytes : u64 ,
358+ deleted_parquet_bytes : u64 ,
276359 ) -> Self {
277360 Self {
278361 stream_count,
279362 total_events_count,
280363 total_json_bytes,
281364 total_parquet_bytes,
365+ current_events_count,
366+ current_json_bytes,
367+ current_parquet_bytes,
368+ deleted_events_count,
369+ deleted_json_bytes,
370+ deleted_parquet_bytes,
282371 }
283372 }
284373
0 commit comments