diff options
Diffstat (limited to 'lib/gitlab/usage_data_counters/hll_redis_counter.rb')
-rw-r--r-- | lib/gitlab/usage_data_counters/hll_redis_counter.rb | 60 |
1 files changed, 1 insertions, 59 deletions
diff --git a/lib/gitlab/usage_data_counters/hll_redis_counter.rb b/lib/gitlab/usage_data_counters/hll_redis_counter.rb index 24a87ae01f4..992cec2d174 100644 --- a/lib/gitlab/usage_data_counters/hll_redis_counter.rb +++ b/lib/gitlab/usage_data_counters/hll_redis_counter.rb @@ -25,32 +25,6 @@ module Gitlab pipeline_authoring ].freeze - CATEGORIES_COLLECTED_FROM_METRICS_DEFINITIONS = %w[ - analytics - ci_users - deploy_token_packages - code_review - ecosystem - error_tracking - ide_edit - importer - incident_management - incident_management_alerts - issues_edit - kubernetes_agent - manage - pipeline_authoring - quickactions - search - secure - snippets - source_code - terraform - testing - user_packages - work_items - ].freeze - # Track event on entity_id # Increment a Redis HLL counter for unique event_name and entity_id # @@ -114,41 +88,12 @@ module Gitlab @categories ||= known_events.map { |event| event[:category] }.uniq end - def categories_collected_from_metrics_definitions - CATEGORIES_COLLECTED_FROM_METRICS_DEFINITIONS - end - # @param category [String] the category name # @return [Array<String>] list of event names for given category def events_for_category(category) known_events.select { |event| event[:category] == category.to_s }.map { |event| event[:name] } end - # Recent 7 or 28 days unique events data for events defined in /lib/gitlab/usage_data_counters/known_events/ - # - # - For metrics for which we store a key per day, we have the last 7 days or last 28 days of data. - # - For metrics for which we store a key per week, we have the last complete week or last 4 complete weeks - # daily or weekly information is in the file we have for events definition /lib/gitlab/usage_data_counters/known_events/ - # - Most of the metrics have weekly aggregation. We recommend this as it generates fewer keys in Redis to store. - # - The aggregation used doesn't affect data granulation. - def unique_events_data - categories_pending_migration.each_with_object({}) do |category, category_results| - events_names = events_for_category(category) - - event_results = events_names.each_with_object({}) do |event, hash| - hash["#{event}_weekly"] = unique_events(**weekly_time_range.merge(event_names: [event])) unless event == "i_package_composer_deploy_token" - hash["#{event}_monthly"] = unique_events(**monthly_time_range.merge(event_names: [event])) - end - - if eligible_for_totals?(events_names) && CATEGORIES_FOR_TOTALS.include?(category) - event_results["#{category}_total_unique_counts_weekly"] = unique_events(**weekly_time_range.merge(event_names: events_names)) - event_results["#{category}_total_unique_counts_monthly"] = unique_events(**monthly_time_range.merge(event_names: events_names)) - end - - category_results["#{category}"] = event_results - end - end - def known_event?(event_name) event_for(event_name).present? end @@ -166,16 +111,13 @@ module Gitlab private - def categories_pending_migration - (categories - categories_collected_from_metrics_definitions) - end - def track(values, event_name, context: '', time: Time.zone.now) return unless ::ServicePing::ServicePingSettings.enabled? event = event_for(event_name) Gitlab::ErrorTracking.track_and_raise_for_dev_exception(UnknownEvent.new("Unknown event #{event_name}")) unless event.present? + return if event.blank? return unless feature_enabled?(event) Gitlab::Redis::HLL.add(key: redis_key(event, time, context), value: values, expiry: expiry(event)) |