diff --git a/benchmarks/bridge-execution-latency.yml b/benchmarks/bridge-execution-latency.yml index 8fe4fc440..c51e77e9b 100644 --- a/benchmarks/bridge-execution-latency.yml +++ b/benchmarks/bridge-execution-latency.yml @@ -88,14 +88,14 @@ source: https://github.com/ChainBench/OpenChainBench/tree/main/harnesses/bridge- metric_panels: - id: slippage label: Slippage vs quote - metric: avg by (bridge) (bridge_quote_slippage_usd{region="eu-west"}) + metric: avg by (bridge) (ocb:bridge_quote_slippage_usd:mean_24h{region="eu-west"}) label_key: bridge unit: usd higher_is_better: false description: "Realized fee minus quote-projected fee, in USD. The gap between what the quote promised and what actually settled." - id: gas label: All-in gas we paid - metric: avg by (bridge) (bridge_exec_gas_usd{region="eu-west"}) + metric: avg by (bridge) (ocb:bridge_exec_gas_usd:avg_24h{region="eu-west"}) label_key: bridge unit: usd higher_is_better: false @@ -111,49 +111,49 @@ providers: tag: Aggregator + intent layer formula: "p50 over 24h of on-chain execution latency (broadcast to funds received, ms) for real USDC-triangle transfers executed through Mobula from EU-West, at the selected ticket size and corridor." queries: - p50: avg(quantile_over_time(0.50, bridge_exec_latency_ms{bridge="mobula", region="eu-west"}[24h])) - p90: avg(quantile_over_time(0.90, bridge_exec_latency_ms{bridge="mobula", region="eu-west"}[24h])) - p99: avg(quantile_over_time(0.99, bridge_exec_latency_ms{bridge="mobula", region="eu-west"}[24h])) - mean: avg(avg_over_time(bridge_exec_latency_ms{bridge="mobula", region="eu-west"}[24h])) + p50: avg(ocb:bridge_exec_latency_ms:p50_24h{bridge="mobula", region="eu-west"}) + p90: avg(ocb:bridge_exec_latency_ms:p90_24h{bridge="mobula", region="eu-west"}) + p99: avg(ocb:bridge_exec_latency_ms:p99_24h{bridge="mobula", region="eu-west"}) + mean: avg(ocb:bridge_exec_latency_ms:mean_24h{bridge="mobula", region="eu-west"}) success: sum(increase(bridge_success_total{bridge="mobula", region="eu-west"}[24h])) / clamp_min(sum(increase(bridge_success_total{bridge="mobula", region="eu-west"}[24h])) + sum(increase(bridge_reverts_total{bridge="mobula", region="eu-west"}[24h])), 1) sample_size: sum(increase(bridge_success_total{bridge="mobula", region="eu-west"}[24h])) + sum(increase(bridge_reverts_total{bridge="mobula", region="eu-west"}[24h])) - series: avg_over_time(bridge_exec_latency_ms{bridge="mobula", region="eu-west"}[1h]) + series: ocb:bridge_exec_latency_ms:p50_24h{bridge="mobula", region="eu-west"} - slug: relay name: Relay tag: Cross-chain relay formula: "p50 over 24h of on-chain execution latency (broadcast to funds received, ms) for real USDC-triangle transfers executed through Relay from EU-West, at the selected ticket size and corridor." queries: - p50: avg(quantile_over_time(0.50, bridge_exec_latency_ms{bridge="relay", region="eu-west"}[24h])) - p90: avg(quantile_over_time(0.90, bridge_exec_latency_ms{bridge="relay", region="eu-west"}[24h])) - p99: avg(quantile_over_time(0.99, bridge_exec_latency_ms{bridge="relay", region="eu-west"}[24h])) - mean: avg(avg_over_time(bridge_exec_latency_ms{bridge="relay", region="eu-west"}[24h])) + p50: avg(ocb:bridge_exec_latency_ms:p50_24h{bridge="relay", region="eu-west"}) + p90: avg(ocb:bridge_exec_latency_ms:p90_24h{bridge="relay", region="eu-west"}) + p99: avg(ocb:bridge_exec_latency_ms:p99_24h{bridge="relay", region="eu-west"}) + mean: avg(ocb:bridge_exec_latency_ms:mean_24h{bridge="relay", region="eu-west"}) success: sum(increase(bridge_success_total{bridge="relay", region="eu-west"}[24h])) / clamp_min(sum(increase(bridge_success_total{bridge="relay", region="eu-west"}[24h])) + sum(increase(bridge_reverts_total{bridge="relay", region="eu-west"}[24h])), 1) sample_size: sum(increase(bridge_success_total{bridge="relay", region="eu-west"}[24h])) + sum(increase(bridge_reverts_total{bridge="relay", region="eu-west"}[24h])) - series: avg_over_time(bridge_exec_latency_ms{bridge="relay", region="eu-west"}[1h]) + series: ocb:bridge_exec_latency_ms:p50_24h{bridge="relay", region="eu-west"} - slug: lifi name: LI.FI tag: Aggregator formula: "p50 over 24h of on-chain execution latency (broadcast to funds received, ms) for real USDC-triangle transfers executed through LI.FI from EU-West, at the selected ticket size and corridor." queries: - p50: avg(quantile_over_time(0.50, bridge_exec_latency_ms{bridge="lifi", region="eu-west"}[24h])) - p90: avg(quantile_over_time(0.90, bridge_exec_latency_ms{bridge="lifi", region="eu-west"}[24h])) - p99: avg(quantile_over_time(0.99, bridge_exec_latency_ms{bridge="lifi", region="eu-west"}[24h])) - mean: avg(avg_over_time(bridge_exec_latency_ms{bridge="lifi", region="eu-west"}[24h])) + p50: avg(ocb:bridge_exec_latency_ms:p50_24h{bridge="lifi", region="eu-west"}) + p90: avg(ocb:bridge_exec_latency_ms:p90_24h{bridge="lifi", region="eu-west"}) + p99: avg(ocb:bridge_exec_latency_ms:p99_24h{bridge="lifi", region="eu-west"}) + mean: avg(ocb:bridge_exec_latency_ms:mean_24h{bridge="lifi", region="eu-west"}) success: sum(increase(bridge_success_total{bridge="lifi", region="eu-west"}[24h])) / clamp_min(sum(increase(bridge_success_total{bridge="lifi", region="eu-west"}[24h])) + sum(increase(bridge_reverts_total{bridge="lifi", region="eu-west"}[24h])), 1) sample_size: sum(increase(bridge_success_total{bridge="lifi", region="eu-west"}[24h])) + sum(increase(bridge_reverts_total{bridge="lifi", region="eu-west"}[24h])) - series: avg_over_time(bridge_exec_latency_ms{bridge="lifi", region="eu-west"}[1h]) + series: ocb:bridge_exec_latency_ms:p50_24h{bridge="lifi", region="eu-west"} - slug: near-intents name: Near Intents tag: Intent layer (NEAR) formula: "p50 over 24h of exact on-chain execution latency (broadcast to funds received, ms) for real USDC-triangle transfers executed through the Near Intents 1Click flow from EU-West, at the selected ticket size and corridor." queries: - p50: avg(quantile_over_time(0.50, bridge_exec_latency_ms{bridge="near-intents", region="eu-west"}[24h])) - p90: avg(quantile_over_time(0.90, bridge_exec_latency_ms{bridge="near-intents", region="eu-west"}[24h])) - p99: avg(quantile_over_time(0.99, bridge_exec_latency_ms{bridge="near-intents", region="eu-west"}[24h])) - mean: avg(avg_over_time(bridge_exec_latency_ms{bridge="near-intents", region="eu-west"}[24h])) + p50: avg(ocb:bridge_exec_latency_ms:p50_24h{bridge="near-intents", region="eu-west"}) + p90: avg(ocb:bridge_exec_latency_ms:p90_24h{bridge="near-intents", region="eu-west"}) + p99: avg(ocb:bridge_exec_latency_ms:p99_24h{bridge="near-intents", region="eu-west"}) + mean: avg(ocb:bridge_exec_latency_ms:mean_24h{bridge="near-intents", region="eu-west"}) success: sum(increase(bridge_success_total{bridge="near-intents", region="eu-west"}[24h])) / clamp_min(sum(increase(bridge_success_total{bridge="near-intents", region="eu-west"}[24h])) + sum(increase(bridge_reverts_total{bridge="near-intents", region="eu-west"}[24h])), 1) sample_size: sum(increase(bridge_success_total{bridge="near-intents", region="eu-west"}[24h])) + sum(increase(bridge_reverts_total{bridge="near-intents", region="eu-west"}[24h])) - series: avg_over_time(bridge_exec_latency_ms{bridge="near-intents", region="eu-west"}[1h]) + series: ocb:bridge_exec_latency_ms:p50_24h{bridge="near-intents", region="eu-west"} diff --git a/benchmarks/bridge-realized-cost.yml b/benchmarks/bridge-realized-cost.yml index 85314d885..98baa909a 100644 --- a/benchmarks/bridge-realized-cost.yml +++ b/benchmarks/bridge-realized-cost.yml @@ -75,14 +75,14 @@ source: https://github.com/ChainBench/OpenChainBench/tree/main/harnesses/bridge- metric_panels: - id: gas label: All-in gas we paid - metric: avg by (bridge) (bridge_exec_gas_usd{region="eu-west"}) + metric: avg by (bridge) (ocb:bridge_exec_gas_usd:avg_24h{region="eu-west"}) label_key: bridge unit: usd higher_is_better: false description: "Our own on-chain gas (approve plus deposit), measured as the source-chain native balance delta. The cost the user bears on top of the bridge fee." - id: realized label: Realized output on-chain - metric: avg by (bridge) (bridge_realized_output_usd{region="eu-west"}) + metric: avg by (bridge) (ocb:bridge_realized_output_usd:avg_24h{region="eu-west"}) label_key: bridge unit: usd higher_is_better: true @@ -99,12 +99,12 @@ providers: type: intent formula: "24h median of execution slippage vs quote (realized fee minus quote-projected fee, USD) on real executed USDC-triangle transfers through Mobula from EU-West, at the selected corridor and ticket size." queries: - p50: avg(quantile_over_time(0.50, bridge_quote_slippage_usd{bridge="mobula", region="eu-west"}[24h])) - p90: avg(quantile_over_time(0.90, bridge_quote_slippage_usd{bridge="mobula", region="eu-west"}[24h])) - p99: avg(quantile_over_time(0.99, bridge_quote_slippage_usd{bridge="mobula", region="eu-west"}[24h])) - mean: avg(avg_over_time(bridge_quote_slippage_usd{bridge="mobula", region="eu-west"}[24h])) + p50: avg(ocb:bridge_quote_slippage_usd:p50_24h{bridge="mobula", region="eu-west"}) + p90: avg(ocb:bridge_quote_slippage_usd:p90_24h{bridge="mobula", region="eu-west"}) + p99: avg(ocb:bridge_quote_slippage_usd:p99_24h{bridge="mobula", region="eu-west"}) + mean: avg(ocb:bridge_quote_slippage_usd:mean_24h{bridge="mobula", region="eu-west"}) sample_size: sum(count_over_time(bridge_quote_slippage_usd{bridge="mobula", region="eu-west"}[24h])) - series: avg_over_time(bridge_quote_slippage_usd{bridge="mobula", region="eu-west"}[1h]) + series: ocb:bridge_quote_slippage_usd:p50_24h{bridge="mobula", region="eu-west"} - slug: relay name: Relay @@ -112,12 +112,12 @@ providers: type: relay formula: "24h median of execution slippage vs quote (realized fee minus quote-projected fee, USD) on real executed USDC-triangle transfers through Relay from EU-West, at the selected corridor and ticket size." queries: - p50: avg(quantile_over_time(0.50, bridge_quote_slippage_usd{bridge="relay", region="eu-west"}[24h])) - p90: avg(quantile_over_time(0.90, bridge_quote_slippage_usd{bridge="relay", region="eu-west"}[24h])) - p99: avg(quantile_over_time(0.99, bridge_quote_slippage_usd{bridge="relay", region="eu-west"}[24h])) - mean: avg(avg_over_time(bridge_quote_slippage_usd{bridge="relay", region="eu-west"}[24h])) + p50: avg(ocb:bridge_quote_slippage_usd:p50_24h{bridge="relay", region="eu-west"}) + p90: avg(ocb:bridge_quote_slippage_usd:p90_24h{bridge="relay", region="eu-west"}) + p99: avg(ocb:bridge_quote_slippage_usd:p99_24h{bridge="relay", region="eu-west"}) + mean: avg(ocb:bridge_quote_slippage_usd:mean_24h{bridge="relay", region="eu-west"}) sample_size: sum(count_over_time(bridge_quote_slippage_usd{bridge="relay", region="eu-west"}[24h])) - series: avg_over_time(bridge_quote_slippage_usd{bridge="relay", region="eu-west"}[1h]) + series: ocb:bridge_quote_slippage_usd:p50_24h{bridge="relay", region="eu-west"} - slug: lifi name: LI.FI @@ -125,12 +125,12 @@ providers: type: aggregator formula: "24h median of execution slippage vs quote (realized fee minus quote-projected fee, USD) on real executed USDC-triangle transfers through LI.FI from EU-West, at the selected corridor and ticket size." queries: - p50: avg(quantile_over_time(0.50, bridge_quote_slippage_usd{bridge="lifi", region="eu-west"}[24h])) - p90: avg(quantile_over_time(0.90, bridge_quote_slippage_usd{bridge="lifi", region="eu-west"}[24h])) - p99: avg(quantile_over_time(0.99, bridge_quote_slippage_usd{bridge="lifi", region="eu-west"}[24h])) - mean: avg(avg_over_time(bridge_quote_slippage_usd{bridge="lifi", region="eu-west"}[24h])) + p50: avg(ocb:bridge_quote_slippage_usd:p50_24h{bridge="lifi", region="eu-west"}) + p90: avg(ocb:bridge_quote_slippage_usd:p90_24h{bridge="lifi", region="eu-west"}) + p99: avg(ocb:bridge_quote_slippage_usd:p99_24h{bridge="lifi", region="eu-west"}) + mean: avg(ocb:bridge_quote_slippage_usd:mean_24h{bridge="lifi", region="eu-west"}) sample_size: sum(count_over_time(bridge_quote_slippage_usd{bridge="lifi", region="eu-west"}[24h])) - series: avg_over_time(bridge_quote_slippage_usd{bridge="lifi", region="eu-west"}[1h]) + series: ocb:bridge_quote_slippage_usd:p50_24h{bridge="lifi", region="eu-west"} - slug: near-intents name: Near Intents @@ -138,9 +138,9 @@ providers: type: intent formula: "24h median of execution slippage vs quote (realized fee minus quote-projected fee, USD) on real executed USDC-triangle transfers through the Near Intents 1Click flow from EU-West, at the selected corridor and ticket size." queries: - p50: avg(quantile_over_time(0.50, bridge_quote_slippage_usd{bridge="near-intents", region="eu-west"}[24h])) - p90: avg(quantile_over_time(0.90, bridge_quote_slippage_usd{bridge="near-intents", region="eu-west"}[24h])) - p99: avg(quantile_over_time(0.99, bridge_quote_slippage_usd{bridge="near-intents", region="eu-west"}[24h])) - mean: avg(avg_over_time(bridge_quote_slippage_usd{bridge="near-intents", region="eu-west"}[24h])) + p50: avg(ocb:bridge_quote_slippage_usd:p50_24h{bridge="near-intents", region="eu-west"}) + p90: avg(ocb:bridge_quote_slippage_usd:p90_24h{bridge="near-intents", region="eu-west"}) + p99: avg(ocb:bridge_quote_slippage_usd:p99_24h{bridge="near-intents", region="eu-west"}) + mean: avg(ocb:bridge_quote_slippage_usd:mean_24h{bridge="near-intents", region="eu-west"}) sample_size: sum(count_over_time(bridge_quote_slippage_usd{bridge="near-intents", region="eu-west"}[24h])) - series: avg_over_time(bridge_quote_slippage_usd{bridge="near-intents", region="eu-west"}[1h]) + series: ocb:bridge_quote_slippage_usd:p50_24h{bridge="near-intents", region="eu-west"} diff --git a/infrastructure/monitoring/prometheus/ocb_bridge_execution.yml b/infrastructure/monitoring/prometheus/ocb_bridge_execution.yml new file mode 100644 index 000000000..e4d000609 --- /dev/null +++ b/infrastructure/monitoring/prometheus/ocb_bridge_execution.yml @@ -0,0 +1,30 @@ +# Recording rules for the bridge EXECUTION benches (261 latency, 263 realized +# cost). These metrics come from real executions that run ~once/day, so the +# raw gauges go Prom-stale between runs and instant queries see nothing. Each +# rule re-evaluates the 24h window every 30s and emits a FRESH ocb: series, +# so the site always has a current value to render (standard OCB pattern; the +# labels are preserved so the chain / amount_usd / region tabs still filter). +groups: + - name: ocb_bridge_execution + interval: 30s + rules: + - record: ocb:bridge_exec_latency_ms:p50_24h + expr: quantile_over_time(0.50, bridge_exec_latency_ms[24h]) + - record: ocb:bridge_exec_latency_ms:p90_24h + expr: quantile_over_time(0.90, bridge_exec_latency_ms[24h]) + - record: ocb:bridge_exec_latency_ms:p99_24h + expr: quantile_over_time(0.99, bridge_exec_latency_ms[24h]) + - record: ocb:bridge_exec_latency_ms:mean_24h + expr: avg_over_time(bridge_exec_latency_ms[24h]) + - record: ocb:bridge_quote_slippage_usd:p50_24h + expr: quantile_over_time(0.50, bridge_quote_slippage_usd[24h]) + - record: ocb:bridge_quote_slippage_usd:p90_24h + expr: quantile_over_time(0.90, bridge_quote_slippage_usd[24h]) + - record: ocb:bridge_quote_slippage_usd:p99_24h + expr: quantile_over_time(0.99, bridge_quote_slippage_usd[24h]) + - record: ocb:bridge_quote_slippage_usd:mean_24h + expr: avg_over_time(bridge_quote_slippage_usd[24h]) + - record: ocb:bridge_exec_gas_usd:avg_24h + expr: avg_over_time(bridge_exec_gas_usd[24h]) + - record: ocb:bridge_realized_output_usd:avg_24h + expr: avg_over_time(bridge_realized_output_usd[24h])