diff --git a/app/services/users/activity_service.rb b/app/services/users/activity_service.rb
index 20594bec28d52df8aa4e1eceb643ae74c7e913d1..4978f778870b6c7f1876b0226dfeb61d3dd0daba 100644
--- a/app/services/users/activity_service.rb
+++ b/app/services/users/activity_service.rb
@@ -34,6 +34,8 @@ def record_activity
       return unless lease.try_obtain
 
       @user.update_attribute(:last_activity_on, today)
+
+      Gitlab::UsageDataCounters::HLLRedisCounter.track_event('unique_active_user', values: @user.id)
     end
   end
 end
diff --git a/config/metrics/counts_28d/20220525231314_unique_monthly_active_users.yml b/config/metrics/counts_28d/20220525231314_unique_monthly_active_users.yml
index b66e9d1180402cf64ff205645391cf63afa0d115..a4042763c46b4cddfbebdae587d488b06171d50d 100644
--- a/config/metrics/counts_28d/20220525231314_unique_monthly_active_users.yml
+++ b/config/metrics/counts_28d/20220525231314_unique_monthly_active_users.yml
@@ -7,9 +7,10 @@ product_section: dev
 product_stage: manage
 product_group: manage
 value_type: number
-status: active
+status: removed
 milestone: "15.1"
-introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/88631
+introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/88631/
+removed_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/90468/
 time_frame: 28d
 data_source: database
 data_category: optional
diff --git a/config/metrics/counts_28d/20220621085114_unque_active_users_monthly.yml b/config/metrics/counts_28d/20220621085114_unque_active_users_monthly.yml
new file mode 100644
index 0000000000000000000000000000000000000000..e3da930b8d991bfdeec9a6b581513724aa209cd2
--- /dev/null
+++ b/config/metrics/counts_28d/20220621085114_unque_active_users_monthly.yml
@@ -0,0 +1,24 @@
+---
+key_path: redis_hll_counters.manage.unque_active_users_monthly
+description: Users that have a last_activity_on date within the past 28 days
+product_section: dev
+product_stage: manage
+product_group: manage
+value_type: number
+status: active
+milestone: "15.2"
+introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/90468/
+time_frame: 28d
+data_source: redis_hll
+data_category: optional
+instrumentation_class: RedisHLLMetric
+options:
+  events:
+    - unique_active_user
+distribution:
+- ce
+- ee
+tier:
+- free
+- premium
+- ultimate
diff --git a/ee/spec/requests/api/audit_events_spec.rb b/ee/spec/requests/api/audit_events_spec.rb
index d84be6ab315a295c7f3e1b85dba30e818dda8940..262db96f6bfaf7a4010212105b2e70846b22aef1 100644
--- a/ee/spec/requests/api/audit_events_spec.rb
+++ b/ee/spec/requests/api/audit_events_spec.rb
@@ -28,7 +28,9 @@
       it 'tracks 3 separate events' do
         expect(Gitlab::UsageDataCounters::HLLRedisCounter).to receive(:track_event).exactly(3).times
                                                                   .with('a_compliance_audit_events_api', values: current_user.id)
-
+        # user activity tracking is also recorded
+        expect(Gitlab::UsageDataCounters::HLLRedisCounter).to receive(:track_event)
+                                                                  .with('unique_active_user', values: current_user.id)
         subject
       end
 
diff --git a/lib/gitlab/usage/metrics/instrumentations/unique_active_users_metric.rb b/lib/gitlab/usage/metrics/instrumentations/unique_active_users_metric.rb
deleted file mode 100644
index 9da30db05dd7aa67d172f3dc2e31521822c7f815..0000000000000000000000000000000000000000
--- a/lib/gitlab/usage/metrics/instrumentations/unique_active_users_metric.rb
+++ /dev/null
@@ -1,29 +0,0 @@
-# frozen_string_literal: true
-
-module Gitlab
-  module Usage
-    module Metrics
-      module Instrumentations
-        class UniqueActiveUsersMetric < DatabaseMetric
-          operation :count
-          relation { ::User.active }
-
-          metric_options do
-            {
-              batch_size: 10_000
-            }
-          end
-
-          def time_constraints
-            case time_frame
-            when '28d'
-              monthly_time_range_db_params(column: :last_activity_on)
-            else
-              super
-            end
-          end
-        end
-      end
-    end
-  end
-end
diff --git a/lib/gitlab/usage_data_counters/known_events/common.yml b/lib/gitlab/usage_data_counters/known_events/common.yml
index 0dcbaf59c9c2a51102a20278e1cfec51dfc04894..43ae8cc7f6de677c308c5faa1cf92faf9dc71999 100644
--- a/lib/gitlab/usage_data_counters/known_events/common.yml
+++ b/lib/gitlab/usage_data_counters/known_events/common.yml
@@ -390,3 +390,8 @@
   category: growth
   redis_slot: users
   aggregation: weekly
