vector/internal_events/
expansion.rs1use metrics::counter;
2use vector_lib::internal_event::{error_stage, error_type};
3use vector_lib::internal_event::{ComponentEventsDropped, InternalEvent, UNINTENTIONAL};
4
5pub struct PairExpansionError<'a> {
6 pub key: &'a str,
7 pub value: &'a str,
8 pub drop_event: bool,
9 pub error: serde_json::Error,
10}
11
12impl InternalEvent for PairExpansionError<'_> {
13 fn emit(self) {
14 let message = format!("Failed to expand key: `{}`:`{}`", self.key, self.value);
15
16 if self.drop_event {
17 error!(
18 message = %message,
19 error = %self.error,
20 error_type = error_type::PARSER_FAILED,
21 stage = error_stage::PROCESSING,
22 internal_log_rate_limit = true,
23 );
24
25 counter!(
26 "component_errors_total",
27 "error_type" => error_type::PARSER_FAILED,
28 "stage" => error_stage::PROCESSING,
29 )
30 .increment(1);
31
32 emit!(ComponentEventsDropped::<UNINTENTIONAL> {
33 count: 1,
34 reason: &message,
35 });
36 } else {
37 warn!(
38 message = %message,
39 error = %self.error,
40 error_type = error_type::PARSER_FAILED,
41 stage = error_stage::PROCESSING,
42 internal_log_rate_limit = true,
43 );
44 }
45 }
46}