chore: move otel provider outside of trace module (#8968)

This commit is contained in:
jif-oai authored and GitHub committed 2026-01-09 12:42:54 +00:00
1 parent e9c548c65e
commit 16c66c37eb
6 files changed
+9 -10

No files matched your search

+1 -1
View File
@@ -6,7 +6,7 @@ use codex_otel::config::OtelExporter;
use codex_otel::config::OtelHttpProtocol; use codex_otel::config::OtelHttpProtocol;
use codex_otel::config::OtelSettings; use codex_otel::config::OtelSettings;
use codex_otel::config::OtelTlsConfig as OtelTlsSettings; use codex_otel::config::OtelTlsConfig as OtelTlsSettings;
use codex_otel::traces::otel_provider::OtelProvider; use codex_otel::otel_provider::OtelProvider;
use std::error::Error; use std::error::Error;
/// Build an OpenTelemetry provider from the app Config. /// Build an OpenTelemetry provider from the app Config.
+5 -4
View File
@@ -2,21 +2,22 @@
`codex-otel` is the OpenTelemetry integration crate for Codex. It provides: `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`). - A structured event helper (`codex_otel::OtelManager`).
- OpenTelemetry metrics support via OTLP exporters (`codex_otel::metrics`). - OpenTelemetry metrics support via OTLP exporters (`codex_otel::metrics`).
- A metrics facade on `OtelManager` so tracing + metrics share metadata. - A metrics facade on `OtelManager` so tracing + metrics share metadata.
## Tracing and logs ## Tracing and logs
Create an OTEL provider from `OtelSettings`, then attach its layers to your Create an OTEL provider from `OtelSettings`. The provider also configures
`tracing_subscriber` registry: metrics (when enabled), then attach its layers to your `tracing_subscriber`
registry:
```rust ```rust
use codex_otel::config::OtelExporter; use codex_otel::config::OtelExporter;
use codex_otel::config::OtelHttpProtocol; use codex_otel::config::OtelHttpProtocol;
use codex_otel::config::OtelSettings; use codex_otel::config::OtelSettings;
use codex_otel::traces::otel_provider::OtelProvider; use codex_otel::otel_provider::OtelProvider;
use tracing_subscriber::prelude::*; use tracing_subscriber::prelude::*;
let settings = OtelSettings { let settings = OtelSettings {
+2 -1
View File
@@ -1,5 +1,6 @@
pub mod config; pub mod config;
pub mod metrics; pub mod metrics;
pub mod otel_provider;
pub mod traces; pub mod traces;
mod otlp; mod otlp;
@@ -11,7 +12,7 @@ use crate::metrics::Result as MetricsResult;
use crate::metrics::timer::Timer; use crate::metrics::timer::Timer;
use crate::metrics::validation::validate_tag_key; use crate::metrics::validation::validate_tag_key;
use crate::metrics::validation::validate_tag_value; use crate::metrics::validation::validate_tag_value;
use crate::traces::otel_provider::OtelProvider; use crate::otel_provider::OtelProvider;
use codex_protocol::ThreadId; use codex_protocol::ThreadId;
use serde::Serialize; use serde::Serialize;
use std::time::Duration; use std::time::Duration;
@@ -47,8 +47,6 @@ static TRACEPARENT_CONTEXT: OnceLock<Option<Context>> = OnceLock::new();
thread_local! { thread_local! {
static TRACEPARENT_GUARD: RefCell<Option<ContextGuard>> = const { RefCell::new(None) }; static TRACEPARENT_GUARD: RefCell<Option<ContextGuard>> = const { RefCell::new(None) };
} }
// TODO(jif) move OtelProvider out of `traces/`
pub struct OtelProvider { pub struct OtelProvider {
pub logger: Option<SdkLoggerProvider>, pub logger: Option<SdkLoggerProvider>,
pub tracer_provider: Option<SdkTracerProvider>, pub tracer_provider: Option<SdkTracerProvider>,
-1
View File
@@ -1,2 +1 @@
pub mod otel_manager; pub mod otel_manager;
pub mod otel_provider;
+1 -1
View File
@@ -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::SecondsFormat;
use chrono::Utc; use chrono::Utc;
use codex_api::ResponseEvent; use codex_api::ResponseEvent;