Add metrics for Security Policies Group
Why are we doing this work
In Govern SMAU Metric, we want to add tracking of govern-related activities. The metric should report only unique users and should use user ID
as a tracking value, so that events tracked from frontend via /increment_unique_users
don't create duplicates. There is a PoC which explored the possible implementation.
We want to generate metrics for each page, aggregate metrics for each of the 5 categories, aggregate metrics for each of the 3 groups and one aggregate metric for the entire stage.
In this issue, we want to add tracking for activities related to the Security Policies Group.
Relevant links
Implementation plan
-
backend Add metrics to the list of known_events:
- name: users_visiting_security_policies
aggregation: weekly
- name: users_creating_merge_requests_with_security_policies
aggregation: weekly
- name: users_visiting_security_policies_pages
aggregation: weekly
-
backend Generate usage metric definition for the aggregated group metric:
bin/rails generate gitlab:usage_metric_definition:redis_hll govern users_visiting_security_policies_pages --ee
Use AggregatedMetric
as instrumentation class and include the events to aggregate:
instrumentation_class: AggregatedMetric
options:
aggregate:
operator: OR
attribute: user_id
events:
- users_visiting_security_policies
- users_creating_merge_requests_with_security_policies
-
backend Add the events above also to the aggregated SMAU metric: users_visiting_govern_pages_monthly
users_visiting_govern_pages_weekly
-
backend Add tracking of project-level actions in the controllers using GovernUsageProjectTracking
:-
%i[index edit new]
inee/app/controllers/projects/security/policies_controller.rb
-
-
backend Add tracking of group-level actions in the controllers using GovernUsageGroupTracking
:-
%i[index edit new]
inee/app/controllers/groups/security/policies_controller.rb
-
-
backend Add tracking of created merge requests for projects with policies in ee/app/services/ee/merge_requests/create_service.rb
:::Gitlab::UsageDataCounters::HLLRedisCounter.track_event(:users_creating_merge_requests_with_security_policies, values: current_user.id)
Verification steps
- Visit one of the pages or perform any of the actions covered by the new events
- In the
rails console
, check for a non-zero counter value for the metric:Gitlab::UsageDataCounters::HLLRedisCounter.unique_events(event_names: '<event-name>', start_date: Date.current.beginning_of_week, end_date: Date.current.next_week)
- You run the service ping worker with
GitlabServicePingWorker.new.perform('triggered_from_cron' => false)
- Check for the
weekly
andmonthly
aggregated metric:RawUsageData.last.payload['redis_hll_counters']['govern']