relayer/src/metrics/docs_and_dashboards/http_metrics.md
Comprehensive monitoring of the Relayer's REST API traffic, latency, and reliability.
This document details the metrics exposed by the HTTP layer. These metrics follow the R.E.D. (Rate, Errors, Duration) methodology and are critical for monitoring the availability and performance of the Relayer service.
These metrics are defined in http.rs and exposed via the standard Prometheus endpoint.
relayer_http_requests_totalendpoint: /input-proof, /public-decrypt, /user-decrypt, /keyurlmethod: GET, POSTversion: v1, v2, nonerelayer_http_responses_totalendpoint: /input-proof, /public-decrypt, ...method: GET, POSTversion: v1, v2, nonestatus: The numeric status code (e.g., 200, 400, 429, 500).relayer_http_request_duration_secondsHttpMetricsConfig.endpoint, method, version, statusThe dashboard is structured to provide a Global Health view first, followed by dedicated sections for V1 (Legacy) and V2 (Current) API versions.
High-level indicators aggregating all traffic regardless of version.
sum(rate(relayer_http_requests_total[1m]))
sum(rate(relayer_http_responses_total{status=~"5.."}[1m]))
/
sum(rate(relayer_http_requests_total[1m])) * 100
histogram_quantile(0.95, sum by (le) (rate(relayer_http_request_duration_seconds_bucket[5m])))
histogram_quantile(0.50, sum by (le) (rate(relayer_http_request_duration_seconds_bucket[5m])))
Dedicated monitoring for Version 1 endpoints.
sum(rate(relayer_http_requests_total{endpoint="/user-decrypt", version="v1"}[5m]))histogram_quantile(0.95, sum by (le) (rate(relayer_http_request_duration_seconds_bucket{endpoint="/user-decrypt", version="v1"}[5m])))
histogram_quantile(0.99, sum by (le) (rate(relayer_http_request_duration_seconds_bucket{endpoint="/user-decrypt", version="v1"}[5m])))
sum(rate(relayer_http_requests_total{endpoint="/public-decrypt", version="v1"}[5m]))histogram_quantile(0.95, sum by (le) (rate(relayer_http_request_duration_seconds_bucket{endpoint="/public-decrypt", version="v1"}[5m])))
sum(rate(relayer_http_requests_total{endpoint="/input-proof", version="v1"}[5m]))histogram_quantile(0.95, sum by (le) (rate(relayer_http_request_duration_seconds_bucket{endpoint="/input-proof", version="v1"}[5m])))
Dedicated monitoring for Version 2 endpoints.
sum(rate(relayer_http_requests_total{endpoint="/user-decrypt", version="v2"}[5m]))histogram_quantile(0.95, sum by (le) (rate(relayer_http_request_duration_seconds_bucket{endpoint="/user-decrypt", version="v2"}[5m])))
histogram_quantile(0.99, sum by (le) (rate(relayer_http_request_duration_seconds_bucket{endpoint="/user-decrypt", version="v2"}[5m])))
sum(rate(relayer_http_requests_total{endpoint="/public-decrypt", version="v2"}[5m]))histogram_quantile(0.95, sum by (le) (rate(relayer_http_request_duration_seconds_bucket{endpoint="/public-decrypt", version="v2"}[5m])))
sum(rate(relayer_http_requests_total{endpoint="/input-proof", version="v2"}[5m]))histogram_quantile(0.95, sum by (le) (rate(relayer_http_request_duration_seconds_bucket{endpoint="/input-proof", version="v2"}[5m])))
Metrics for general utility endpoints.
sum(rate(relayer_http_requests_total{endpoint="/keyurl"}[5m]))histogram_quantile(0.95, sum by (le) (rate(relayer_http_request_duration_seconds_bucket{endpoint="/keyurl"}[5m])))
Granular breakdown of HTTP status codes.
sum by (endpoint, version) (irate(relayer_http_responses_total{status="500"}[$__rate_interval]))
sum by (endpoint, version) (rate(relayer_http_responses_total{status=~"5..", status!="500"}[5m]))
sum by (endpoint, version) (rate(relayer_http_responses_total{status=~"4..", status!="429"}[5m]))
sum by (endpoint, version) (rate(relayer_http_responses_total{status="429"}[5m]))