mirror of
https://github.com/openai/codex.git
synced 2026-11-02 19:43:24 +00:00
56 lines
1.8 KiB
Rust
56 lines
1.8 KiB
Rust
use opentelemetry_sdk::trace::Tracer;
|
|
|
|
use crate::config::Config;
|
|
use crate::config_types::TelemetryExporterKind as Kind;
|
|
use codex_telemetry as telemetry;
|
|
|
|
/// Build an OpenTelemetry tracer and guard from the app Config.
|
|
///
|
|
/// Returns `None` when telemetry is disabled.
|
|
pub fn build_otel_layer_from_config(
|
|
config: &Config,
|
|
service_name: &str,
|
|
service_version: &str,
|
|
) -> Option<(telemetry::Guard, Tracer)> {
|
|
let exporter = match config.telemetry.exporter {
|
|
Kind::None => telemetry::Exporter::None,
|
|
Kind::OtlpFile => telemetry::Exporter::OtlpFile {
|
|
rotate_mb: config.telemetry.rotate_mb,
|
|
},
|
|
Kind::OtlpHttp => telemetry::Exporter::OtlpHttp {
|
|
endpoint: config
|
|
.telemetry
|
|
.endpoint
|
|
.clone()
|
|
.unwrap_or_else(|| "http://localhost:4318".to_string()),
|
|
headers: config
|
|
.telemetry
|
|
.headers
|
|
.iter()
|
|
.map(|(k, v)| (k.clone(), v.clone()))
|
|
.collect(),
|
|
},
|
|
Kind::OtlpGrpc => telemetry::Exporter::OtlpGrpc {
|
|
endpoint: config
|
|
.telemetry
|
|
.endpoint
|
|
.clone()
|
|
.unwrap_or_else(|| "http://localhost:4317".to_string()),
|
|
headers: config
|
|
.telemetry
|
|
.headers
|
|
.iter()
|
|
.map(|(k, v)| (k.clone(), v.clone()))
|
|
.collect(),
|
|
},
|
|
};
|
|
|
|
telemetry::build_layer(&telemetry::Settings {
|
|
enabled: config.telemetry.enabled,
|
|
exporter,
|
|
service_name: service_name.to_string(),
|
|
service_version: service_version.to_string(),
|
|
codex_home: Some(config.codex_home.clone()),
|
|
})
|
|
}
|