From 8ffdce2996264f699e00da44f7e6ac8a30b1432d Mon Sep 17 00:00:00 2001 From: David Herberth Date: Wed, 22 May 2024 16:58:08 +0200 Subject: [PATCH] ref(metrics): Move metrics related modules into proper metrics module (#3634) --- relay-server/src/lib.rs | 1 - .../src/{utils => metrics}/bucket_encoding.rs | 0 relay-server/src/{ => metrics}/metric_stats.rs | 0 relay-server/src/metrics/minimal.rs | 3 +-- relay-server/src/metrics/mod.rs | 13 +++++++++++++ .../src/{metrics.rs => metrics/outcomes.rs} | 7 +------ .../rate_limits.rs} | 4 ++-- relay-server/src/service.rs | 3 +-- relay-server/src/services/processor.rs | 8 ++++---- relay-server/src/services/project.rs | 8 +++----- relay-server/src/services/project/metrics.rs | 2 +- relay-server/src/services/project_cache.rs | 2 +- relay-server/src/services/store.rs | 6 ++---- relay-server/src/testutils.rs | 3 +-- relay-server/src/utils/mod.rs | 6 ------ 15 files changed, 30 insertions(+), 36 deletions(-) rename relay-server/src/{utils => metrics}/bucket_encoding.rs (100%) rename relay-server/src/{ => metrics}/metric_stats.rs (100%) create mode 100644 relay-server/src/metrics/mod.rs rename relay-server/src/{metrics.rs => metrics/outcomes.rs} (98%) rename relay-server/src/{utils/metrics_rate_limits.rs => metrics/rate_limits.rs} (99%) diff --git a/relay-server/src/lib.rs b/relay-server/src/lib.rs index 936477c24af..f6370a637da 100644 --- a/relay-server/src/lib.rs +++ b/relay-server/src/lib.rs @@ -258,7 +258,6 @@ mod endpoints; mod envelope; mod extractors; mod http; -mod metric_stats; mod metrics; mod metrics_extraction; mod middlewares; diff --git a/relay-server/src/utils/bucket_encoding.rs b/relay-server/src/metrics/bucket_encoding.rs similarity index 100% rename from relay-server/src/utils/bucket_encoding.rs rename to relay-server/src/metrics/bucket_encoding.rs diff --git a/relay-server/src/metric_stats.rs b/relay-server/src/metrics/metric_stats.rs similarity index 100% rename from relay-server/src/metric_stats.rs rename to relay-server/src/metrics/metric_stats.rs diff --git a/relay-server/src/metrics/minimal.rs b/relay-server/src/metrics/minimal.rs index ea242376984..7865bff7872 100644 --- a/relay-server/src/metrics/minimal.rs +++ b/relay-server/src/metrics/minimal.rs @@ -4,8 +4,7 @@ use relay_metrics::{ use serde::de::IgnoredAny; use serde::{de, Deserialize, Deserializer}; -use crate::metrics::{BucketSummary, TrackableBucket}; -use crate::utils::ExtractionMode; +use crate::metrics::{BucketSummary, ExtractionMode, TrackableBucket}; /// Bucket which parses only the minimally required information to implement [`TrackableBucket`]. /// diff --git a/relay-server/src/metrics/mod.rs b/relay-server/src/metrics/mod.rs new file mode 100644 index 00000000000..2576a7b385a --- /dev/null +++ b/relay-server/src/metrics/mod.rs @@ -0,0 +1,13 @@ +#[cfg(feature = "processing")] +mod bucket_encoding; +mod metric_stats; +mod minimal; +mod outcomes; +mod rate_limits; + +#[cfg(feature = "processing")] +pub use self::bucket_encoding::*; +pub use self::metric_stats::*; +pub use self::minimal::*; +pub use self::outcomes::*; +pub use self::rate_limits::*; diff --git a/relay-server/src/metrics.rs b/relay-server/src/metrics/outcomes.rs similarity index 98% rename from relay-server/src/metrics.rs rename to relay-server/src/metrics/outcomes.rs index 7dc12be2e7c..401d0f5af83 100644 --- a/relay-server/src/metrics.rs +++ b/relay-server/src/metrics/outcomes.rs @@ -7,16 +7,11 @@ use relay_quotas::{DataCategory, Scoping}; use relay_system::Addr; use crate::envelope::SourceQuantities; -use crate::metric_stats::MetricStats; +use crate::metrics::{ExtractionMode, MetricStats}; use crate::services::outcome::{Outcome, TrackOutcome}; -use crate::utils::ExtractionMode; #[cfg(feature = "processing")] use relay_cardinality::{CardinalityLimit, CardinalityReport}; -mod minimal; - -pub use self::minimal::*; - pub const PROFILE_TAG: &str = "has_profile"; /// Indicates where quantities should be taken from. diff --git a/relay-server/src/utils/metrics_rate_limits.rs b/relay-server/src/metrics/rate_limits.rs similarity index 99% rename from relay-server/src/utils/metrics_rate_limits.rs rename to relay-server/src/metrics/rate_limits.rs index 2f97db05245..87feebfecc0 100644 --- a/relay-server/src/utils/metrics_rate_limits.rs +++ b/relay-server/src/metrics/rate_limits.rs @@ -7,7 +7,7 @@ use relay_metrics::Bucket; use relay_quotas::{DataCategory, Quota, RateLimits, Scoping}; use relay_system::Addr; -use crate::metrics::{BucketSummary, MetricOutcomes, TrackableBucket, PROFILE_TAG}; +use crate::metrics::outcomes::{BucketSummary, MetricOutcomes, TrackableBucket, PROFILE_TAG}; use crate::services::outcome::{Outcome, TrackOutcome}; use crate::utils; @@ -287,7 +287,7 @@ mod tests { use relay_quotas::QuotaScope; use smallvec::smallvec; - use crate::metric_stats::MetricStats; + use crate::metrics::MetricStats; use super::*; diff --git a/relay-server/src/service.rs b/relay-server/src/service.rs index 0d8f3b67cf1..d5606fa9ce4 100644 --- a/relay-server/src/service.rs +++ b/relay-server/src/service.rs @@ -2,8 +2,7 @@ use std::convert::Infallible; use std::fmt; use std::sync::Arc; -use crate::metric_stats::MetricStats; -use crate::metrics::MetricOutcomes; +use crate::metrics::{MetricOutcomes, MetricStats}; use anyhow::{Context, Result}; use axum::extract::FromRequestParts; use axum::http::request::Parts; diff --git a/relay-server/src/services/processor.rs b/relay-server/src/services/processor.rs index 5c7660c9836..1b9d455927d 100644 --- a/relay-server/src/services/processor.rs +++ b/relay-server/src/services/processor.rs @@ -46,8 +46,9 @@ use tokio::sync::Semaphore; #[cfg(feature = "processing")] use { + crate::metrics::MetricsLimiter, crate::services::store::{Store, StoreEnvelope}, - crate::utils::{sample, EnvelopeLimiter, ItemAction, MetricsLimiter}, + crate::utils::{sample, EnvelopeLimiter, ItemAction}, itertools::Itertools, relay_cardinality::{ CardinalityLimit, CardinalityLimiter, CardinalityLimitsSplit, RedisSetLimiter, @@ -64,7 +65,7 @@ use { use crate::envelope::{self, ContentType, Envelope, EnvelopeError, Item, ItemType}; use crate::extractors::{PartialDsn, RequestMeta}; -use crate::metrics::{MetricOutcomes, MinimalTrackableBucket}; +use crate::metrics::{ExtractionMode, MetricOutcomes, MinimalTrackableBucket}; use crate::metrics_extraction::transactions::types::ExtractMetricsError; use crate::metrics_extraction::transactions::{ExtractedMetrics, TransactionExtractor}; use crate::service::ServiceError; @@ -83,8 +84,7 @@ use crate::statsd::{RelayCounters, RelayHistograms, RelayTimers}; #[cfg(feature = "processing")] use crate::utils::BufferGuard; use crate::utils::{ - self, ExtractionMode, InvalidProcessingGroupType, ManagedEnvelope, SamplingResult, - TypedEnvelope, + self, InvalidProcessingGroupType, ManagedEnvelope, SamplingResult, TypedEnvelope, }; use crate::{http, metrics}; diff --git a/relay-server/src/services/project.rs b/relay-server/src/services/project.rs index e73e9c5d3e3..c983a985047 100644 --- a/relay-server/src/services/project.rs +++ b/relay-server/src/services/project.rs @@ -23,7 +23,7 @@ use tokio::time::Instant; use url::Url; use crate::envelope::Envelope; -use crate::metrics::MetricOutcomes; +use crate::metrics::{ExtractionMode, MetricOutcomes, MetricsLimiter}; use crate::services::outcome::{DiscardReason, Outcome, TrackOutcome}; #[cfg(feature = "processing")] use crate::services::processor::RateLimitBuckets; @@ -33,9 +33,7 @@ use crate::services::project_cache::{BucketSource, CheckedEnvelope, ProjectCache use crate::extractors::RequestMeta; use crate::statsd::RelayCounters; -use crate::utils::{ - self, EnvelopeLimiter, ExtractionMode, ManagedEnvelope, MetricsLimiter, RetryBackoff, -}; +use crate::utils::{self, EnvelopeLimiter, ManagedEnvelope, RetryBackoff}; mod metrics; @@ -1170,7 +1168,7 @@ impl Project { mod tests { use std::sync::Mutex; - use crate::metric_stats::MetricStats; + use crate::metrics::MetricStats; use relay_common::time::UnixTimestamp; use relay_metrics::BucketValue; use relay_test::mock_service; diff --git a/relay-server/src/services/project/metrics.rs b/relay-server/src/services/project/metrics.rs index d03bdd16c1a..4c54bc5a604 100644 --- a/relay-server/src/services/project/metrics.rs +++ b/relay-server/src/services/project/metrics.rs @@ -161,7 +161,7 @@ mod tests { use relay_metrics::{Aggregator, BucketValue, UnixTimestamp}; use relay_system::Addr; - use crate::metric_stats::MetricStats; + use crate::metrics::MetricStats; use super::*; diff --git a/relay-server/src/services/project_cache.rs b/relay-server/src/services/project_cache.rs index 72f18805df6..97fb7f2462d 100644 --- a/relay-server/src/services/project_cache.rs +++ b/relay-server/src/services/project_cache.rs @@ -1253,7 +1253,7 @@ impl FetchOptionalProjectState { #[cfg(test)] mod tests { - use crate::metric_stats::MetricStats; + use crate::metrics::MetricStats; use crate::services::global_config::GlobalConfigHandle; use relay_dynamic_config::GlobalConfig; use relay_test::mock_service; diff --git a/relay-server/src/services/store.rs b/relay-server/src/services/store.rs index 9045ef1462d..7514d8ac1d3 100644 --- a/relay-server/src/services/store.rs +++ b/relay-server/src/services/store.rs @@ -30,15 +30,13 @@ use uuid::Uuid; use crate::envelope::{AttachmentType, Envelope, Item, ItemType}; -use crate::metrics::MetricOutcomes; +use crate::metrics::{ArrayEncoding, BucketEncoder, ExtractionMode, MetricOutcomes}; use crate::service::ServiceError; use crate::services::global_config::GlobalConfigHandle; use crate::services::outcome::{DiscardReason, Outcome, TrackOutcome}; use crate::services::processor::Processed; use crate::statsd::RelayCounters; -use crate::utils::{ - is_rolled_out, ArrayEncoding, BucketEncoder, ExtractionMode, FormDataIter, TypedEnvelope, -}; +use crate::utils::{is_rolled_out, FormDataIter, TypedEnvelope}; /// Fallback name used for attachment items without a `filename` header. const UNNAMED_ATTACHMENT: &str = "Unnamed Attachment"; diff --git a/relay-server/src/testutils.rs b/relay-server/src/testutils.rs index df8ef7b7585..25e245499d7 100644 --- a/relay-server/src/testutils.rs +++ b/relay-server/src/testutils.rs @@ -14,8 +14,7 @@ use relay_test::mock_service; use crate::envelope::{Envelope, Item, ItemType}; use crate::extractors::RequestMeta; -use crate::metric_stats::MetricStats; -use crate::metrics::MetricOutcomes; +use crate::metrics::{MetricOutcomes, MetricStats}; use crate::services::global_config::GlobalConfigHandle; use crate::services::outcome::TrackOutcome; use crate::services::processor::{self, EnvelopeProcessorService}; diff --git a/relay-server/src/utils/mod.rs b/relay-server/src/utils/mod.rs index 1bc09174757..99e7c630e38 100644 --- a/relay-server/src/utils/mod.rs +++ b/relay-server/src/utils/mod.rs @@ -1,11 +1,8 @@ mod api; -#[cfg(feature = "processing")] -mod bucket_encoding; mod buffer; mod dynamic_sampling; mod garbage; mod managed_envelope; -mod metrics_rate_limits; mod multipart; mod param_parser; mod pick; @@ -23,13 +20,10 @@ mod native; mod unreal; pub use self::api::*; -#[cfg(feature = "processing")] -pub use self::bucket_encoding::*; pub use self::buffer::*; pub use self::dynamic_sampling::*; pub use self::garbage::*; pub use self::managed_envelope::*; -pub use self::metrics_rate_limits::*; pub use self::multipart::*; #[cfg(feature = "processing")] pub use self::native::*;