diff --git a/config/metrics/schema/product_groups.json b/config/metrics/schema/product_groups.json index bed096ed4251194fd20d93e9b0a68914c71ab6af..a17f6a692acb195a03188a99dd1cc195292ebacb 100644 --- a/config/metrics/schema/product_groups.json +++ b/config/metrics/schema/product_groups.json @@ -61,6 +61,7 @@ "secret_detection", "security_infrastructure", "security_insights", + "security_platform_management", "security_policies", "self_managed", "source_code", diff --git a/ee/app/controllers/groups/security/inventory_controller.rb b/ee/app/controllers/groups/security/inventory_controller.rb index 98e3223fe8a2c6bcb4c5e1e2c1dc8aef0a3194d8..5297c2c49e14a04c55287b15a946ccb718ad8d2d 100644 --- a/ee/app/controllers/groups/security/inventory_controller.rb +++ b/ee/app/controllers/groups/security/inventory_controller.rb @@ -13,6 +13,10 @@ class InventoryController < Groups::ApplicationController feature_category :security_asset_inventories + include ProductAnalyticsTracking + + track_internal_event :show, name: 'view_group_security_inventory' + def show; end private @@ -21,6 +25,12 @@ def ensure_feature_available! render_404 unless License.feature_available?(:security_inventory) && ::Feature.enabled?(:security_inventory_dashboard, group, type: :wip) end + + def tracking_namespace_source + group + end + + def tracking_project_source; end end end end diff --git a/ee/config/events/view_group_security_inventory.yml b/ee/config/events/view_group_security_inventory.yml new file mode 100644 index 0000000000000000000000000000000000000000..c2e105ac4a2cfdcac18fd533dadc1aa877d21051 --- /dev/null +++ b/ee/config/events/view_group_security_inventory.yml @@ -0,0 +1,14 @@ +--- +description: Group Security Inventory page was viewed +internal_events: true +action: view_group_security_inventory +identifiers: +- namespace +- user +product_group: security_platform_management +product_categories: +- security_asset_inventories +milestone: '17.10' +introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/183563 +tiers: +- ultimate diff --git a/ee/config/metrics/counts_all/count_distinct_user_id_from_view_group_security_inventory.yml b/ee/config/metrics/counts_all/count_distinct_user_id_from_view_group_security_inventory.yml new file mode 100644 index 0000000000000000000000000000000000000000..9cbfc8801f35f1726bcad8838b0358b3a8b834f6 --- /dev/null +++ b/ee/config/metrics/counts_all/count_distinct_user_id_from_view_group_security_inventory.yml @@ -0,0 +1,21 @@ +--- +key_path: redis_hll_counters.count_distinct_user_id_from_view_group_security_inventory +description: Count of unique users who viewed the group security inventory page +product_group: security_platform_management +product_categories: +- security_asset_inventories +performance_indicator_type: [] +value_type: number +status: active +milestone: '17.10' +introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/183563 +time_frame: +- 28d +- 7d +data_source: internal_events +data_category: optional +tiers: +- ultimate +events: +- name: view_group_security_inventory + unique: user.id diff --git a/ee/spec/requests/groups/security/inventory_controller_spec.rb b/ee/spec/requests/groups/security/inventory_controller_spec.rb new file mode 100644 index 0000000000000000000000000000000000000000..95ec35977bc5e5805051f66db2cbdffbf7f605a7 --- /dev/null +++ b/ee/spec/requests/groups/security/inventory_controller_spec.rb @@ -0,0 +1,24 @@ +# frozen_string_literal: true + +require 'spec_helper' + +RSpec.describe Groups::Security::InventoryController, feature_category: :security_asset_inventories do + let_it_be(:user) { create(:user) } + let_it_be(:group) { create(:group, owners: user) } + + before do + stub_licensed_features(security_inventory: true) + stub_feature_flags(security_inventory_dashboard: true) + + sign_in(user) + end + + describe '#show', :aggregate_failures do + it_behaves_like 'internal event tracking' do + let(:event) { 'view_group_security_inventory' } + let(:namespace) { group } + + subject(:request) { get group_security_inventory_path(group) } + end + end +end