vector/internal_events/
config.rs

1use metrics::counter;
2use vector_lib::internal_event::InternalEvent;
3
4#[derive(Debug)]
5pub struct ConfigReloadRejected {
6    reason: ReloadRejectReason,
7}
8
9impl InternalEvent for ConfigReloadRejected {
10    fn emit(self) {
11        match &self.reason {
12            ReloadRejectReason::GlobalOptionsChanged { fields } => {
13                error!(
14                    message = "Config reload rejected due to non-reloadable global options.",
15                    reason = %self.reason.as_str(),
16                    changed_fields = %fields.join(", "),
17                );
18
19                counter!(
20                    "config_reload_rejected",
21                    "reason" => self.reason.as_str(),
22                )
23                .increment(1);
24            }
25            ReloadRejectReason::FailedToComputeGlobalDiff(err) => {
26                error!(
27                    message = "Config reload rejected due to failed to compute global diff.",
28                    reason = %self.reason.as_str(),
29                    error = %err,
30                );
31
32                counter!(
33                    "config_reload_rejected",
34                    "reason" => self.reason.as_str(),
35                )
36                .increment(1);
37            }
38        }
39    }
40
41    fn name(&self) -> Option<&'static str> {
42        Some("ConfigReloadRejected")
43    }
44}
45
46impl ConfigReloadRejected {
47    pub const fn global_options_changed(fields: Vec<String>) -> Self {
48        Self {
49            reason: ReloadRejectReason::GlobalOptionsChanged { fields },
50        }
51    }
52
53    pub const fn failed_to_compute_global_diff(error: serde_json::Error) -> Self {
54        Self {
55            reason: ReloadRejectReason::FailedToComputeGlobalDiff(error),
56        }
57    }
58}
59
60#[derive(Debug)]
61enum ReloadRejectReason {
62    GlobalOptionsChanged { fields: Vec<String> },
63    FailedToComputeGlobalDiff(serde_json::Error),
64}
65
66impl ReloadRejectReason {
67    const fn as_str(&self) -> &'static str {
68        match self {
69            Self::GlobalOptionsChanged { fields: _ } => "global_options changed",
70            Self::FailedToComputeGlobalDiff(_) => "failed to compute global diff",
71        }
72    }
73}
74
75#[derive(Debug)]
76pub struct ConfigReloaded;
77
78impl InternalEvent for ConfigReloaded {
79    fn emit(self) {
80        info!("New configuration loaded successfully.");
81
82        counter!("config_reloaded",).increment(1);
83    }
84
85    fn name(&self) -> Option<&'static str> {
86        Some("ConfigReloaded")
87    }
88}