mirror of
https://github.com/openai/codex.git
synced 2026-10-22 17:58:46 +00:00
Add client-side exec-server RPC attempt metrics (#42883)
## What changed - Record `exec_server_client_requests_total` for every client RPC call attempt, labeled by protocol method. - Count attempts before local admission so rejected, timed-out, cancelled, and transport-failed calls are included, while notifications and responses are not. - Export the counter to configured OpenTelemetry collectors while excluding it from the built-in Statsig metrics set. ## Testing - Cover every RPC call entry point, successful responses, local and transport failures, timeouts, cancellation, notifications, and disabled metrics. - Verify that the OTLP HTTP exporter retains the counter. GitOrigin-RevId: d266e840d5871aa2c34bed8ce44f3345e2b4650f
This commit is contained in:
@@ -2,6 +2,7 @@ use crate::config::OtelExporter;
|
||||
use crate::metrics::Result;
|
||||
use crate::metrics::names::API_CALL_COUNT_METRIC;
|
||||
use crate::metrics::names::API_CALL_DURATION_METRIC;
|
||||
use crate::metrics::names::EXEC_SERVER_CLIENT_REQUEST_COUNT_METRIC;
|
||||
use crate::metrics::names::RESPONSES_API_ENGINE_IAPI_TTFT_DURATION_METRIC;
|
||||
use crate::metrics::names::RESPONSES_API_ENGINE_SERVICE_TBT_DURATION_METRIC;
|
||||
use crate::metrics::names::RESPONSES_API_ENGINE_SERVICE_TTFT_DURATION_METRIC;
|
||||
@@ -23,6 +24,8 @@ const STATSIG_DISABLED_METRICS: &[&str] = &[
|
||||
API_CALL_COUNT_METRIC,
|
||||
API_CALL_DURATION_METRIC,
|
||||
CONVERSATION_TURN_COUNT_METRIC,
|
||||
// Caller-side executor volume belongs in configured observability collectors.
|
||||
EXEC_SERVER_CLIENT_REQUEST_COUNT_METRIC,
|
||||
RESPONSES_API_ENGINE_IAPI_TTFT_DURATION_METRIC,
|
||||
RESPONSES_API_ENGINE_SERVICE_TBT_DURATION_METRIC,
|
||||
RESPONSES_API_ENGINE_SERVICE_TTFT_DURATION_METRIC,
|
||||
|
||||
@@ -5,6 +5,8 @@ pub const ARTIFACT_OPERATION_STARTED_METRIC: &str = "codex.artifact.operation.st
|
||||
pub const ARTIFACT_OPERATION_EXPECTED_OUTPUT_COUNT_METRIC: &str =
|
||||
"codex.artifact.operation.expected_output_count";
|
||||
pub const PROCESS_START_METRIC: &str = "codex.process.start";
|
||||
/// Caller-side exec-server RPC attempts, including local admission and transport failures.
|
||||
pub const EXEC_SERVER_CLIENT_REQUEST_COUNT_METRIC: &str = "exec_server_client_requests_total";
|
||||
pub const API_CALL_COUNT_METRIC: &str = "codex.api_request";
|
||||
pub const API_CALL_DURATION_METRIC: &str = "codex.api_request.duration_ms";
|
||||
pub const SSE_EVENT_COUNT_METRIC: &str = "codex.sse_event";
|
||||
|
||||
@@ -605,6 +605,7 @@ mod tests {
|
||||
use super::*;
|
||||
use crate::metrics::API_CALL_COUNT_METRIC;
|
||||
use crate::metrics::API_CALL_DURATION_METRIC;
|
||||
use crate::metrics::EXEC_SERVER_CLIENT_REQUEST_COUNT_METRIC;
|
||||
use crate::metrics::MetricsExporter;
|
||||
use crate::metrics::RESPONSES_API_ENGINE_IAPI_TTFT_DURATION_METRIC;
|
||||
use crate::metrics::RESPONSES_API_ENGINE_SERVICE_TBT_DURATION_METRIC;
|
||||
@@ -731,6 +732,12 @@ mod tests {
|
||||
|
||||
metrics.counter(API_CALL_COUNT_METRIC, /*inc*/ 1, &[])?;
|
||||
metrics.record_duration(API_CALL_DURATION_METRIC, Duration::from_millis(100), &[])?;
|
||||
metrics.counter_with_description(
|
||||
EXEC_SERVER_CLIENT_REQUEST_COUNT_METRIC,
|
||||
"Client-side exec-server RPC attempts.",
|
||||
/*inc*/ 1,
|
||||
&[("method", "fs/readFile")],
|
||||
)?;
|
||||
metrics.counter("codex.conversation.turn.count", /*inc*/ 1, &[])?;
|
||||
metrics.record_duration(
|
||||
RESPONSES_API_ENGINE_IAPI_TTFT_DURATION_METRIC,
|
||||
|
||||
Reference in New Issue
Block a user