diff --git a/crates/common/src/config/telemetry.rs b/crates/common/src/config/telemetry.rs index a810f9c7..30896e7d 100644 --- a/crates/common/src/config/telemetry.rs +++ b/crates/common/src/config/telemetry.rs @@ -121,6 +121,7 @@ pub struct Tracers { pub struct Metrics { pub prometheus: Option, pub otel: Option>, + pub log_path: Option, } #[derive(Debug, Clone, Default)] @@ -485,7 +486,7 @@ impl Tracers { EventType::Telemetry(TelemetryEvent::LogError).into() } TelemetrySubscriberType::OtelTracer(_) => { - EventType::Telemetry(TelemetryEvent::OtelExpoterError).into() + EventType::Telemetry(TelemetryEvent::OtelExporterError).into() } TelemetrySubscriberType::Webhook(_) => { EventType::Telemetry(TelemetryEvent::WebhookError).into() @@ -607,8 +608,30 @@ impl Metrics { let mut metrics = Metrics { prometheus: None, otel: None, + log_path: None, }; + // Obtain log path + for tracer_id in config.sub_keys("tracer", ".type") { + if config + .value(("tracer", tracer_id, "enable")) + .unwrap_or("true") + == "true" + && config + .value(("tracer", tracer_id, "type")) + .unwrap_or_default() + == "log" + { + if let Some(path) = config + .value(("tracer", tracer_id, "path")) + .map(|s| s.to_string()) + { + metrics.log_path = Some(path); + break; + } + } + } + if config .property_or_default("metrics.prometheus.enable", "false") .unwrap_or(false) diff --git a/crates/common/src/telemetry/metrics/prometheus.rs b/crates/common/src/telemetry/metrics/prometheus.rs index c55687c0..929b8f65 100644 --- a/crates/common/src/telemetry/metrics/prometheus.rs +++ b/crates/common/src/telemetry/metrics/prometheus.rs @@ -62,9 +62,9 @@ impl Core { metrics.push(metric); } - TextEncoder::new() - .encode_to_string(&metrics) - .map_err(|e| trc::EventType::Telemetry(trc::TelemetryEvent::OtelExpoterError).reason(e)) + TextEncoder::new().encode_to_string(&metrics).map_err(|e| { + trc::EventType::Telemetry(trc::TelemetryEvent::OtelExporterError).reason(e) + }) } } diff --git a/crates/common/src/telemetry/tracers/otel.rs b/crates/common/src/telemetry/tracers/otel.rs index 7f081d20..ea3be308 100644 --- a/crates/common/src/telemetry/tracers/otel.rs +++ b/crates/common/src/telemetry/tracers/otel.rs @@ -89,7 +89,7 @@ pub(crate) fn spawn_otel_tracer(builder: SubscriberBuilder, mut otel: OtelTracer .await { trc::event!( - Telemetry(TelemetryEvent::OtelExpoterError), + Telemetry(TelemetryEvent::OtelExporterError), Details = "Failed to export spans", Reason = err.to_string() ); @@ -103,7 +103,7 @@ pub(crate) fn spawn_otel_tracer(builder: SubscriberBuilder, mut otel: OtelTracer .await { trc::event!( - Telemetry(TelemetryEvent::OtelExpoterError), + Telemetry(TelemetryEvent::OtelExporterError), Details = "Failed to export logs", Reason = err.to_string() ); diff --git a/crates/jmap/src/api/management/log.rs b/crates/jmap/src/api/management/log.rs index 271daeb7..9ba0eade 100644 --- a/crates/jmap/src/api/management/log.rs +++ b/crates/jmap/src/api/management/log.rs @@ -26,13 +26,11 @@ struct LogEntry { impl JMAP { pub async fn handle_view_logs(&self, req: &HttpRequest) -> trc::Result { - // Obtain log file path let path = self .core - .storage - .config - .get("tracer.log.path") - .await? + .metrics + .log_path + .clone() .ok_or_else(|| manage::unsupported("Tracer log path not configured"))?; let params = UrlParams::new(req.uri().query()); diff --git a/crates/jmap/src/auth/authenticate.rs b/crates/jmap/src/auth/authenticate.rs index 07b2cf0d..1d2168df 100644 --- a/crates/jmap/src/auth/authenticate.rs +++ b/crates/jmap/src/auth/authenticate.rs @@ -90,7 +90,7 @@ impl JMAP { // Enforce anonymous rate limit self.is_anonymous_allowed(&session.remote_ip).await?; - Err(trc::AuthEvent::Error + Err(trc::AuthEvent::Failed .into_err() .details("Missing Authorization header.") .caused_by(trc::location!())) diff --git a/crates/trc/src/event/description.rs b/crates/trc/src/event/description.rs index 6d520e1e..69dcb191 100644 --- a/crates/trc/src/event/description.rs +++ b/crates/trc/src/event/description.rs @@ -585,7 +585,7 @@ impl TelemetryEvent { TelemetryEvent::LogError => "Log collector error", TelemetryEvent::WebhookError => "Webhook collector error", TelemetryEvent::JournalError => "Journal collector error", - TelemetryEvent::OtelExpoterError => "OpenTelemetry exporter error", + TelemetryEvent::OtelExporterError => "OpenTelemetry exporter error", TelemetryEvent::OtelMetricsExporterError => "OpenTelemetry metrics exporter error", TelemetryEvent::PrometheusExporterError => "Prometheus exporter error", } diff --git a/crates/trc/src/ipc/metrics.rs b/crates/trc/src/ipc/metrics.rs index 99930825..558b30c9 100644 --- a/crates/trc/src/ipc/metrics.rs +++ b/crates/trc/src/ipc/metrics.rs @@ -664,7 +664,7 @@ impl EventType { EventType::Telemetry( TelemetryEvent::LogError | TelemetryEvent::WebhookError - | TelemetryEvent::OtelExpoterError + | TelemetryEvent::OtelExporterError | TelemetryEvent::OtelMetricsExporterError | TelemetryEvent::PrometheusExporterError | TelemetryEvent::JournalError, diff --git a/crates/trc/src/lib.rs b/crates/trc/src/lib.rs index bce16913..fa257a78 100644 --- a/crates/trc/src/lib.rs +++ b/crates/trc/src/lib.rs @@ -655,7 +655,7 @@ pub enum ServerEvent { pub enum TelemetryEvent { LogError, WebhookError, - OtelExpoterError, + OtelExporterError, OtelMetricsExporterError, PrometheusExporterError, JournalError, diff --git a/crates/trc/src/serializers/binary.rs b/crates/trc/src/serializers/binary.rs index e0f7b2b8..e00d81a6 100644 --- a/crates/trc/src/serializers/binary.rs +++ b/crates/trc/src/serializers/binary.rs @@ -842,7 +842,7 @@ impl EventType { EventType::Store(StoreEvent::UnexpectedError) => 533, EventType::Telemetry(TelemetryEvent::JournalError) => 534, EventType::Telemetry(TelemetryEvent::LogError) => 535, - EventType::Telemetry(TelemetryEvent::OtelExpoterError) => 536, + EventType::Telemetry(TelemetryEvent::OtelExporterError) => 536, EventType::Telemetry(TelemetryEvent::OtelMetricsExporterError) => 537, EventType::Telemetry(TelemetryEvent::PrometheusExporterError) => 538, EventType::Telemetry(TelemetryEvent::WebhookError) => 539, @@ -1431,7 +1431,7 @@ impl EventType { 533 => Some(EventType::Store(StoreEvent::UnexpectedError)), 534 => Some(EventType::Telemetry(TelemetryEvent::JournalError)), 535 => Some(EventType::Telemetry(TelemetryEvent::LogError)), - 536 => Some(EventType::Telemetry(TelemetryEvent::OtelExpoterError)), + 536 => Some(EventType::Telemetry(TelemetryEvent::OtelExporterError)), 537 => Some(EventType::Telemetry( TelemetryEvent::OtelMetricsExporterError, )),