summaryrefslogtreecommitdiff
path: root/lib/gitlab/usage/metrics/instrumentations/redis_hll_metric.rb
diff options
context:
space:
mode:
Diffstat (limited to 'lib/gitlab/usage/metrics/instrumentations/redis_hll_metric.rb')
-rw-r--r--lib/gitlab/usage/metrics/instrumentations/redis_hll_metric.rb35
1 files changed, 25 insertions, 10 deletions
diff --git a/lib/gitlab/usage/metrics/instrumentations/redis_hll_metric.rb b/lib/gitlab/usage/metrics/instrumentations/redis_hll_metric.rb
index 140d56f0d42..a36e612a1cb 100644
--- a/lib/gitlab/usage/metrics/instrumentations/redis_hll_metric.rb
+++ b/lib/gitlab/usage/metrics/instrumentations/redis_hll_metric.rb
@@ -7,35 +7,50 @@ module Gitlab
class RedisHLLMetric < BaseMetric
# Usage example
#
- # class CountUsersVisitingAnalyticsValuestreamMetric < RedisHLLMetric
- # event_names :g_analytics_valuestream
+ # In metric YAML defintion
+ # instrumentation_class: RedisHLLMetric
+ # events:
+ # - g_analytics_valuestream
# end
class << self
- def event_names(events = nil)
- @metric_events = events
- end
+ attr_reader :metric_operation
+ @metric_operation = :redis
+ end
- attr_reader :metric_events
+ def initialize(time_frame:, options: {})
+ super
+
+ raise ArgumentError, "options events are required" unless metric_events.present?
+ end
+
+ def metric_events
+ options[:events]
end
def value
redis_usage_data do
- event_params = time_constraints.merge(event_names: self.class.metric_events)
+ event_params = time_constraints.merge(event_names: metric_events)
Gitlab::UsageDataCounters::HLLRedisCounter.unique_events(**event_params)
end
end
+ def suggested_name
+ Gitlab::Usage::Metrics::NameSuggestion.for(
+ self.class.metric_operation
+ )
+ end
+
private
def time_constraints
case time_frame
when '28d'
- { start_date: 4.weeks.ago.to_date, end_date: Date.current }
+ monthly_time_range
when '7d'
- { start_date: 7.days.ago.to_date, end_date: Date.current }
+ weekly_time_range
else
- raise "Unknown time frame: #{time_frame} for TimeConstraint"
+ raise "Unknown time frame: #{time_frame} for RedisHLLMetric"
end
end
end