From f198f81b4e5613a2ec3ffa3ea52671e373afa1df Mon Sep 17 00:00:00 2001 From: Taka Nishida <tnishida@gitlab.com> Date: Tue, 19 Dec 2023 13:19:39 +0000 Subject: [PATCH] Migrate "agent_users_using_ci_tunnel" event to internal tracking --- config/events/agent_users_using_ci_tunnel.yml | 20 +++++++++++++++++++ ...51_agent_users_using_ci_tunnel_monthly.yml | 6 ++++-- ...644_agent_users_using_ci_tunnel_weekly.yml | 6 ++++-- doc/development/internal_api/index.md | 1 - lib/api/helpers/kubernetes/agent_helpers.rb | 3 ++- lib/api/internal/kubernetes.rb | 1 - spec/requests/api/internal/kubernetes_spec.rb | 8 ++++---- 7 files changed, 34 insertions(+), 11 deletions(-) create mode 100644 config/events/agent_users_using_ci_tunnel.yml 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 0000000000000..575c2ddf9e8f7 --- /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 a16dbc17f055b..1938323ffdadc 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 efb97bc1b9536..3c309eb1bb559 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 84f5d09418fc6..fc73fcb6c2c2d 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 eca26c023cf54..18f47fa99554b 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 d3a4d94f8cac6..286192f809350 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 5ef041881b903..7934fa4a35896 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) -- GitLab