1
- use tracing:: warn;
2
-
3
1
/*
4
2
* Parseable Server (C) 2022 - 2024 Parseable, Inc.
5
3
*
@@ -17,14 +15,21 @@ use tracing::warn;
17
15
* along with this program. If not, see <http://www.gnu.org/licenses/>.
18
16
*
19
17
*/
18
+
19
+ use std:: sync:: Arc ;
20
+
21
+ use prometheus:: core:: Collector ;
22
+ use prometheus:: proto:: MetricFamily ;
23
+ use prometheus:: IntGaugeVec ;
24
+ use tracing:: warn;
25
+
20
26
use crate :: metrics:: {
21
27
DELETED_EVENTS_STORAGE_SIZE , EVENTS_DELETED , EVENTS_DELETED_SIZE , EVENTS_INGESTED ,
22
28
EVENTS_INGESTED_DATE , EVENTS_INGESTED_SIZE , EVENTS_INGESTED_SIZE_DATE ,
23
29
EVENTS_STORAGE_SIZE_DATE , LIFETIME_EVENTS_INGESTED , LIFETIME_EVENTS_INGESTED_SIZE ,
24
30
LIFETIME_EVENTS_STORAGE_SIZE , STORAGE_SIZE ,
25
31
} ;
26
32
use crate :: storage:: { ObjectStorage , ObjectStorageError , ObjectStoreFormat } ;
27
- use std:: sync:: Arc ;
28
33
29
34
/// Helper struct type created by copying stats values from metadata
30
35
#[ derive( Debug , Default , serde:: Serialize , serde:: Deserialize , Clone , Copy , PartialEq , Eq ) ]
@@ -176,13 +181,26 @@ pub fn delete_stats(stream_name: &str, format: &'static str) -> prometheus::Resu
176
181
LIFETIME_EVENTS_INGESTED_SIZE . remove_label_values ( & event_labels) ?;
177
182
LIFETIME_EVENTS_STORAGE_SIZE . remove_label_values ( & storage_size_labels) ?;
178
183
179
- EVENTS_INGESTED_DATE . remove_label_values ( & event_labels) ? ;
180
- EVENTS_INGESTED_SIZE_DATE . remove_label_values ( & event_labels) ? ;
181
- EVENTS_STORAGE_SIZE_DATE . remove_label_values ( & storage_size_labels) ? ;
184
+ delete_with_label_prefix ( & EVENTS_INGESTED_DATE , & event_labels) ;
185
+ delete_with_label_prefix ( & EVENTS_INGESTED_SIZE_DATE , & event_labels) ;
186
+ delete_with_label_prefix ( & EVENTS_STORAGE_SIZE_DATE , & storage_size_labels) ;
182
187
183
188
Ok ( ( ) )
184
189
}
185
190
191
+ fn delete_with_label_prefix ( metrics : & IntGaugeVec , prefix : & [ & str ] ) {
192
+ let families: Vec < MetricFamily > = metrics. collect ( ) . into_iter ( ) . collect ( ) ;
193
+ for metric in families. iter ( ) . flat_map ( |m| m. get_metric ( ) ) {
194
+ let label: Vec < & str > = metric. get_label ( ) . iter ( ) . map ( |l| l. get_value ( ) ) . collect ( ) ;
195
+ if !label. starts_with ( prefix) {
196
+ continue ;
197
+ }
198
+ if let Err ( err) = metrics. remove_label_values ( & label) {
199
+ warn ! ( "Error = {err}" ) ;
200
+ }
201
+ }
202
+ }
203
+
186
204
pub fn event_labels < ' a > ( stream_name : & ' a str , format : & ' static str ) -> [ & ' a str ; 2 ] {
187
205
[ stream_name, format]
188
206
}
0 commit comments