diff --git a/config/events/agent_users_using_ci_tunnel.yml b/config/events/agent_users_using_ci_tunnel.yml new file mode 100644 index 0000000000000000000000000000000000000000..575c2ddf9e8f76a20c52fd697dfb5203f6e68d26 --- /dev/null +++ b/config/events/agent_users_using_ci_tunnel.yml @@ -0,0 +1,20 @@ +--- +description: Kubernetes API proxy request using the CI/CD Tunnel +category: InternalEventTracking +action: agent_users_using_ci_tunnel +identifiers: +- project +- namespace +- user +product_section: cd +product_stage: deploy +product_group: environments +milestone: '16.8' +introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/140038 +distributions: +- ce +- ee +tiers: +- free +- premium +- ultimate diff --git a/config/metrics/counts_28d/20220729001651_agent_users_using_ci_tunnel_monthly.yml b/config/metrics/counts_28d/20220729001651_agent_users_using_ci_tunnel_monthly.yml index a16dbc17f055bd3b44df76bf3c5218abfef01675..1938323ffdadc803bd3a0adf9e1427e84e34aaae 100644 --- a/config/metrics/counts_28d/20220729001651_agent_users_using_ci_tunnel_monthly.yml +++ b/config/metrics/counts_28d/20220729001651_agent_users_using_ci_tunnel_monthly.yml @@ -10,12 +10,14 @@ status: active milestone: "15.3" introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/61685 time_frame: 28d -data_source: redis_hll +data_source: internal_events data_category: optional -instrumentation_class: RedisHLLMetric options: events: - agent_users_using_ci_tunnel +events: + - name: agent_users_using_ci_tunnel + unique: user.id performance_indicator_type: [] distribution: - ce diff --git a/config/metrics/counts_7d/20220729001644_agent_users_using_ci_tunnel_weekly.yml b/config/metrics/counts_7d/20220729001644_agent_users_using_ci_tunnel_weekly.yml index efb97bc1b9536280c56a8ddb7b6eba8463a4a72e..3c309eb1bb5593b5a8ecb9ae506d4842e9b516ab 100644 --- a/config/metrics/counts_7d/20220729001644_agent_users_using_ci_tunnel_weekly.yml +++ b/config/metrics/counts_7d/20220729001644_agent_users_using_ci_tunnel_weekly.yml @@ -9,13 +9,15 @@ status: active milestone: "15.3" introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/61685 time_frame: 7d -data_source: redis_hll +data_source: internal_events data_category: optional -instrumentation_class: RedisHLLMetric performance_indicator_type: [] options: events: - agent_users_using_ci_tunnel +events: + - name: agent_users_using_ci_tunnel + unique: user.id distribution: - ce - ee diff --git a/doc/development/internal_api/index.md b/doc/development/internal_api/index.md index 84f5d09418fc663634e8b9fe6d8fdc7515dce6bc..fc73fcb6c2c2d3050c213e1e17981de7bf55f041 100644 --- a/doc/development/internal_api/index.md +++ b/doc/development/internal_api/index.md @@ -534,7 +534,6 @@ metric counters. | `counters["k8s_api_proxy_requests_via_user_access"]` | integer | no | The number to increase the `k8s_api_proxy_requests_via_user_access` counter by | | `counters["k8s_api_proxy_requests_via_pat_access"]` | integer | no | The number to increase the `k8s_api_proxy_requests_via_pat_access` counter by | | `unique_counters` | hash | no | Array of unique numbers | -| `unique_counters["agent_users_using_ci_tunnel"]` | integer array | no | The set of unique user ids that have interacted a CI Tunnel to track the `agent_users_using_ci_tunnel` metric event | | `unique_counters["k8s_api_proxy_requests_unique_users_via_ci_access"]` | integer array | no | The set of unique user ids that have interacted a CI Tunnel via `ci_access` to track the `k8s_api_proxy_requests_unique_users_via_ci_access` metric event | | `unique_counters["k8s_api_proxy_requests_unique_agents_via_ci_access"]` | integer array | no | The set of unique agent ids that have interacted a CI Tunnel via `ci_access` to track the `k8s_api_proxy_requests_unique_agents_via_ci_access` metric event | | `unique_counters["k8s_api_proxy_requests_unique_users_via_user_access"]` | integer array | no | The set of unique user ids that have interacted a CI Tunnel via `user_access` to track the `k8s_api_proxy_requests_unique_users_via_user_access` metric event | diff --git a/lib/api/helpers/kubernetes/agent_helpers.rb b/lib/api/helpers/kubernetes/agent_helpers.rb index eca26c023cf5403c845d6a23cfdf09c1eefe7a95..18f47fa99554b2232c39b2c3c3bb9e8d96931291 100644 --- a/lib/api/helpers/kubernetes/agent_helpers.rb +++ b/lib/api/helpers/kubernetes/agent_helpers.rb @@ -40,7 +40,6 @@ def agent_has_access_to_project?(project) def increment_unique_events events = params[:unique_counters]&.slice( - :agent_users_using_ci_tunnel, :k8s_api_proxy_requests_unique_agents_via_ci_access, :k8s_api_proxy_requests_unique_agents_via_user_access, :k8s_api_proxy_requests_unique_agents_via_pat_access, @@ -60,6 +59,8 @@ def track_events ) return if event_lists.blank? + event_lists[:agent_users_using_ci_tunnel] = event_lists.values.flatten + users, projects = load_users_and_projects(event_lists) event_lists.each do |event_name, events| track_events_for(event_name, events, users, projects) diff --git a/lib/api/internal/kubernetes.rb b/lib/api/internal/kubernetes.rb index d3a4d94f8cac6d15daf06c8ea2a655192e45197d..286192f80935002d4a040243199762e2bf41e1d2 100644 --- a/lib/api/internal/kubernetes.rb +++ b/lib/api/internal/kubernetes.rb @@ -127,7 +127,6 @@ class Kubernetes < ::API::Base end optional :unique_counters, type: Hash do - optional :agent_users_using_ci_tunnel, type: Array[Integer], desc: 'An array of user ids that have interacted with CI Tunnel' optional :k8s_api_proxy_requests_unique_users_via_ci_access, type: Array[Integer], desc: 'An array of users that have interacted with the CI tunnel via `ci_access`' optional :k8s_api_proxy_requests_unique_agents_via_ci_access, type: Array[Integer], desc: 'An array of agents that have interacted with the CI tunnel via `ci_access`' optional :k8s_api_proxy_requests_unique_users_via_user_access, type: Array[Integer], desc: 'An array of users that have interacted with the CI tunnel via `user_access`' diff --git a/spec/requests/api/internal/kubernetes_spec.rb b/spec/requests/api/internal/kubernetes_spec.rb index 5ef041881b903450a89a7f8036d076ac45fcb873..7934fa4a35896fb40e6fa7004c5d8be8b1c58ea9 100644 --- a/spec/requests/api/internal/kubernetes_spec.rb +++ b/spec/requests/api/internal/kubernetes_spec.rb @@ -80,7 +80,7 @@ def send_request(headers: {}, params: {}) it 'returns no_content for valid events' do counters = { gitops_sync: 10, k8s_api_proxy_request: 5 } - unique_counters = { agent_users_using_ci_tunnel: [10] } + unique_counters = { k8s_api_proxy_requests_unique_users_via_ci_access: [10] } send_request(params: { counters: counters, unique_counters: unique_counters }) @@ -89,7 +89,7 @@ def send_request(headers: {}, params: {}) it 'returns no_content for counts of zero' do counters = { gitops_sync: 0, k8s_api_proxy_request: 0 } - unique_counters = { agent_users_using_ci_tunnel: [] } + unique_counters = { k8s_api_proxy_requests_unique_users_via_ci_access: [] } send_request(params: { counters: counters, unique_counters: unique_counters }) @@ -105,7 +105,7 @@ def send_request(headers: {}, params: {}) end it 'returns 400 for non unique_counter set' do - unique_counters = { agent_users_using_ci_tunnel: 1 } + unique_counters = { k8s_api_proxy_requests_unique_users_via_ci_access: 1 } send_request(params: { unique_counters: unique_counters }) @@ -125,7 +125,6 @@ def send_request(headers: {}, params: {}) users = create_list(:user, 3) user_ids = users.map(&:id) << users[0].id unique_counters = { - agent_users_using_ci_tunnel: user_ids, k8s_api_proxy_requests_unique_users_via_ci_access: user_ids, k8s_api_proxy_requests_unique_agents_via_ci_access: user_ids, k8s_api_proxy_requests_unique_users_via_user_access: user_ids, @@ -191,6 +190,7 @@ def send_request(headers: {}, params: {}) end it 'tracks events and returns no_content', :aggregate_failures do + events[:agent_users_using_ci_tunnel] = events.values.flatten events.each do |event_name, event_list| event_list.each do |event| expect(Gitlab::InternalEvents).to receive(:track_event)