+# Manage
+- name: unique_active_user
+  category: manage
+  aggregation: weekly
+  expiry: 42
diff --git a/spec/lib/gitlab/usage/metrics/instrumentations/unique_active_users_metric_spec.rb b/spec/lib/gitlab/usage/metrics/instrumentations/unique_active_users_metric_spec.rb
deleted file mode 100644
index 8a0ce61de74dc424960b9138fc56143265c73b89..0000000000000000000000000000000000000000
--- a/spec/lib/gitlab/usage/metrics/instrumentations/unique_active_users_metric_spec.rb
+++ /dev/null
@@ -1,31 +0,0 @@
-# frozen_string_literal: true
-
-require 'spec_helper'
-
-RSpec.describe Gitlab::Usage::Metrics::Instrumentations::UniqueActiveUsersMetric do
-  let_it_be(:user1) { create(:user, last_activity_on: 1.day.ago) }
-  let_it_be(:user2) { create(:user, last_activity_on: 5.days.ago) }
-  let_it_be(:user3) { create(:user, last_activity_on: 50.days.ago) }
-  let_it_be(:user4) { create(:user) }
-  let_it_be(:user5) { create(:user, user_type: 1, last_activity_on: 5.days.ago ) } # support bot
-  let_it_be(:user6) { create(:user, state: 'blocked') }
-
-  context '28d' do
-    let(:start) { 30.days.ago.to_date.to_s }
-    let(:finish) { 2.days.ago.to_date.to_s }
-    let(:expected_value) { 1 }
-    let(:expected_query) do
-      "SELECT COUNT(\"users\".\"id\") FROM \"users\" WHERE (\"users\".\"state\" IN ('active')) AND " \
-      "(\"users\".\"user_type\" IS NULL OR \"users\".\"user_type\" IN (6, 4)) AND \"users\".\"last_activity_on\" " \
-      "BETWEEN '#{start}' AND '#{finish}'"
-    end
-
-    it_behaves_like 'a correct instrumented metric value and query', { time_frame: '28d' }
-  end
-
-  context 'all' do
-    let(:expected_value) { 4 }
-
-    it_behaves_like 'a correct instrumented metric value', { time_frame: 'all' }
-  end
-end
diff --git a/spec/lib/gitlab/usage_data_counters/hll_redis_counter_spec.rb b/spec/lib/gitlab/usage_data_counters/hll_redis_counter_spec.rb
index 8e242c579a61094dd32e114a101e80d011a4dd2c..badea47ab3b1cd82d73a016562d297b7fe019bcd 100644
--- a/spec/lib/gitlab/usage_data_counters/hll_redis_counter_spec.rb
+++ b/spec/lib/gitlab/usage_data_counters/hll_redis_counter_spec.rb
@@ -128,7 +128,8 @@ def not_instrumented_aggregate(category)
         'growth',
         'work_items',
         'ci_users',
-        'error_tracking'
+        'error_tracking',
+        'manage'
       )
     end
   end
diff --git a/spec/services/users/activity_service_spec.rb b/spec/services/users/activity_service_spec.rb
index 092c5cd3e5e240daf05408a611202c9e4e40dfdf..47a4b943d8313e081ce4b2acd8c634a8d49c172b 100644
--- a/spec/services/users/activity_service_spec.rb
+++ b/spec/services/users/activity_service_spec.rb
@@ -34,6 +34,13 @@
 
         subject.execute
       end
+
+      it 'tracks RedisHLL event' do
+        expect(Gitlab::UsageDataCounters::HLLRedisCounter).to receive(:track_event)
+                                                                .with('unique_active_user', values: user.id)
+
+        subject.execute
+      end
     end
 
     context 'when a bad object is passed' do