inference/research
verifiedhigh · 0.92updated 2026-10-05

Dynamo frontend terminal failure counter

nvidia-dynamo · counter

Fields

id
metric-exposures/w5e-dynamo-dynamo-frontend-failures-total
Metric name
dynamo_frontend_failures_total
Metric type
counter
Unit
requests
Exposure
prometheus
Endpoint
/metrics on the frontend service
Labels
error_typestatusrequest_type
notes
Counts TERMINAL SEMANTIC request failures, not every error path. The error_type label has an enumerable closed vocabulary in prometheus_names.py: '' (success), validation (4xx with 'Validation:' prefix), not_found (404), overload (429 or 529), unavailable (no backend worker can serve), cancelled (client cancel or timeout), response_timeout (backend accepted then went quiet), internal (500 and unexpected), not_implemented (501). This is finer-grained than any engine in this corpus and it is the reason Dynamo can answer 'was that a 4xx storm or a saturation event' from one series. NVIDIA Dynamo main (ai-dynamo/dynamo), read 2026-10-05. IMPORTANT CONTEXT that changes how every record in this set reads: Dynamo is a serving framework that BRIDGES vendor engine registries rather than reimplementing them. components/src/dynamo/common/backend/metrics.py has engines call register_global_registry (default prometheus_client.REGISTRY) or register_engine_registry (a custom CollectorRegistry, e.g. SGLang's multiprocess one), and their vendor-prefixed series - vllm:, sglang:, trtllm_, lmcache: - appear on the SAME /metrics endpoint alongside Dynamo's own dynamo_* names. So on a Dynamo deployment you will find vLLM and SGLang metrics that are recorded in this repo against THOSE engines, and the dynamo_component / dynamo_namespace / dynamo_endpoint labels plus model and model_name are injected at scrape time by Dynamo. The names below are Dynamo's OWN, from the auto-generated prometheus_names.py (generated from lib/runtime/src/metrics/prometheus_names.rs - do not hand-edit). Prefix is dynamo_frontend.

Notes

Counts TERMINAL SEMANTIC request failures, not every error path. The error_type label has an enumerable closed vocabulary in prometheus_names.py: '' (success), validation (4xx with 'Validation:' prefix), not_found (404), overload (429 or 529), unavailable (no backend worker can serve), cancelled (client cancel or timeout), response_timeout (backend accepted then went quiet), internal (500 and unexpected), not_implemented (501). This is finer-grained than any engine in this corpus and it is the reason Dynamo can answer 'was that a 4xx storm or a saturation event' from one series. NVIDIA Dynamo main (ai-dynamo/dynamo), read 2026-10-05. IMPORTANT CONTEXT that changes how every record in this set reads: Dynamo is a serving framework that BRIDGES vendor engine registries rather than reimplementing them. components/src/dynamo/common/backend/metrics.py has engines call register_global_registry (default prometheus_client.REGISTRY) or register_engine_registry (a custom CollectorRegistry, e.g. SGLang's multiprocess one), and their vendor-prefixed series - vllm:, sglang:, trtllm_, lmcache: - appear on the SAME /metrics endpoint alongside Dynamo's own dynamo_* names. So on a Dynamo deployment you will find vLLM and SGLang metrics that are recorded in this repo against THOSE engines, and the dynamo_component / dynamo_namespace / dynamo_endpoint labels plus model and model_name are injected at scrape time by Dynamo. The names below are Dynamo's OWN, from the auto-generated prometheus_names.py (generated from lib/runtime/src/metrics/prometheus_names.rs - do not hand-edit). Prefix is dynamo_frontend.

Cross-references