vector/internal_events/
datadog_metrics.rs1use metrics::counter;
2use vector_lib::NamedInternalEvent;
3use vector_lib::internal_event::{
4 ComponentEventsDropped, InternalEvent, UNINTENTIONAL, error_stage, error_type,
5};
6
7#[derive(Debug, NamedInternalEvent)]
8pub struct DatadogMetricsEncodingError<'a> {
9 pub reason: &'a str,
10 pub error_code: &'static str,
11 pub dropped_events: usize,
12}
13
14impl InternalEvent for DatadogMetricsEncodingError<'_> {
15 fn emit(self) {
16 error!(
17 message = self.reason,
18 error_code = self.error_code,
19 error_type = error_type::ENCODER_FAILED,
20 intentional = "false",
21 stage = error_stage::PROCESSING,
22 );
23 counter!(
24 "component_errors_total",
25 "error_code" => self.error_code,
26 "error_type" => error_type::ENCODER_FAILED,
27 "stage" => error_stage::PROCESSING,
28 )
29 .increment(1);
30
31 if self.dropped_events > 0 {
32 emit!(ComponentEventsDropped::<UNINTENTIONAL> {
33 count: self.dropped_events,
34 reason: self.reason,
35 });
36 }
37 }
38}