diff --git a/codex-rs/core/src/otel_init.rs b/codex-rs/core/src/otel_init.rs index f9bf75e8acb..5ba714959ca 100644 --- a/codex-rs/core/src/otel_init.rs +++ b/codex-rs/core/src/otel_init.rs @@ -6,7 +6,7 @@ use codex_otel::config::OtelExporter; use codex_otel::config::OtelHttpProtocol; use codex_otel::config::OtelSettings; use codex_otel::config::OtelTlsConfig as OtelTlsSettings; -use codex_otel::traces::otel_provider::OtelProvider; +use codex_otel::otel_provider::OtelProvider; use std::error::Error; /// Build an OpenTelemetry provider from the app Config. diff --git a/codex-rs/otel/README.md b/codex-rs/otel/README.md index 79f4e8f45c9..0194eea7f29 100644 --- a/codex-rs/otel/README.md +++ b/codex-rs/otel/README.md @@ -2,21 +2,22 @@ `codex-otel` is the OpenTelemetry integration crate for Codex. It provides: -- Trace/log exporters and tracing subscriber layers (`codex_otel::traces::otel_provider`). +- Trace/log/metrics exporters and tracing subscriber layers (`codex_otel::otel_provider`). - A structured event helper (`codex_otel::OtelManager`). - OpenTelemetry metrics support via OTLP exporters (`codex_otel::metrics`). - A metrics facade on `OtelManager` so tracing + metrics share metadata. ## Tracing and logs -Create an OTEL provider from `OtelSettings`, then attach its layers to your -`tracing_subscriber` registry: +Create an OTEL provider from `OtelSettings`. The provider also configures +metrics (when enabled), then attach its layers to your `tracing_subscriber` +registry: ```rust use codex_otel::config::OtelExporter; use codex_otel::config::OtelHttpProtocol; use codex_otel::config::OtelSettings; -use codex_otel::traces::otel_provider::OtelProvider; +use codex_otel::otel_provider::OtelProvider; use tracing_subscriber::prelude::*; let settings = OtelSettings { diff --git a/codex-rs/otel/src/lib.rs b/codex-rs/otel/src/lib.rs index 25607623204..dc53fd01191 100644 --- a/codex-rs/otel/src/lib.rs +++ b/codex-rs/otel/src/lib.rs @@ -1,5 +1,6 @@ pub mod config; pub mod metrics; +pub mod otel_provider; pub mod traces; mod otlp; @@ -11,7 +12,7 @@ use crate::metrics::Result as MetricsResult; use crate::metrics::timer::Timer; use crate::metrics::validation::validate_tag_key; use crate::metrics::validation::validate_tag_value; -use crate::traces::otel_provider::OtelProvider; +use crate::otel_provider::OtelProvider; use codex_protocol::ThreadId; use serde::Serialize; use std::time::Duration; diff --git a/codex-rs/otel/src/traces/otel_provider.rs b/codex-rs/otel/src/otel_provider.rs similarity index 99% rename from codex-rs/otel/src/traces/otel_provider.rs rename to codex-rs/otel/src/otel_provider.rs index b6a542d4bda..8ad264f8a7c 100644 --- a/codex-rs/otel/src/traces/otel_provider.rs +++ b/codex-rs/otel/src/otel_provider.rs @@ -47,8 +47,6 @@ static TRACEPARENT_CONTEXT: OnceLock> = OnceLock::new(); thread_local! { static TRACEPARENT_GUARD: RefCell> = const { RefCell::new(None) }; } - -// TODO(jif) move OtelProvider out of `traces/` pub struct OtelProvider { pub logger: Option, pub tracer_provider: Option, diff --git a/codex-rs/otel/src/traces/mod.rs b/codex-rs/otel/src/traces/mod.rs index a58949f9ab3..eca5bff16ba 100644 --- a/codex-rs/otel/src/traces/mod.rs +++ b/codex-rs/otel/src/traces/mod.rs @@ -1,2 +1 @@ pub mod otel_manager; -pub mod otel_provider; diff --git a/codex-rs/otel/src/traces/otel_manager.rs b/codex-rs/otel/src/traces/otel_manager.rs index f431f1a527f..20e1c3d69c6 100644 --- a/codex-rs/otel/src/traces/otel_manager.rs +++ b/codex-rs/otel/src/traces/otel_manager.rs @@ -1,4 +1,4 @@ -use crate::traces::otel_provider::traceparent_context_from_env; +use crate::otel_provider::traceparent_context_from_env; use chrono::SecondsFormat; use chrono::Utc; use codex_api::ResponseEvent;