diff --git a/pageserver/src/consumption_metrics/metrics.rs b/pageserver/src/consumption_metrics/metrics.rs index 2989e15e8e..0e1f7e9dda 100644 --- a/pageserver/src/consumption_metrics/metrics.rs +++ b/pageserver/src/consumption_metrics/metrics.rs @@ -3,6 +3,7 @@ use anyhow::Context; use chrono::{DateTime, Utc}; use consumption_metrics::EventType; use futures::stream::StreamExt; +use pageserver_api::shard::ShardNumber; use std::{sync::Arc, time::SystemTime}; use utils::{ id::{TenantId, TimelineId}, @@ -229,6 +230,11 @@ where while let Some((tenant_id, tenant)) = tenants.next().await { let mut tenant_resident_size = 0; + // Sharded tenants report all consumption metrics from shard zero + if tenant.get_shard().number == ShardNumber(0) { + continue; + } + for timeline in tenant.list_timelines() { let timeline_id = timeline.timeline_id; diff --git a/pageserver/src/tenant.rs b/pageserver/src/tenant.rs index ea36973e15..7c1bf5780c 100644 --- a/pageserver/src/tenant.rs +++ b/pageserver/src/tenant.rs @@ -2128,6 +2128,11 @@ impl Tenant { pub fn get_tenant_id(&self) -> TenantId { self.tenant_id } + + pub(crate) fn get_shard(&self) -> ShardIdentity { + self.tenant_conf.read().unwrap().shard.clone() + } + pub fn tenant_specific_overrides(&self) -> TenantConfOpt { self.tenant_conf.read().unwrap().tenant_conf }