feat: timer total turn metrics (#9382)

This commit is contained in:
jif-oai
2026-01-19 11:44:31 +01:00
committed by GitHub
parent a803467f52
commit 7ebe13f692
5 changed files with 11 additions and 3 deletions

View File

@@ -525,7 +525,6 @@ impl Session {
session_configuration.collaboration_mode.model(),
model_info.slug.as_str(),
);
let per_turn_config = Arc::new(per_turn_config);
let client = ModelClient::new(
per_turn_config.clone(),

View File

@@ -37,7 +37,6 @@ pub(crate) enum TaskKind {
Compact,
}
#[derive(Clone)]
pub(crate) struct RunningTask {
pub(crate) done: Arc<Notify>,
pub(crate) kind: TaskKind,
@@ -45,6 +44,8 @@ pub(crate) struct RunningTask {
pub(crate) cancellation_token: CancellationToken,
pub(crate) handle: Arc<AbortOnDropHandle<()>>,
pub(crate) turn_context: Arc<TurnContext>,
// Timer recorded when the task drops to capture the full turn duration.
pub(crate) _timer: Option<codex_otel::Timer>,
}
impl ActiveTurn {

View File

@@ -144,6 +144,12 @@ impl Session {
})
};
let timer = turn_context
.client
.get_otel_manager()
.start_timer("codex.turn.e2e_duration_ms", &[])
.ok();
let running_task = RunningTask {
done,
handle: Arc::new(AbortOnDropHandle::new(handle)),
@@ -151,6 +157,7 @@ impl Session {
task,
cancellation_token,
turn_context: Arc::clone(&turn_context),
_timer: timer,
};
self.register_new_active_task(running_task).await;
}

View File

@@ -9,7 +9,7 @@ use crate::metrics::MetricsClient;
use crate::metrics::MetricsConfig;
use crate::metrics::MetricsError;
use crate::metrics::Result as MetricsResult;
use crate::metrics::timer::Timer;
pub use crate::metrics::timer::Timer;
use crate::metrics::validation::validate_tag_key;
use crate::metrics::validation::validate_tag_value;
use crate::otel_provider::OtelProvider;

View File

@@ -2,6 +2,7 @@ use crate::metrics::MetricsClient;
use crate::metrics::error::Result;
use std::time::Instant;
#[derive(Debug)]
pub struct Timer {
name: String,
tags: Vec<(String, String)>,