From 4d5b58ad8c577cdc32116872f9f5e263a74578ad Mon Sep 17 00:00:00 2001 From: Zicheng Ma Date: Thu, 5 Jun 2025 14:08:14 -0700 Subject: [PATCH 01/11] add draft for health check and metrics monitoring --- deps/0000-metrics-health-check.md | 179 ++++++++++++++++++++++++++++++ 1 file changed, 179 insertions(+) create mode 100644 deps/0000-metrics-health-check.md diff --git a/deps/0000-metrics-health-check.md b/deps/0000-metrics-health-check.md new file mode 100644 index 0000000..a3e1ec1 --- /dev/null +++ b/deps/0000-metrics-health-check.md @@ -0,0 +1,179 @@ +# Metrics and Health Check Probe for Dynamo Component + +**Status**: Draft + +**Authors**: [Zicheng Ma] + +**Category**: Architecture + +**Replaces**: [Link of previous proposal if applicable] + +**Replaced By**: [Link of previous proposal if applicable] + +**Sponsor**: [Name of code owner or maintainer to shepard process] + +**Required Reviewers**: [Names of technical leads that are required for acceptance] + +**Review Date**: [Date for review] + +**Pull Request**: [Link to Pull Request of the Proposal itself] + +**Implementation PR / Tracking Issue**: [Link to Pull Request or Tracking Issue for Implementation] + +# Summary + +This proposal introduces a comprehensive metrics collection and health check system for Dynamo components. The design includes a centralized metrics gateway for aggregating and serving metrics data from all Dynamo components, and HTTP-based health check endpoints on each component for monitoring component health, liveness, and readiness. The solution aims to provide robust observability and monitoring capabilities while maintaining the distributed nature of the Dynamo architecture. + +# Motivation + +Currently, the Dynamo runtime does not provide direct support for comprehensive metrics collection or standardized health check mechanisms at the component level. While some metrics reporting to Prometheus exists in the Rust frontend, there is no centralized system for aggregating, querying, and managing metrics across all Dynamo components. Additionally, there is no standardized way to check the health, liveness, and readiness of individual Dynamo components, making it difficult to monitor system health and implement proper load balancing and failover mechanisms. + +This lack of observability infrastructure creates several operational challenges: +- Difficult to monitor system performance and troubleshoot issues +- No standardized health check mechanism for container orchestration systems (e.g., Kubernetes) +- Limited visibility into component-level metrics and resource utilization +- No centralized way to query and aggregate metrics across the distributed system + +## Goals + +* Implement a centralized metrics gateway that can scrape, aggregate, and serve metrics from all Dynamo components +* Provide standardized HTTP-based health check endpoints on each Dynamo component +* Enable customizable health checks through Python bindings while maintaining core health checks in Rust +* Support standard observability patterns compatible with container orchestration systems +* Maintain performance and minimize overhead on core Dynamo functionality + +### Non Goals +- Specific metrics aggregation algorithms (sum, average, percentiles) +- Metrics storage optimization and memory management strategies +- Advanced health check dependency modeling (e.g., component A depends on component B) +- Integration with external monitoring systems beyond basic HTTP endpoints +- To be done... + +## Requirements + +### REQ 1 Metrics Gateway Component + +The system **MUST** include a standalone metrics gateway component that can: +- Scrape metrics from all registered Dynamo components +- Aggregate and store metrics data in memory with configurable retention +- Expose HTTP endpoints for querying metrics data +- Support standard metrics formats (e.g., Prometheus format) + +### REQ 2 Performance Mrtics Requirements + +The metrics we want to monitor **MUST** include: +- TO be done + +### REQ 3 Component Health Check Endpoints + +Each Dynamo component **MUST** expose HTTP endpoints for health monitoring: +- `/health` - Overall component health status +- `/liveness` - Component liveness probe +- `/readiness` - Component readiness probe + +### REQ 4 Core Health Check Implementation + +The Rust runtime **MUST** implement basic health checks including: +- etcd connectivity and lease status +- NATS connectivity and service registration status + +### REQ 5 Extensible Health Check Framework + +The system **MUST** provide Python bindings that allow users to: +- Register custom health check functions +- Define component-specific health criteria +- Customize health check response formats and thresholds + + + +# Architecture + +## Overview + +The proposed solution consists of two main components: + +1. **Metrics Gateway**: A standalone Dynamo component responsible for collecting, aggregating, and serving metrics from all Dynamo components +2. **Component Health Check Endpoints**: HTTP server embedded in each Dynamo component that exposes standardized health check endpoints + +## Metrics Gateway Architecture + +To be done + + +## Component Health Check Architecture + +Each Dynamo component will embed an HTTP server that exposes health check endpoints: + +**Core Health Check Implementation (Rust):** +- **etcd Health**: Verify etcd connectivity and lease validity +- **NATS Health**: Check NATS connection and service group registration +- **Runtime Health**: Validate distributed runtime state and component registration + +**Extensible Health Check Framework (Python Bindings)** + +Python bindings will allow users to register custom health check functions(example from Biswa Ranjan Panda during discussion): + +```python +# Custom health check example +from dynamo.core import liveness # implemented in rust + +@service +class MyService: +# used by rust (to renew etcd lease) +# also exposes http endpoint which will be queried from k8s + @liveness + async def foo(): + self.vllm_engine.health() == HEALTHY +``` + +### Health Check Endpoints + +- **`/health`**: Aggregated health status combining all registered health checks +- **`/liveness`**: Basic liveness probe (component is running and responsive) +- **`/readiness`**: Readiness probe (component is ready to serve requests) + +# Implementation Details + +## Metrics Gateway Component +To be done + +## Component Health Check Implementation + +### Rust Core Implementation design +To be done + +### Python Binding Interface design +To be done + + + + + +# Background + +## References + +- [Kubernetes Health Check Guidelines](https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-startup-probes/) +- [Prometheus Metrics Format](https://prometheus.io/docs/instrumenting/exposition_formats/) +- [RFC-2119 - Key words for use in RFCs to Indicate Requirement Levels](https://datatracker.ietf.org/doc/html/rfc2119) + +## Terminology & Definitions + +| **Term** | **Definition** | +| :---- | :---- | +| **Health Check** | A mechanism to verify if a component or service is functioning correctly | +| **Liveness Probe** | A health check that determines if a component is running and should be restarted if failing | +| **Readiness Probe** | A health check that determines if a component is ready to receive traffic | +| **Metrics Gateway** | A centralized service that collects, aggregates, and serves metrics from multiple components | +| **Scraping** | The process of collecting metrics data from components at regular intervals | + +## Acronyms & Abbreviations + +**TTFT:** Time To First Token +**ITL:** Inter Token Latency +**ISL:** Input Sequence Length +**OSL:** Output Sequence Length +**HTTP:** HyperText Transfer Protocol +**API:** Application Programming Interface +**CPU:** Central Processing Unit + From ff27522a98b19482895809a321e8d40d69f7b8cf Mon Sep 17 00:00:00 2001 From: Zicheng Ma Date: Fri, 6 Jun 2025 16:42:35 -0700 Subject: [PATCH 02/11] refactor draft about metrics and unified http server --- deps/0000-metrics-health-check.md | 70 +++++++++++++++---------------- 1 file changed, 33 insertions(+), 37 deletions(-) diff --git a/deps/0000-metrics-health-check.md b/deps/0000-metrics-health-check.md index a3e1ec1..c725111 100644 --- a/deps/0000-metrics-health-check.md +++ b/deps/0000-metrics-health-check.md @@ -6,13 +6,9 @@ **Category**: Architecture -**Replaces**: [Link of previous proposal if applicable] +**Sponsor**: [Neelay Shah, Hongkuan Zhou Zicheng Ma] -**Replaced By**: [Link of previous proposal if applicable] - -**Sponsor**: [Name of code owner or maintainer to shepard process] - -**Required Reviewers**: [Names of technical leads that are required for acceptance] +**Required Reviewers**: [Neelay Shah, Hongkuan Zhou, Ishan Dhanani, Kyle Kranen, Maksim Khadkevich, Alec Flowers, Biswa Ranjan Panda] **Review Date**: [Date for review] @@ -22,47 +18,46 @@ # Summary -This proposal introduces a comprehensive metrics collection and health check system for Dynamo components. The design includes a centralized metrics gateway for aggregating and serving metrics data from all Dynamo components, and HTTP-based health check endpoints on each component for monitoring component health, liveness, and readiness. The solution aims to provide robust observability and monitoring capabilities while maintaining the distributed nature of the Dynamo architecture. +This proposal introduces a unified HTTP endpoint infrastructure for Dynamo components, enabling comprehensive observability and monitoring capabilities at the component level. The core design centers around embedding an HTTP server within each Dynamo component to expose standardized endpoints for both metrics collection and health monitoring. This approach migrates the existing metrics monitoring system from centralized collection to component-level HTTP endpoints, while simultaneously introducing robust health check mechanisms including liveness, readiness, and custom health probes. + +The unified endpoint design provides a consistent interface across all Dynamo components, allowing external monitoring systems, +container orchestrators (such as Kubernetes), and operational tools to interact with each component through standard HTTP +protocols. By consolidating metrics exposure and health check functionality into a single HTTP server per component, this +solution simplifies deployment, reduces infrastructure complexity. # Motivation -Currently, the Dynamo runtime does not provide direct support for comprehensive metrics collection or standardized health check mechanisms at the component level. While some metrics reporting to Prometheus exists in the Rust frontend, there is no centralized system for aggregating, querying, and managing metrics across all Dynamo components. Additionally, there is no standardized way to check the health, liveness, and readiness of individual Dynamo components, making it difficult to monitor system health and implement proper load balancing and failover mechanisms. +Currently, the Dynamo runtime does not provide direct support for comprehensive metrics collection +or standardized health check mechanisms at the component level. While some metrics reporting to +Prometheus exists in the Rust frontend, there is no unified design for aggregating, querying, and managing metrics +across all Dynamo components. Additionally, there is no standardized way to check the health, liveness, and readiness of individual Dynamo components, making it difficult to monitor system health and implement proper load balancing and failover mechanisms. This lack of observability infrastructure creates several operational challenges: -- Difficult to monitor system performance and troubleshoot issues - No standardized health check mechanism for container orchestration systems (e.g., Kubernetes) - Limited visibility into component-level metrics and resource utilization -- No centralized way to query and aggregate metrics across the distributed system +- No centralized way to query and aggregate metrics/health across the distributed system ## Goals -* Implement a centralized metrics gateway that can scrape, aggregate, and serve metrics from all Dynamo components -* Provide standardized HTTP-based health check endpoints on each Dynamo component +* Implement a unified HTTP endpoint infrastructure for Dynamo components to expose metrics and health check endpoints * Enable customizable health checks through Python bindings while maintaining core health checks in Rust * Support standard observability patterns compatible with container orchestration systems -* Maintain performance and minimize overhead on core Dynamo functionality -### Non Goals -- Specific metrics aggregation algorithms (sum, average, percentiles) -- Metrics storage optimization and memory management strategies -- Advanced health check dependency modeling (e.g., component A depends on component B) -- Integration with external monitoring systems beyond basic HTTP endpoints -- To be done... ## Requirements -### REQ 1 Metrics Gateway Component +### REQ 1 Unified HTTP Endpoint Infrastructure -The system **MUST** include a standalone metrics gateway component that can: -- Scrape metrics from all registered Dynamo components -- Aggregate and store metrics data in memory with configurable retention -- Expose HTTP endpoints for querying metrics data -- Support standard metrics formats (e.g., Prometheus format) +The system **MUST** include a unified HTTP endpoint infrastructure for Dynamo components to expose metrics and health check endpoints ### REQ 2 Performance Mrtics Requirements The metrics we want to monitor **MUST** include: -- TO be done +- Inflight/Total Request: updated when a new request arrives (and finishes for inflight) +- TTFT: reported at first chunk response +- ITL: reported at each new chunk response +- ISL: reported at first chunk response (TODO: report right after tokenization) +- OSL: reported when requests finishes ### REQ 3 Component Health Check Endpoints @@ -90,12 +85,19 @@ The system **MUST** provide Python bindings that allow users to: ## Overview -The proposed solution consists of two main components: +The proposed solution consists of three main components: + +1. **Unified HTTP Server Port**: Each Dynamo component will embed a single HTTP server that provides a unified interface for both metrics exposure and health check endpoints, eliminating the need for multiple ports or separate servers per component. -1. **Metrics Gateway**: A standalone Dynamo component responsible for collecting, aggregating, and serving metrics from all Dynamo components -2. **Component Health Check Endpoints**: HTTP server embedded in each Dynamo component that exposes standardized health check endpoints +2. **Metrics**: Component-level metrics collection and exposure through standardized HTTP endpoints, migrating from the existing approach implemented for Rust frontend where each component serves its own metrics data in standard formats (e.g., Prometheus). -## Metrics Gateway Architecture +3. **Health Check**: Comprehensive health monitoring system with both Rust-implemented core health checks (etcd, NATS connectivity) and extensible Python-binding framework for custom health checks, exposed through standard HTTP endpoints compatible with container orchestration systems. + +## Unified HTTP Server Port + +To be done + +## Metrics Architecture To be done @@ -132,13 +134,6 @@ class MyService: - **`/liveness`**: Basic liveness probe (component is running and responsive) - **`/readiness`**: Readiness probe (component is ready to serve requests) -# Implementation Details - -## Metrics Gateway Component -To be done - -## Component Health Check Implementation - ### Rust Core Implementation design To be done @@ -149,6 +144,7 @@ To be done + # Background ## References From aa0da5cd744b4f1593c1c1f132e2e16221be7d2b Mon Sep 17 00:00:00 2001 From: Zicheng Ma Date: Fri, 6 Jun 2025 17:01:40 -0700 Subject: [PATCH 03/11] update metrics for worker node --- deps/0000-metrics-health-check.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/deps/0000-metrics-health-check.md b/deps/0000-metrics-health-check.md index c725111..0cfe8fb 100644 --- a/deps/0000-metrics-health-check.md +++ b/deps/0000-metrics-health-check.md @@ -50,9 +50,9 @@ This lack of observability infrastructure creates several operational challenges The system **MUST** include a unified HTTP endpoint infrastructure for Dynamo components to expose metrics and health check endpoints -### REQ 2 Performance Mrtics Requirements +### REQ 2 Performance Mrtics Requirements for worker nodes -The metrics we want to monitor **MUST** include: +The metrics for worker nodes we want to monitor **MUST** include: - Inflight/Total Request: updated when a new request arrives (and finishes for inflight) - TTFT: reported at first chunk response - ITL: reported at each new chunk response From d54ee761350bb3ebae98fd3f8f8cd51dd26606d1 Mon Sep 17 00:00:00 2001 From: Zicheng Ma Date: Mon, 9 Jun 2025 11:05:42 -0700 Subject: [PATCH 04/11] add some clarification based on comments --- deps/0000-metrics-health-check.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/deps/0000-metrics-health-check.md b/deps/0000-metrics-health-check.md index 0cfe8fb..cf849c6 100644 --- a/deps/0000-metrics-health-check.md +++ b/deps/0000-metrics-health-check.md @@ -18,7 +18,7 @@ # Summary -This proposal introduces a unified HTTP endpoint infrastructure for Dynamo components, enabling comprehensive observability and monitoring capabilities at the component level. The core design centers around embedding an HTTP server within each Dynamo component to expose standardized endpoints for both metrics collection and health monitoring. This approach migrates the existing metrics monitoring system from centralized collection to component-level HTTP endpoints, while simultaneously introducing robust health check mechanisms including liveness, readiness, and custom health probes. +This proposal introduces a unified HTTP endpoint infrastructure for Dynamo components, enabling comprehensive observability and monitoring capabilities at the component level. The core design centers around embedding an HTTP server within each Dynamo component to expose standardized endpoints for both metrics collection and health monitoring. This approach migrates the existing metrics monitoring system from Hongkaun's [implementation](https://github.com/ai-dynamo/dynamo/pull/1315), while simultaneously introducing robust health check mechanisms including liveness, readiness, and custom health probes. Currently, the metrics collection is implemented in the Rust frontend with Prometheus integration, but lacks a unified approach across all components so we need to migrate to a component-level HTTP endpoint approach. The unified endpoint design provides a consistent interface across all Dynamo components, allowing external monitoring systems, container orchestrators (such as Kubernetes), and operational tools to interact with each component through standard HTTP @@ -52,13 +52,15 @@ The system **MUST** include a unified HTTP endpoint infrastructure for Dynamo co ### REQ 2 Performance Mrtics Requirements for worker nodes -The metrics for worker nodes we want to monitor **MUST** include: +The metrics for rust frontend we want to monitor **MUST** include: - Inflight/Total Request: updated when a new request arrives (and finishes for inflight) - TTFT: reported at first chunk response - ITL: reported at each new chunk response - ISL: reported at first chunk response (TODO: report right after tokenization) - OSL: reported when requests finishes +The system **MUST** provide a standardized approach to collect and expose native metrics from AI inference frameworks (e.g., vLLM, SGLang, TensorRT-LLM) through the unified HTTP endpoint, using Prometheus format as the standard metrics exposition format. + ### REQ 3 Component Health Check Endpoints Each Dynamo component **MUST** expose HTTP endpoints for health monitoring: From 144b7ceeec0e162a3b64aa60758fde533e0f1ca5 Mon Sep 17 00:00:00 2001 From: Neelay Shah Date: Tue, 10 Jun 2025 10:29:58 -0700 Subject: [PATCH 05/11] Update deps/0000-metrics-health-check.md Co-authored-by: Hongkuan Zhou Signed-off-by: Neelay Shah --- deps/0000-metrics-health-check.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/deps/0000-metrics-health-check.md b/deps/0000-metrics-health-check.md index cf849c6..41a3a3a 100644 --- a/deps/0000-metrics-health-check.md +++ b/deps/0000-metrics-health-check.md @@ -6,7 +6,7 @@ **Category**: Architecture -**Sponsor**: [Neelay Shah, Hongkuan Zhou Zicheng Ma] +**Sponsor**: [Neelay Shah, Hongkuan Zhou, Zicheng Ma] **Required Reviewers**: [Neelay Shah, Hongkuan Zhou, Ishan Dhanani, Kyle Kranen, Maksim Khadkevich, Alec Flowers, Biswa Ranjan Panda] From f361de4731a30403af96a694961675a8c7bf2234 Mon Sep 17 00:00:00 2001 From: Zicheng Ma Date: Tue, 10 Jun 2025 14:46:56 -0700 Subject: [PATCH 06/11] fix some description about metrics --- deps/0000-metrics-health-check.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/deps/0000-metrics-health-check.md b/deps/0000-metrics-health-check.md index 41a3a3a..33f9903 100644 --- a/deps/0000-metrics-health-check.md +++ b/deps/0000-metrics-health-check.md @@ -52,7 +52,7 @@ The system **MUST** include a unified HTTP endpoint infrastructure for Dynamo co ### REQ 2 Performance Mrtics Requirements for worker nodes -The metrics for rust frontend we want to monitor **MUST** include: +The metrics from rust frontend we want to monitor **MUST** include: - Inflight/Total Request: updated when a new request arrives (and finishes for inflight) - TTFT: reported at first chunk response - ITL: reported at each new chunk response @@ -91,7 +91,7 @@ The proposed solution consists of three main components: 1. **Unified HTTP Server Port**: Each Dynamo component will embed a single HTTP server that provides a unified interface for both metrics exposure and health check endpoints, eliminating the need for multiple ports or separate servers per component. -2. **Metrics**: Component-level metrics collection and exposure through standardized HTTP endpoints, migrating from the existing approach implemented for Rust frontend where each component serves its own metrics data in standard formats (e.g., Prometheus). +2. **Metrics**: Component-level metrics collection and exposure through standardized HTTP endpoints, migrating from the existing approach implemented for Rust frontend where each component serves its own metrics data in standard Prometheus format. 3. **Health Check**: Comprehensive health monitoring system with both Rust-implemented core health checks (etcd, NATS connectivity) and extensible Python-binding framework for custom health checks, exposed through standard HTTP endpoints compatible with container orchestration systems. From c6077167014708165de7487c5d945c459943765f Mon Sep 17 00:00:00 2001 From: Zicheng Ma Date: Tue, 10 Jun 2025 14:56:08 -0700 Subject: [PATCH 07/11] add an arch figure --- deps/0000-metrics-health-check.md | 5 +++++ deps/imgs/metric and helath check arch.png | Bin 0 -> 137218 bytes 2 files changed, 5 insertions(+) create mode 100644 deps/imgs/metric and helath check arch.png diff --git a/deps/0000-metrics-health-check.md b/deps/0000-metrics-health-check.md index 33f9903..5b21b95 100644 --- a/deps/0000-metrics-health-check.md +++ b/deps/0000-metrics-health-check.md @@ -95,6 +95,11 @@ The proposed solution consists of three main components: 3. **Health Check**: Comprehensive health monitoring system with both Rust-implemented core health checks (etcd, NATS connectivity) and extensible Python-binding framework for custom health checks, exposed through standard HTTP endpoints compatible with container orchestration systems. +
+ Metrics and Health Check Architecture +
Figure 1: Metrics and Health Check Architecture Overview
+
+ ## Unified HTTP Server Port To be done diff --git a/deps/imgs/metric and helath check arch.png b/deps/imgs/metric and helath check arch.png new file mode 100644 index 0000000000000000000000000000000000000000..8b340c0764e886f358fdce4a2f557af1cef6020e GIT binary patch literal 137218 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êTiry1C08^n?Tc&lz_NikAGP3MiPXp zm?^(SU}rX8*qd>kTbF=J_b79q9{?$PaW!m5jqthy?YNBz#lp1xRlYWpntL1ob;Yr{ zGB}ljO)f-M!W2qmmmKcN*HFHU-|lYS?XdZQd8g;l4)-9##Kj{>f0$d1QzBEnU+I9U;o%O7ef7WYO>j`tp$lkrN1f0%|( z*6l??t$YsIrOz$J@3Uw15D)V$zAx1RFI?!Z3lRj2WLv|@%>F=5qNg{^$(gQkVZ%5R zgWBDwpD6BDo4F@4yjSYoVudtSo%VJ`%Hxk&vm|dE8ym&97=NXdK2pk_a{VYtV}e9Q z(d!X5_{=FXO=0<6C8A)aw>S#)XzhwI0K|@K2X=A-A>f4BmRHyKb^xjHxrBt*hCS@C z=Pn$|!1a!#bq2k|jgiaL2e9!**rcGT-LmQk3SvnRdrkV^J8uhBgnPA0I%S#C- z@NUUeFTwV4&us?{+}i{6>R}TT&?^HhxZQn9NUwJPzFx5jV=dU6xZkQhhp zuW8eH`95Y?ysBw-$32|~54(BCtD32JD0*dl?|~(@PWOX{jN|1sYX)Un(-PyDtisew zr#mi62gJ(dr_xB58}hJnZ^UCLR%9&o25!vlEwy!hhTI%=vKy&xfb~o9up1K}=%xJ) zYw%GKnL4S`LDe9>?VgyyA_M@)E(qOPaSk{{P_=Z@94dS%O4u%USyUHBffkO${Jz?q z5!&dwvcfbdv|)b8TA{Ge=LzI!S>>t~HK2KV>dd1Cqxw*4NrLy|e;&+_aK%lTuTu?P;&H=VaG)hE7CoS-}D|Cy-+pG{k zMoHI(8onZqbo*v4ou6*R+*lQ~QBSAAI7HwV##QXfPh z3m&D;v;v0z!t05Eo9f{*h+W(T98npEBo;(4P~kHuzQ&8wlGDMk{J=)aC5tfbc^m2x zEYc|FV9g*KIrZ+?C3>|bZ3E!X=UV`|M9r(0ZH1TRNa_+KWAH4vYB_o|s>8?;K`I6t~YS3Hp9MoLmc%;A&$ zftxxG=iNtk&An>mJ`T?!z5 zA^zmkxy7~N-4cn?8D^D?`10upl$3X>5y9|Tq%3Sr6y-~fEzCX?OXg)x!$*nex09pEgo_H&?Axcd%)jn;TLwNktw|HLRCu-I5XE z?;CF$Q1hK6s&;cIOC5+U)3?j1Csm z$vqeV7tYz$ch_m$KF!4-cUWjI?m?l)z15zZl+|6j(yj^O1G4rA@E0;3gHl}Pi9Y#| z1IuZez8fc}3iJb1vD|d-DC4_=`q{@dJ0_`FfuU&qR`yM7#8a3Ksho`oV#wN;SEMDa<;0>l)EFbbv zf18!1U6#m~XLY$pkCohE^F|ss!xiTwr)z?7V||9~TL&aIs;*`z#UgnSzHSsZ*AV+- zEql_h%Tv-^dU%kSlt%@pu<(sgs}h9>EM64X@^wX2+jY@;X6-JmqtlG1sAQ=K!tcG@ z9ag(nETk>05mBmMr&+Z9P6%zq^VqXJewwZQ;}5DLcRAz6mS!joPApdJNQvg(XncxF zVsKe6-FmSOx*>%eISts0*QPHg`X3k)KTjpJ=w2f76=wBJif}k=S90(C zO+wbqpr-R>?$HuyqmlH|0Fbkt8RwBbSNG4^)mn7$%}4EhmLr|A)i*q6kK1tb?o<-j!y{Z)GaNgk z_=o^au9#3FQs|A^hc@LjS%PO5$#o4GF6Qek#JRnnq&uA*sY%a=)O5co6}fkiRYxr3 z^3to>8RnVP>u;xNeVX-sJ8STrKM<>nx0T;@Oe{x4PFNWoI6gbUSy>t4wzHC05%yw+2SAR=qH94S26H+cS#@2@+6qatY_&wAId> zS}m@~PGh#6*fc5sEd`r(g5binrq_6UddA8~XVUTtYtZ zb1z$Zu%*E~@4Wkc(GY5t8aGEn3j(?s;jAzLgLz6BoxJTyxvWzUBGu_B^?keFdoH){ zj{#&f))hwTzF0!s%9%7P?>sczeL|Vkf%sWMKqDeUJ<&&DB-4^ zOUN5&e(VA^d3`kgpb&ydQza2E_AT}H*CIiz)|>fq#a&(?+ntHGy=(}vOKmJ71+j5j zwF;TYSx(4BJW9($?;foX&KIEIA7!4LVSfIZwT9i0klO%p%h2*D+p9UerPmGS@#2fH z6s|jJ@1?gBaNj@p#5|lm8mH3qV1TpwUeM5ep-#ByWqxcQ&XY{p@52RMI%%C54tNnr z5S~3-jlW=?XO?=mHU6lH8hzi&DONzLt&_tw5yP*ZBBz4rLv2l3QNZ_7kwt>UFVuE4=*hH;{&!Tl&EKsC3BzokhGaJ z`FU3}Z&`B-;P z^>dUgRwdOwT?cNO@t>WHUesKfDkX7pbe^{LdY#Vzkh9{-MAqy4Q-cool$ZGcCEO8b zZbzhMQ0UcQ6Un!AW~YY5lh^yxB*RR?*~viair}L>Yp{^1R~?LsD^1g$X;&@HbY@cu zf72~htRkk>z?3m@wb*vo4B6r)$dg<;E+4Ow8)xlDl(8$KnCZj#5a;yJ^PRfLMWsQO zT0&Z1A;y3ZjR;BvU|%l~d#qiq;YktDmR^8KXBbzDGwBpcq;cW3pXEQfk3Rt$d4tcm(pBW-`KB?xM#pa| z-hk;eHSQH1LBr4on$_yJ?+P@Dhc?~NLUst|ZwV4!#+Ft^ioOjOd^aAMnr7_&GIXM^Tu(JGL(MeB_fC$KZ#RYE4 z)iCqBomlJ{1hg~0Z*!TPhk&}_?4-TKFg*=}fmlU!TTb1Ihl56Pc@DGek=>A8vRrzh z#T3aw%>96Y8BzUe*N*;hE#2|OyRt`Wkth9%$9Je&_*W9y>yG+YOd_J^!maQ2OQq{i zp81d|N4DF2;8E{c z#Si3$EIm`fc96w%(HbkWwCI|&d&6r&!ZP-uVx=SWsSsnzOsla&sk4!h=7(a$O%zaR z4dq}pU1~lo@VwL2t*g!$XjJoK)2>m@`mU(Va@Z*uRQ^~`?PjwO{@Rtoqy>HXTOn4E zwIGM#pJue^%BRhJif?$0ub>?MkX+)@-ZQZ-L1Tae=B@N(bfncT&o2xdpqi&TNGWmY z%}QU-vx};{$i*(G#|CEMzBz|kRHIy!!Z)wjzM+(^*UUSgQekpNW<_of;|!&wk4HfJ zth5!g>WnX^OgW-mNO94r{n8ye)k6{PedYUUj>|J`S;(+2biDinv%eii-JIrihM=or$b96d^oGOm5YU$BiUW$E(>ba`bZqVJjv~X20 zxQR)RFFD|)z_a~3S)Na_2J9TD?nSE))uG*9*&WL@mqp{C?k`w^?l(B-`<`Ze60tgW zmv6vmz|t{Dn0_aJJb6rPV%+oiXg6l0;sjz!yIZl7LMrXSl=?x2~THey^kz7wQeAaq_ z4{1}!QaX#8gk1}1vf1t%YB;fkWkmp%FGweCRwe67a|302Tqidr5+t9zfF1c@a(2%S zOP=e_*=JZBaIPYDg4mq}?mJDP8vKR~L^UcI;_RND84Y`@r>>bv&k%fy%5lJhlWcI# zUv(~?K?b2$H@h16yp8hSgEa((C$;kJH?hYb-!yt5a__BhQr6fQLbY?zRUv zbJ}<>Opj2;q$(2cZWCzV!x~mUSSH<5_9n+gXy+#8n}stgUHf0ODQtfR#^%vE$cO+l zIbDRBbQ<$;UmgSw7?*~Nt+iQghK9rqj54`*HCD-(!AiOA0`$JdqhOC2*1$OqKBhvk zmTpG>ZRYUqW4PTx4c^{Z&iRf)fCLC7lDJR?Ky8k9W!JrgSal(_Ia+u-+wNVy#UMyUp+E zyq9*e@MSz-@#bt+5iZ0$v)UY=5Y4k8d|Ab-%k8G0-FU(!p2|bdCEF8ih8>GbE3zdv zh1f%A!zIQD{rHWxv7>ix4CD?gzp(-V3c>N$Ic+CYd%+IfU;79MV)Eg)Hy*Bq>ml}dZ^G?kyv zEa!@|ZP_D4UNgbnJn4=gSz$ajTOD)qDF0VvUnv~0k_9sX_X&K(roB6_2s8}B-f4B- zd+na42|U9`5A~8JWN!tFWOf!z;fAMlT>vrC1cj~!#lexx6JY|rG7ig=+%h_IJ6M)J z@Ln2d@X84=rPM9Qo^*(^AFa&fj+&TkHdSWUAp=%k0(jRMCS~@E1x{)n3o_)5J6=7? zpFLS-5_?@cTJ37@B7SFO1KFm+$?Eq)se8z`&5T*X!hMP~VZBF?^8IYJ#2{0Opja$b zW>#{a$*e6sug=!O3$=sz&Q?zcY*NTnt~PknKO#0eJm*4J8If6zB?@sP#X)gJFA(Zo zH{x%7{F-UHRY{2o3wON)ZuuT&bBdJ6quW1NyIgvS>^k%Q;sK*hJ>vQ?&2utCr}&qy zrgjz)95@?T{@OL!v!7lonY*|AGCg&5ybe!KM@2GUjuXW}!4J5t($7T)rtdTsxpD72 z$SYkFnz8AK-uNp5I*p`VkEh4|!6M141);<2!2MCC*Vrk0WX8L@J(upv(ZZGDYt6~S zwpyEL?*qw?7$nrStG>Jvc+T8x%)X;2OmS7^x`y``-Q$H|&M>UX7ej;7opIEV=%CM)#00>>`}=x+pTw1=*|%~xr?qSHsJ|dm_5I9dY=^sVP#2n)`Ucw z8K3>IfOUA9UsNT}nc6f@km0*=StwJxOQR#%I^nY8S*P4O_r>WgX6jtp%V{;a*RKdj ziTaaIZ`!V6asHf^Mx6RN&3Yd0a$68Dd45Klq8@L$^=%%=_j4Lm$HpN(Sqdy$4Zc{R z7loH%IPrPK71716B9RL|c-hIfw|erty_$E5q6S~h=!5oYpcL$!PvU}Ws7AN18U$6h zWI3;cYHJYb{;H`9rLGqu<$+~74N>Kv6kA-1=+23QMTqca>E&xS24$=7vYkuYZKA>w zfTd^9^D2S1CEH}{*1)I$?J}A;5Qup5^ghq!>q3F-O+D{n2# zMe3b-DZIU$M{~?9iF(qv_Igp;%V2&{N(eVW$YTklQB_oRZ5vTi>2N z3>N3CvwiXo3Y_)Ni5HG|)d>LVS{vfzu`Y2+dB0LHQj7*A%KK$$xJxcDS!&TslZneic<$W? zkgdxZru)LQ_w<=Z*Je{qrwE@GJX;VZ7r^Brn^M%=?>SBHP^3#=z zhB+K&!nwC5ww7UsbvgFsB<3Xnfxmnno?V^0yRSFhg-#h!4I+3!gIP?OHKLLrv3t4O z;~H}TSn`u+yNf*j!J+-!J8#~)%8TX;mIIFnS5zn-RtFOpvi4@Nn(8%=22Fa*q!!}7 zswH8zvK~1l6P>klMac02Ldm;k64{mSeUrcD)x-SRWR3FSV7sYGN|!myOqRxY$%nz! zo>nWb^veARqz5u^!dnv-ZYVxkalKK94I;)8XC6}#C6`oC=k!h9kzR$vdWWRrfd|iY zP0wm9Wxwrc|KPtOEd}f4;0QzjTTyS)#~o;gy=e!4NW8?i74L$%j|Oof&uz$GT3l2} z5EXfD{Cp!PZNQ_O{K91o@F?Cb#Tm(Iyd`4-_Ben@HF1;_AqE zC4jPx3v-c@FGl%6n5Y%X`P1ZcAOXqzr68q4A>*X13^D%(Q#aw7Flv^^8ngXJWVRm= zB+zYj0a^1;^9K+0S7~hssoWh-iFkj>OTF+tv0HcEzQfzzm#0R#A9j!HeIuw(hEFZG zHAAc8%NKtT#HuXU{aTeOds>^4Zfh2^oObV4vS7}2T4Jb+V%HYZyH%qiIsUM(fBU^2 zH@6SHFz<%`$dF3U=S}SsAW#Lefqge!D3G5~j$c*Wfn74CIZw{d<(nsOnaJ9-((d-q zEtuI&``&QGG6Ax^zg?*KD1o(P#T4L1jrQU-CLzcJk1JxvGswqoFi4LAm;ByrDLbdt z;7jkv^ux=Va&5qF?9$x&qkLZc#t7*JgQlua=`BOxB)ZlaDyCPvgYL&0qm%^fJJmXE!5+ zS+5H2AL}d*5MFlihh9sGZJxi2&0$b~5xj74juU3*j~{S`4fl`pbKn+Z`&?-bS%G%=4MGx@)@~Qjl*w=d5dC054|mz z4tgfx67paym$@;q2@rdotv64;z1g0Q$pr}6-8{k-J}Yq6k`+*2fgqL_ir#}|Gct9s z96bKX{z|{WhMTwFH0N&tnTGhdV=I0~!u%*y+IG&RsnA9yx&)1a%ws_Y8Y=z5ep&!k8<%~F(=U-dFYpCJtT1L#T_5=Z2=-}(~*s-t_06-zZ9RD zb%EhmhiU72u-`-)qTd>Gn42mH(1-&sSM83KqB#6^9&dch)0M>|L;62N^p8gsTf1_BgRl9L}Q8l61|JA`3I4LI-tWeBq z>(}tMvQnSXmaoRApuVJHdhz{^$8mrG-%8DK> zJE+F*iTMsO%UH4(m8@@m6TQ{VXAYHrl#G=!FC^VxJ!Fbtthnq-yjBvHss{~2k z(S7zc__^u(gQTkPt=@R@m6aQ^00wPvU=wM+Uq#$fp+fFStLVIW@t7yJ!-0pZuHV~} z=zrk6G*P{7|IH8Mi0YTwXI5BxUe^*;g>w{y()UV7QQmVrK07Y#!0zyYrk_=FBhMX9 zlgW+Biv{6IOKm#g(S?5M8GT2>XzzI3$_UvYa24yM(23_a%6x>rG4K?bBHl_7j z=FNR(PCtKMtSY!Kf}9d0jdPeU7-Z|822src8B#y+dYWEkqwwo}I_}y+fgD@1bQ^p} z)CC+EX2!c{DtzlbFUgGfF6HA zWDWw)3uy3!KSeAdUxC+y&65c`YVap06;50N*(ueWV)5da{j+V3A4XnIAr`RMSFc@k z=|kT_?O7k@`_`d%{aV-)`WDB+PTBh~7t`z-qG`H(J!7-ON>lwa!=;_XW`{k@Pch;P) zJ$S`5h`N1nvQxW9>*#1~705{LeYf1np_6?&fKED8IPFp51`q;!bn$MR7M-+aKT$7_ zCbH`USQV0GEm>m8slLXmxADcez$az{>-U)3%|>%7Pn~pKZzN8Gh|yIERfzU$eKpb=TY3Wseh$vlTpcx=twxu{-jK zJ2*cK8Rl<%uH-$Z6iz4caK@ZFcK*e+Q-0U$QUD9DHsF&nKm(uFM$yEUdwg-?6EYyv zSD>t!^wuyN%kEnHLf{#uChVaQmANS!DU(KmGj?|Bv3!gvW%4z>n16Q@h-a ztQh`3y52G%%BbramXMYhN;(G+hL%og90U=iB?bYNZje-RXpl~6B?Y7#22fH&q@_dY zZg|gl-_QF#Kfdn|@OmgXNM4Ny4sJh{LuJywG zo0fFT7Y%^&XLkJKPW|zk@{L`6MjRATQf`_wl)Q6{qS7O@deo^m_SdYdLayJgr#m@g zZ8(E#n1O2NO!L|a`?)ts7r^(9R9eam81ARf_|5on(y|DLuRe?lwB9k>PhmN=8zg`| zuY=obnY0-D{eMs$K!(=$X;xs$Uytyc4gjd^y&a~~Rt6X+Ol5;bga-IJwTflkLTzXk zBhza#R;AefBj>`Hh}4Mj{<3hCt^%6$AcCiv6h?CJd|DLI!EaEwCb?NSuSt7?Dt z_RZR_J2wu~(=XJoddgPzA5`AtijOYz9NBPXN%2}DBPx%B(TSkq8xHKQ_No^@)*py_ zpObho#?;%+4Tv9&>)bytjFc`ZTJYFf-VrUkxUC*vAb-QS6)Wbi{blrM52kkXk?`f2sYf3}Sf+Xfc7^Y{AX zuz_;^KiQPK8+AmiyA|0QAXGF*Uv@f&D3MuOQ|t@?v-QT%$F7k_cz7%Lg*`U~Tv_h6 ze3-j0%|vyeu`;V}YM6(gLNo=p?!(`TU&$-eHRf2Bur`$}rbFPib8V|@%K9xU0#EWE z@(d%&3?=z%85)D~zv-MgT#R|FW1}wE-|94(1JLo&!Qe_dKpjU8EYScbSK17Rks;W$ zRTC5eX&pux(3t)R&tq!K%=!H@T=$g8y zP83#8r(E9{p{yoVJ#%xCHC?rQw4wJkO}f~}dIa!Qh-hT6N|J_?*YG1eAdAhqm5M5j zLJFGa@k3ruSh$yFlV_uJK>s0+JgY^|A0TOD<`>z!790EB-N3DdvfBGD;z_dF|_Vf*)^_+IV_ zV8^Nf+HbBBeq(Y;p0q-9Sn~H;5>@k#n+6YRK$z+7Wm0u7{soeMtUU}^s}p|`{$I~M z%g=^SeY~D<<V||uJgmM05;`R1X ziQaxGA1~U_Q+18AgM9M0CYkk2JvHOO2PDkV*ri`;Ignv zbqXgGPOLN+}ph^9Ra9=k1t|F|Hs5U|4o*gxZ&;&bM%`-uu$U7V^f3u zwUq-d9f1;fl@i{aJ>}I3oBQpbovN4Fm{BT#_|FDPnQLpDIzX0kTI^A+YwcROh;|OH zHoxwhi<5x6gU_em<(o2KSLF^HW3%LWrq~KYE)$E~X|;)vk*ZbGuD0*Rmww|3ni|_( zz5f}?5uKiNEh(>`;mnp#>e3y)kzP!j4d4$P!|YsBjLP0_IP;Zy73sQ+cX4ar@S)B-_gGB`KGOgcc!|M@+Ibo+q0Bwp48*G<0ZA5%5-)S+;e0 zh!aCm5ey=d_bZl6Z&!Bv0SeE%%_%Zt>c8JhYcGF%5m)RUNCwpc8bSO7jUYyRqD60! zdN4wHnz!Qp@1=!-CQ(16&ijsVd_XWh{fzi{+mToQ{V(*$y+;-)RfAx*YGh}uVUT+~ zfrdK@bJY#ob{AYEM-6bpXSS?awgy;R*;)Dapk#?9AeCAPCsQ5oPv+kpALBV?f1q$v z4L5EX2l>L@iK$+kfD`1Nj^}Lv!0R+wxCfxkS*-oenXK)}9h&9@qH$v!!LPsg@QY=W z)LHcK*2BOPwgm?O&yX}ozKvz{yWZt^3k~3NsVK;*0S*gp;Hp9*C_MsJnD3z@a3DaW z-o=iuLV3kT54pO?o`fbSB!y8n6#wYX^cEieCjftjkCp;C&-FpVmr)I#Ko8_+f%iK- zM+NnlCDA0P1D}2{_(BkjZyDK{Yu9sOd(38m;e{|kJoX5u2+)=?nvhOXUjlt@^kSc; z^1!8!*FT#@0YcDAdU~b`T1#XM?)UMMioFkmoZp`$ohqfwl(T1(B#$^fLy~_5lQ@YH zYz}}*`W_kZDC_Zub;`Sakd{UBnyFo*@i)rGOJ27vkr>ar5381EZJ3SOvD6Go!|E#D z?yjz=7$7RI=|ct!VEBp?&CecVf*0{&1?VDKGLAZ)Z);spSA_(M+mB}ojHxs<3=kb3 zs=u+5;$V9+``ndx-=hMh0H%dAL_iQDYK<}higPGc-5>9$YO^#LwSp6iNt}hdZ}pV_ zVS>y0yWiHr${J57cbs{397+qJ;N58Nl0S{8LSa8RT;X^r{qg|6^nX7Waly;-u(m0o z{~huk9Cp`LG!?s9NuHk6wDd6_|7>Pm!GE;IK9ha-G+7`w_59&`X?xosp34bCNlRb< zEQdImUF`R)bgA*sv9IcPhvoaWMuN{8U|JNrbF(t_z80LnR}B9m7i+jcQV}7LQUytX z77~^0+<&YZt10aipc|*^oqk# z6Vpr+mKR}|a$B=2^M}3WTreYTtRNouz0@#RoYAq$pBJctt-ancH

