diff options
Diffstat (limited to 'lib/gitlab/usage/metrics/instrumentations/redis_hll_metric.rb')
-rw-r--r-- | lib/gitlab/usage/metrics/instrumentations/redis_hll_metric.rb | 35 |
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 |