diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2021-03-16 21:18:33 +0300 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2021-03-16 21:18:33 +0300 |
commit | f64a639bcfa1fc2bc89ca7db268f594306edfd7c (patch) | |
tree | a2c3c2ebcc3b45e596949db485d6ed18ffaacfa1 /lib/gitlab/usage_data_counters | |
parent | bfbc3e0d6583ea1a91f627528bedc3d65ba4b10f (diff) |
Add latest changes from gitlab-org/gitlab@13-10-stable-eev13.10.0-rc40
Diffstat (limited to 'lib/gitlab/usage_data_counters')
11 files changed, 312 insertions, 32 deletions
diff --git a/lib/gitlab/usage_data_counters/aggregated_metrics/code_review.yml b/lib/gitlab/usage_data_counters/aggregated_metrics/code_review.yml new file mode 100644 index 00000000000..4c2355d526a --- /dev/null +++ b/lib/gitlab/usage_data_counters/aggregated_metrics/code_review.yml @@ -0,0 +1,108 @@ +# code_review_extension_category_monthly_active_users +# This is only metrics related to the VS Code Extension for now. +# +# code_review_category_monthly_active_users +# This is the user based metrics. These should only be user based metrics and only be related to the Code Review things inside of GitLab. +# +# code_review_group_monthly_active_users +# This is an aggregation of both of the above aggregations. It's intended to represent all users who interact with our group across all of our categories. +--- +- name: code_review_group_monthly_active_users + operator: OR + feature_flag: usage_data_code_review_aggregation + source: redis + time_frame: [7d, 28d] + events: [ + 'i_code_review_user_single_file_diffs', + 'i_code_review_user_create_mr', + 'i_code_review_user_close_mr', + 'i_code_review_user_reopen_mr', + 'i_code_review_user_resolve_thread', + 'i_code_review_user_unresolve_thread', + 'i_code_review_edit_mr_title', + 'i_code_review_edit_mr_desc', + 'i_code_review_user_merge_mr', + 'i_code_review_user_create_mr_comment', + 'i_code_review_user_edit_mr_comment', + 'i_code_review_user_remove_mr_comment', + 'i_code_review_user_create_review_note', + 'i_code_review_user_publish_review', + 'i_code_review_user_create_multiline_mr_comment', + 'i_code_review_user_edit_multiline_mr_comment', + 'i_code_review_user_remove_multiline_mr_comment', + 'i_code_review_user_add_suggestion', + 'i_code_review_user_apply_suggestion', + 'i_code_review_user_assigned', + 'i_code_review_user_review_requested', + 'i_code_review_user_approve_mr', + 'i_code_review_user_unapprove_mr', + 'i_code_review_user_marked_as_draft', + 'i_code_review_user_unmarked_as_draft', + 'i_code_review_user_approval_rule_added', + 'i_code_review_user_approval_rule_deleted', + 'i_code_review_user_approval_rule_edited', + 'i_code_review_user_vs_code_api_request', + 'i_code_review_user_toggled_task_item_status', + 'i_code_review_user_create_mr_from_issue', + 'i_code_review_user_mr_discussion_locked', + 'i_code_review_user_mr_discussion_unlocked', + 'i_code_review_user_time_estimate_changed', + 'i_code_review_user_time_spent_changed', + 'i_code_review_user_assignees_changed', + 'i_code_review_user_reviewers_changed', + 'i_code_review_user_milestone_changed', + 'i_code_review_user_labels_changed' + ] +- name: code_review_category_monthly_active_users + operator: OR + feature_flag: usage_data_code_review_aggregation + source: redis + time_frame: [7d, 28d] + events: [ + 'i_code_review_user_single_file_diffs', + 'i_code_review_user_create_mr', + 'i_code_review_user_close_mr', + 'i_code_review_user_reopen_mr', + 'i_code_review_user_resolve_thread', + 'i_code_review_user_unresolve_thread', + 'i_code_review_edit_mr_title', + 'i_code_review_edit_mr_desc', + 'i_code_review_user_merge_mr', + 'i_code_review_user_create_mr_comment', + 'i_code_review_user_edit_mr_comment', + 'i_code_review_user_remove_mr_comment', + 'i_code_review_user_create_review_note', + 'i_code_review_user_publish_review', + 'i_code_review_user_create_multiline_mr_comment', + 'i_code_review_user_edit_multiline_mr_comment', + 'i_code_review_user_remove_multiline_mr_comment', + 'i_code_review_user_add_suggestion', + 'i_code_review_user_apply_suggestion', + 'i_code_review_user_assigned', + 'i_code_review_user_review_requested', + 'i_code_review_user_approve_mr', + 'i_code_review_user_unapprove_mr', + 'i_code_review_user_marked_as_draft', + 'i_code_review_user_unmarked_as_draft', + 'i_code_review_user_approval_rule_added', + 'i_code_review_user_approval_rule_deleted', + 'i_code_review_user_approval_rule_edited', + 'i_code_review_user_toggled_task_item_status', + 'i_code_review_user_create_mr_from_issue', + 'i_code_review_user_mr_discussion_locked', + 'i_code_review_user_mr_discussion_unlocked', + 'i_code_review_user_time_estimate_changed', + 'i_code_review_user_time_spent_changed', + 'i_code_review_user_assignees_changed', + 'i_code_review_user_reviewers_changed', + 'i_code_review_user_milestone_changed', + 'i_code_review_user_labels_changed' + ] +- name: code_review_extension_category_monthly_active_users + operator: OR + feature_flag: usage_data_code_review_aggregation + source: redis + time_frame: [7d, 28d] + events: [ + 'i_code_review_user_vs_code_api_request' + ] diff --git a/lib/gitlab/usage_data_counters/aggregated_metrics/common.yml b/lib/gitlab/usage_data_counters/aggregated_metrics/common.yml index 4d92202e7fd..73a55b5d5fa 100644 --- a/lib/gitlab/usage_data_counters/aggregated_metrics/common.yml +++ b/lib/gitlab/usage_data_counters/aggregated_metrics/common.yml @@ -1,3 +1,5 @@ +# Aggregated metrics that include EE only event names within `events:` attribute have to be defined at ee/lib/gitlab/usage_data_counters/aggregated_metrics/common.yml +# instead of this file. #- name: unique name of aggregated metric # operator: aggregation operator. Valid values are: # - "OR": counts unique elements that were observed triggering any of following events @@ -7,6 +9,10 @@ # source: defines which datasource will be used to locate events that should be included in aggregated metric. Valid values are: # - database # - redis +# time_frame: defines time frames for aggregated metrics: +# - 7d - last 7 days +# - 28d - last 28 days +# - all - all historical available data, this time frame is not available for redis source # feature_flag: name of development feature flag that will be checked before metrics aggregation is performed. # Corresponding feature flag should have `default_enabled` attribute set to `false`. # This attribute is OPTIONAL and can be omitted, when `feature_flag` is missing no feature flag will be checked. @@ -14,18 +20,22 @@ - name: compliance_features_track_unique_visits_union operator: OR source: redis + time_frame: [7d, 28d] events: ['g_compliance_audit_events', 'g_compliance_dashboard', 'i_compliance_audit_events', 'a_compliance_audit_events_api', 'i_compliance_credential_inventory'] - name: product_analytics_test_metrics_union operator: OR source: redis + time_frame: [7d, 28d] events: ['i_search_total', 'i_search_advanced', 'i_search_paid'] - name: product_analytics_test_metrics_intersection operator: AND source: redis + time_frame: [7d, 28d] events: ['i_search_total', 'i_search_advanced', 'i_search_paid'] - name: incident_management_alerts_total_unique_counts operator: OR source: redis + time_frame: [7d, 28d] events: [ 'incident_management_alert_status_changed', 'incident_management_alert_assigned', @@ -35,6 +45,7 @@ - name: incident_management_incidents_total_unique_counts operator: OR source: redis + time_frame: [7d, 28d] events: [ 'incident_management_incident_created', 'incident_management_incident_reopened', @@ -51,10 +62,11 @@ - name: i_testing_paid_monthly_active_user_total operator: OR source: redis + time_frame: [7d, 28d] events: [ - 'i_testing_web_performance_widget_total', - 'i_testing_full_code_quality_report_total', - 'i_testing_group_code_coverage_visit_total', - 'i_testing_load_performance_widget_total', - 'i_testing_metrics_report_widget_total' -] + 'i_testing_web_performance_widget_total', + 'i_testing_full_code_quality_report_total', + 'i_testing_group_code_coverage_visit_total', + 'i_testing_load_performance_widget_total', + 'i_testing_metrics_report_widget_total' + ] diff --git a/lib/gitlab/usage_data_counters/counter_events/package_events.yml b/lib/gitlab/usage_data_counters/counter_events/package_events.yml index f6bddabdd44..e1648245f3f 100644 --- a/lib/gitlab/usage_data_counters/counter_events/package_events.yml +++ b/lib/gitlab/usage_data_counters/counter_events/package_events.yml @@ -41,6 +41,9 @@ - i_package_pypi_delete_package - i_package_pypi_pull_package - i_package_pypi_push_package +- i_package_rubygems_delete_package +- i_package_rubygems_pull_package +- i_package_rubygems_push_package - i_package_tag_delete_package - i_package_tag_pull_package - i_package_tag_push_package diff --git a/lib/gitlab/usage_data_counters/hll_redis_counter.rb b/lib/gitlab/usage_data_counters/hll_redis_counter.rb index 68ae239debb..336bef081a6 100644 --- a/lib/gitlab/usage_data_counters/hll_redis_counter.rb +++ b/lib/gitlab/usage_data_counters/hll_redis_counter.rb @@ -127,11 +127,15 @@ module Gitlab return unless Gitlab::CurrentSettings.usage_ping_enabled? event = event_for(event_name) - raise UnknownEvent, "Unknown event #{event_name}" unless event.present? + Gitlab::ErrorTracking.track_and_raise_for_dev_exception(UnknownEvent.new("Unknown event #{event_name}")) unless event.present? return unless feature_enabled?(event) Gitlab::Redis::HLL.add(key: redis_key(event, time, context), value: values, expiry: expiry(event)) + rescue => e + # Ignore any exceptions unless is dev or test env + # The application flow should not be blocked by erros in tracking + Gitlab::ErrorTracking.track_and_raise_for_dev_exception(e) end # The array of valid context on which we allow tracking diff --git a/lib/gitlab/usage_data_counters/known_events/code_review_events.yml b/lib/gitlab/usage_data_counters/known_events/code_review_events.yml index d657c5487d7..18c5dc73de2 100644 --- a/lib/gitlab/usage_data_counters/known_events/code_review_events.yml +++ b/lib/gitlab/usage_data_counters/known_events/code_review_events.yml @@ -164,3 +164,43 @@ category: code_review aggregation: weekly feature_flag: usage_data_i_code_review_user_create_mr_from_issue +- name: i_code_review_user_mr_discussion_locked + redis_slot: code_review + category: code_review + aggregation: weekly + feature_flag: usage_data_i_code_review_user_mr_discussion_locked +- name: i_code_review_user_mr_discussion_unlocked + redis_slot: code_review + category: code_review + aggregation: weekly + feature_flag: usage_data_i_code_review_user_mr_discussion_unlocked +- name: i_code_review_user_time_estimate_changed + redis_slot: code_review + category: code_review + aggregation: weekly + feature_flag: usage_data_i_code_review_user_time_estimate_changed +- name: i_code_review_user_time_spent_changed + redis_slot: code_review + category: code_review + aggregation: weekly + feature_flag: usage_data_i_code_review_user_time_spent_changed +- name: i_code_review_user_assignees_changed + redis_slot: code_review + category: code_review + aggregation: weekly + feature_flag: usage_data_i_code_review_user_assignees_changed +- name: i_code_review_user_reviewers_changed + redis_slot: code_review + category: code_review + aggregation: weekly + feature_flag: usage_data_i_code_review_user_reviewers_changed +- name: i_code_review_user_milestone_changed + redis_slot: code_review + category: code_review + aggregation: weekly + feature_flag: usage_data_i_code_review_user_milestone_changed +- name: i_code_review_user_labels_changed + redis_slot: code_review + category: code_review + aggregation: weekly + feature_flag: usage_data_i_code_review_user_labels_changed diff --git a/lib/gitlab/usage_data_counters/known_events/common.yml b/lib/gitlab/usage_data_counters/known_events/common.yml index 79f319b2d58..80a79682338 100644 --- a/lib/gitlab/usage_data_counters/known_events/common.yml +++ b/lib/gitlab/usage_data_counters/known_events/common.yml @@ -439,3 +439,18 @@ redis_slot: pipeline_authoring aggregation: weekly feature_flag: usage_data_unique_users_committing_ciconfigfile +- name: o_pipeline_authoring_unique_users_pushing_mr_ciconfigfile + category: pipeline_authoring + redis_slot: pipeline_authoring + aggregation: weekly + feature_flag: usage_data_o_pipeline_authoring_unique_users_pushing_mr_ciconfigfile +# Epic events +# +# We are using the same slot of issue events 'project_management' for +# epic events to allow data aggregation. +# More information in: https://gitlab.com/gitlab-org/gitlab/-/issues/322405 +- name: g_project_management_epic_created + category: epics_usage + redis_slot: project_management + aggregation: daily + feature_flag: track_epics_activity diff --git a/lib/gitlab/usage_data_counters/known_events/ecosystem.yml b/lib/gitlab/usage_data_counters/known_events/ecosystem.yml index 3fd02164f74..1c765bb1830 100644 --- a/lib/gitlab/usage_data_counters/known_events/ecosystem.yml +++ b/lib/gitlab/usage_data_counters/known_events/ecosystem.yml @@ -20,3 +20,49 @@ redis_slot: ecosystem aggregation: weekly feature_flag: usage_data_track_ecosystem_jira_service +- name: i_ecosystem_slack_service_issue_notification + category: ecosystem + redis_slot: ecosystem + aggregation: weekly + feature_flag: usage_data_track_ecosystem_slack_service +- name: i_ecosystem_slack_service_push_notification + category: ecosystem + redis_slot: ecosystem + aggregation: weekly + feature_flag: usage_data_track_ecosystem_slack_service +- name: i_ecosystem_slack_service_deployment_notification + category: ecosystem + redis_slot: ecosystem + aggregation: weekly + feature_flag: usage_data_track_ecosystem_slack_service +- name: i_ecosystem_slack_service_wiki_page_notification + category: ecosystem + redis_slot: ecosystem + aggregation: weekly + feature_flag: usage_data_track_ecosystem_slack_service +- name: i_ecosystem_slack_service_merge_request_notification + category: ecosystem + redis_slot: ecosystem + aggregation: weekly + feature_flag: usage_data_track_ecosystem_slack_service +- name: i_ecosystem_slack_service_note_notification + category: ecosystem + redis_slot: ecosystem + aggregation: weekly + feature_flag: usage_data_track_ecosystem_slack_service +- name: i_ecosystem_slack_service_tag_push_notification + category: ecosystem + redis_slot: ecosystem + aggregation: weekly + feature_flag: usage_data_track_ecosystem_slack_service +- name: i_ecosystem_slack_service_confidential_note_notification + category: ecosystem + redis_slot: ecosystem + aggregation: weekly + feature_flag: usage_data_track_ecosystem_slack_service +- name: i_ecosystem_slack_service_confidential_issue_notification + category: ecosystem + redis_slot: ecosystem + aggregation: weekly + feature_flag: usage_data_track_ecosystem_slack_service + diff --git a/lib/gitlab/usage_data_counters/known_events/package_events.yml b/lib/gitlab/usage_data_counters/known_events/package_events.yml index 78a2a587b34..b7e583003c8 100644 --- a/lib/gitlab/usage_data_counters/known_events/package_events.yml +++ b/lib/gitlab/usage_data_counters/known_events/package_events.yml @@ -3,109 +3,95 @@ category: deploy_token_packages aggregation: weekly redis_slot: package - feature_flag: collect_package_events_redis - name: i_package_composer_user category: user_packages aggregation: weekly redis_slot: package - feature_flag: collect_package_events_redis - name: i_package_conan_deploy_token category: deploy_token_packages aggregation: weekly redis_slot: package - feature_flag: collect_package_events_redis - name: i_package_conan_user category: user_packages aggregation: weekly redis_slot: package - feature_flag: collect_package_events_redis - name: i_package_container_deploy_token category: deploy_token_packages aggregation: weekly redis_slot: package - feature_flag: collect_package_events_redis - name: i_package_container_user category: user_packages aggregation: weekly redis_slot: package - feature_flag: collect_package_events_redis - name: i_package_debian_deploy_token category: deploy_token_packages aggregation: weekly redis_slot: package - feature_flag: collect_package_events_redis - name: i_package_debian_user category: user_packages aggregation: weekly redis_slot: package - feature_flag: collect_package_events_redis - name: i_package_generic_deploy_token category: deploy_token_packages aggregation: weekly redis_slot: package - feature_flag: collect_package_events_redis - name: i_package_generic_user category: user_packages aggregation: weekly redis_slot: package - feature_flag: collect_package_events_redis - name: i_package_golang_deploy_token category: deploy_token_packages aggregation: weekly redis_slot: package - feature_flag: collect_package_events_redis - name: i_package_golang_user category: user_packages aggregation: weekly redis_slot: package - feature_flag: collect_package_events_redis - name: i_package_maven_deploy_token category: deploy_token_packages aggregation: weekly redis_slot: package - feature_flag: collect_package_events_redis - name: i_package_maven_user category: user_packages aggregation: weekly redis_slot: package - feature_flag: collect_package_events_redis - name: i_package_npm_deploy_token category: deploy_token_packages aggregation: weekly redis_slot: package - feature_flag: collect_package_events_redis - name: i_package_npm_user category: user_packages aggregation: weekly redis_slot: package - feature_flag: collect_package_events_redis - name: i_package_nuget_deploy_token category: deploy_token_packages aggregation: weekly redis_slot: package - feature_flag: collect_package_events_redis - name: i_package_nuget_user category: user_packages aggregation: weekly redis_slot: package - feature_flag: collect_package_events_redis - name: i_package_pypi_deploy_token category: deploy_token_packages aggregation: weekly redis_slot: package - feature_flag: collect_package_events_redis - name: i_package_pypi_user category: user_packages aggregation: weekly redis_slot: package - feature_flag: collect_package_events_redis +- name: i_package_rubygems_deploy_token + category: deploy_token_packages + aggregation: weekly + redis_slot: package +- name: i_package_rubygems_user + category: user_packages + aggregation: weekly + redis_slot: package - name: i_package_tag_deploy_token category: deploy_token_packages aggregation: weekly redis_slot: package - feature_flag: collect_package_events_redis - name: i_package_tag_user category: user_packages aggregation: weekly redis_slot: package - feature_flag: collect_package_events_redis diff --git a/lib/gitlab/usage_data_counters/known_events/quickactions.yml b/lib/gitlab/usage_data_counters/known_events/quickactions.yml index bf292047da0..0fe65afb237 100644 --- a/lib/gitlab/usage_data_counters/known_events/quickactions.yml +++ b/lib/gitlab/usage_data_counters/known_events/quickactions.yml @@ -324,3 +324,13 @@ redis_slot: quickactions aggregation: weekly feature_flag: usage_data_track_quickactions +- name: i_quickactions_invite_email_single + category: quickactions + redis_slot: quickactions + aggregation: weekly + feature_flag: usage_data_track_quickactions +- name: i_quickactions_invite_email_multiple + category: quickactions + redis_slot: quickactions + aggregation: weekly + feature_flag: usage_data_track_quickactions diff --git a/lib/gitlab/usage_data_counters/merge_request_activity_unique_counter.rb b/lib/gitlab/usage_data_counters/merge_request_activity_unique_counter.rb index b9856e1f74a..eb28a387a97 100644 --- a/lib/gitlab/usage_data_counters/merge_request_activity_unique_counter.rb +++ b/lib/gitlab/usage_data_counters/merge_request_activity_unique_counter.rb @@ -35,6 +35,15 @@ module Gitlab MR_EDIT_MR_TITLE_ACTION = 'i_code_review_edit_mr_title' MR_EDIT_MR_DESC_ACTION = 'i_code_review_edit_mr_desc' MR_CREATE_FROM_ISSUE_ACTION = 'i_code_review_user_create_mr_from_issue' + MR_DISCUSSION_LOCKED_ACTION = 'i_code_review_user_mr_discussion_locked' + MR_DISCUSSION_UNLOCKED_ACTION = 'i_code_review_user_mr_discussion_unlocked' + MR_TIME_ESTIMATE_CHANGED_ACTION = 'i_code_review_user_time_estimate_changed' + MR_TIME_SPENT_CHANGED_ACTION = 'i_code_review_user_time_spent_changed' + MR_ASSIGNEES_CHANGED_ACTION = 'i_code_review_user_assignees_changed' + MR_REVIEWERS_CHANGED_ACTION = 'i_code_review_user_reviewers_changed' + MR_INCLUDING_CI_CONFIG_ACTION = 'o_pipeline_authoring_unique_users_pushing_mr_ciconfigfile' + MR_MILESTONE_CHANGED_ACTION = 'i_code_review_user_milestone_changed' + MR_LABELS_CHANGED_ACTION = 'i_code_review_user_labels_changed' class << self def track_mr_diffs_action(merge_request:) @@ -153,6 +162,45 @@ module Gitlab track_unique_action_by_user(MR_CREATE_FROM_ISSUE_ACTION, user) end + def track_discussion_locked_action(user:) + track_unique_action_by_user(MR_DISCUSSION_LOCKED_ACTION, user) + end + + def track_discussion_unlocked_action(user:) + track_unique_action_by_user(MR_DISCUSSION_UNLOCKED_ACTION, user) + end + + def track_time_estimate_changed_action(user:) + track_unique_action_by_user(MR_TIME_ESTIMATE_CHANGED_ACTION, user) + end + + def track_time_spent_changed_action(user:) + track_unique_action_by_user(MR_TIME_SPENT_CHANGED_ACTION, user) + end + + def track_assignees_changed_action(user:) + track_unique_action_by_user(MR_ASSIGNEES_CHANGED_ACTION, user) + end + + def track_reviewers_changed_action(user:) + track_unique_action_by_user(MR_REVIEWERS_CHANGED_ACTION, user) + end + + def track_mr_including_ci_config(user:, merge_request:) + return unless Feature.enabled?(:usage_data_o_pipeline_authoring_unique_users_pushing_mr_ciconfigfile, user, default_enabled: :yaml) + return unless merge_request.includes_ci_config? + + track_unique_action_by_user(MR_INCLUDING_CI_CONFIG_ACTION, user) + end + + def track_milestone_changed_action(user:) + track_unique_action_by_user(MR_MILESTONE_CHANGED_ACTION, user) + end + + def track_labels_changed_action(user:) + track_unique_action_by_user(MR_LABELS_CHANGED_ACTION, user) + end + private def track_unique_action_by_merge_request(action, merge_request) diff --git a/lib/gitlab/usage_data_counters/quick_action_activity_unique_counter.rb b/lib/gitlab/usage_data_counters/quick_action_activity_unique_counter.rb index f757b51f73c..15c68fb3945 100644 --- a/lib/gitlab/usage_data_counters/quick_action_activity_unique_counter.rb +++ b/lib/gitlab/usage_data_counters/quick_action_activity_unique_counter.rb @@ -34,6 +34,8 @@ module Gitlab event_name_for_unassign(args) when 'unlabel', 'remove_label' event_name_for_unlabel(args) + when 'invite_email' + 'invite_email' + event_name_quantifier(args.split) else name end @@ -44,10 +46,8 @@ module Gitlab if args.count == 1 && args.first == 'me' 'assign_self' - elsif args.count == 1 - 'assign_single' else - 'assign_multiple' + 'assign' + event_name_quantifier(args) end end @@ -82,6 +82,14 @@ module Gitlab 'unlabel_all' end end + + def event_name_quantifier(args) + if args.count == 1 + '_single' + else + '_multiple' + end + end end end end |