O^Jod2&e(uh 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 Qbp`yBlU9-{mN54JKQTZpG5`Po literal 0 HcmV?d00001 From 816a028486bca71f06d5144d7475c30fbd5c653b Mon Sep 17 00:00:00 2001 From: ZichengMa Date: Tue, 10 Jun 2025 14:59:46 -0700 Subject: [PATCH 08/11] Update deps/0000-metrics-health-check.md Co-authored-by: Neelay Shah Signed-off-by: ZichengMa --- deps/0000-metrics-health-check.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/deps/0000-metrics-health-check.md b/deps/0000-metrics-health-check.md index 5b21b95..6c21650 100644 --- a/deps/0000-metrics-health-check.md +++ b/deps/0000-metrics-health-check.md @@ -124,7 +124,7 @@ Python bindings will allow users to register custom health check functions(examp ```python # Custom health check example -from dynamo.core import liveness # implemented in rust +from dynamo.runtime import liveness # implemented in rust @service class MyService: From 1f88969ce7ea414d9763550600bdafc5f602a1fd Mon Sep 17 00:00:00 2001 From: Zicheng Ma Date: Tue, 10 Jun 2025 15:03:36 -0700 Subject: [PATCH 09/11] clear terminology table --- deps/0000-metrics-health-check.md | 26 ++++++++++---------------- 1 file changed, 10 insertions(+), 16 deletions(-) diff --git a/deps/0000-metrics-health-check.md b/deps/0000-metrics-health-check.md index 6c21650..d9e3248 100644 --- a/deps/0000-metrics-health-check.md +++ b/deps/0000-metrics-health-check.md @@ -162,21 +162,15 @@ To be done ## Terminology & Definitions -| **Term** | **Definition** | -| :---- | :---- | -| **Health Check** | A mechanism to verify if a component or service is functioning correctly | -| **Liveness Probe** | A health check that determines if a component is running and should be restarted if failing | -| **Readiness Probe** | A health check that determines if a component is ready to receive traffic | +| **Term** | **Definition** | +| :------------------ | :------------------------------------------------------------------------------------------- | +| **Health Check** | A mechanism to verify if a component or service is functioning correctly | +| **Liveness Probe** | A health check that determines if a component is running and should be restarted if failing | +| **Readiness Probe** | A health check that determines if a component is ready to receive traffic | | **Metrics Gateway** | A centralized service that collects, aggregates, and serves metrics from multiple components | -| **Scraping** | The process of collecting metrics data from components at regular intervals | - -## Acronyms & Abbreviations - -**TTFT:** Time To First Token -**ITL:** Inter Token Latency -**ISL:** Input Sequence Length -**OSL:** Output Sequence Length -**HTTP:** HyperText Transfer Protocol -**API:** Application Programming Interface -**CPU:** Central Processing Unit +| **Scraping** | The process of collecting metrics data from components at regular intervals | +| **TTFT** | Time To First Token | +| **ITL** | Inter Token Latency | +| **ISL** | Input Sequence Length | +| **OSL** | Output Sequence Length | From c2d4435e5c810a9e9732e49423121fbdcff283bd Mon Sep 17 00:00:00 2001 From: Zicheng Ma Date: Fri, 13 Jun 2025 15:17:17 -0700 Subject: [PATCH 10/11] modify and delete some unclear statements --- deps/0000-metrics-health-check.md | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/deps/0000-metrics-health-check.md b/deps/0000-metrics-health-check.md index d9e3248..21d27fe 100644 --- a/deps/0000-metrics-health-check.md +++ b/deps/0000-metrics-health-check.md @@ -63,10 +63,10 @@ The system **MUST** provide a standardized approach to collect and expose native ### REQ 3 Component Health Check Endpoints -Each Dynamo component **MUST** expose HTTP endpoints for health monitoring: +Each Dynamo component **MUST** expose HTTP endpoint for health monitoring: - `/health` - Overall component health status -- `/liveness` - Component liveness probe -- `/readiness` - Component readiness probe +We will use `/health` for both liveness and readiness probes. If there is extra health check needed from k8s operator, we can add more endpoints. + ### REQ 4 Core Health Check Implementation @@ -78,8 +78,6 @@ The Rust runtime **MUST** implement basic health checks including: The system **MUST** provide Python bindings that allow users to: - Register custom health check functions -- Define component-specific health criteria -- Customize health check response formats and thresholds @@ -102,7 +100,11 @@ The proposed solution consists of three main components: ## Unified HTTP Server Port -To be done +Each Dynamo DRT/component will embed an HTTP server when it first registers an Endpoint. The HTTP server will be used to expose metrics and health check endpoints. + +Once the HTTP server is embedded, one entry contains the HTTP server port will be registered to etcd for discovery. Each DRT will have lock to avoid race condition and DRT is responsible to check whether the HTTP server has already been booted. i.e. When a DRT opens many endpoints at the same time, it will check if the HTTP server has already been booted and if not, it will boot the HTTP server and register the port to etcd. + + ## Metrics Architecture @@ -142,7 +144,9 @@ class MyService: - **`/readiness`**: Readiness probe (component is ready to serve requests) ### Rust Core Implementation design -To be done +Modification will mainly happen in the `lib/src/runtime/distributed.rs` and `lib/src/runtime/component/endpoint.rs` + +Draft PR: https://github.com/ai-dynamo/dynamo/pull/1504 ### Python Binding Interface design To be done From 080119a3f54e849c87e23f47fb03ad7398f486f3 Mon Sep 17 00:00:00 2001 From: Zicheng Ma Date: Fri, 13 Jun 2025 15:18:10 -0700 Subject: [PATCH 11/11] delete extra health endpoints --- deps/0000-metrics-health-check.md | 5 ----- 1 file changed, 5 deletions(-) diff --git a/deps/0000-metrics-health-check.md b/deps/0000-metrics-health-check.md index 21d27fe..739dd92 100644 --- a/deps/0000-metrics-health-check.md +++ b/deps/0000-metrics-health-check.md @@ -137,11 +137,6 @@ class MyService: self.vllm_engine.health() == HEALTHY ``` -### Health Check Endpoints - -- **`/health`**: Aggregated health status combining all registered health checks -- **`/liveness`**: Basic liveness probe (component is running and responsive) -- **`/readiness`**: Readiness probe (component is ready to serve requests) ### Rust Core Implementation design Modification will mainly happen in the `lib/src/runtime/distributed.rs` and `lib/src/runtime/component/endpoint.rs`