Commit b9bf7535 authored by Tiger's avatar Tiger

Add missing cluster metrics to usage data

New metrics:

- Instance level clusters enabled
- Instance level clusters disabled
- Clusters with a management project associated
parent 67006888
---
title: Add usage data metrics for instance level clusters and clusters with management projects
merge_request: 28510
author:
type: added
...@@ -197,9 +197,11 @@ but commented out to help encourage others to add to it in the future. --> ...@@ -197,9 +197,11 @@ but commented out to help encourage others to add to it in the future. -->
|clusters_enabled|counts|| |clusters_enabled|counts||
|project_clusters_enabled|counts|| |project_clusters_enabled|counts||
|group_clusters_enabled|counts|| |group_clusters_enabled|counts||
|instance_clusters_enabled|counts||
|clusters_disabled|counts|| |clusters_disabled|counts||
|project_clusters_disabled|counts|| |project_clusters_disabled|counts||
|group_clusters_disabled|counts|| |group_clusters_disabled|counts||
|instance_clusters_disabled|counts||
|clusters_platforms_eks|counts|| |clusters_platforms_eks|counts||
|clusters_platforms_gke|counts|| |clusters_platforms_gke|counts||
|clusters_platforms_user|counts|| |clusters_platforms_user|counts||
...@@ -211,6 +213,7 @@ but commented out to help encourage others to add to it in the future. --> ...@@ -211,6 +213,7 @@ but commented out to help encourage others to add to it in the future. -->
|clusters_applications_runner|counts|| |clusters_applications_runner|counts||
|clusters_applications_knative|counts|| |clusters_applications_knative|counts||
|clusters_applications_elastic_stack|counts|| |clusters_applications_elastic_stack|counts||
|clusters_management_project|counts||
|in_review_folder|counts|| |in_review_folder|counts||
|grafana_integrated_projects|counts|| |grafana_integrated_projects|counts||
|groups|counts|| |groups|counts||
...@@ -382,11 +385,14 @@ but commented out to help encourage others to add to it in the future. --> ...@@ -382,11 +385,14 @@ but commented out to help encourage others to add to it in the future. -->
|clusters_applications_helm|usage_activity_by_stage|configure| |clusters_applications_helm|usage_activity_by_stage|configure|
|clusters_applications_ingress|usage_activity_by_stage|configure| |clusters_applications_ingress|usage_activity_by_stage|configure|
|clusters_applications_knative|usage_activity_by_stage|configure| |clusters_applications_knative|usage_activity_by_stage|configure|
|clusters_management_project|usage_activity_by_stage|configure|
|clusters_disabled|usage_activity_by_stage|configure| |clusters_disabled|usage_activity_by_stage|configure|
|clusters_enabled|usage_activity_by_stage|configure| |clusters_enabled|usage_activity_by_stage|configure|
|clusters_platforms_gke|usage_activity_by_stage|configure| |clusters_platforms_gke|usage_activity_by_stage|configure|
|clusters_platforms_eks|usage_activity_by_stage|configure| |clusters_platforms_eks|usage_activity_by_stage|configure|
|clusters_platforms_user|usage_activity_by_stage|configure| |clusters_platforms_user|usage_activity_by_stage|configure|
|instance_clusters_disabled|usage_activity_by_stage|configure|
|instance_clusters_enabled|usage_activity_by_stage|configure|
|group_clusters_disabled|usage_activity_by_stage|configure| |group_clusters_disabled|usage_activity_by_stage|configure|
|group_clusters_enabled|usage_activity_by_stage|configure| |group_clusters_enabled|usage_activity_by_stage|configure|
|project_clusters_disabled|usage_activity_by_stage|configure| |project_clusters_disabled|usage_activity_by_stage|configure|
......
...@@ -202,19 +202,22 @@ module EE ...@@ -202,19 +202,22 @@ module EE
# rubocop:disable CodeReuse/ActiveRecord # rubocop:disable CodeReuse/ActiveRecord
def usage_activity_by_stage_configure(time_period) def usage_activity_by_stage_configure(time_period)
{ {
clusters_applications_cert_managers: clusters_user_distinct_count(::Clusters::Applications::CertManager, time_period), clusters_applications_cert_managers: cluster_applications_user_distinct_count(::Clusters::Applications::CertManager, time_period),
clusters_applications_helm: clusters_user_distinct_count(::Clusters::Applications::Helm, time_period), clusters_applications_helm: cluster_applications_user_distinct_count(::Clusters::Applications::Helm, time_period),
clusters_applications_ingress: clusters_user_distinct_count(::Clusters::Applications::Ingress, time_period), clusters_applications_ingress: cluster_applications_user_distinct_count(::Clusters::Applications::Ingress, time_period),
clusters_applications_knative: clusters_user_distinct_count(::Clusters::Applications::Knative, time_period), clusters_applications_knative: cluster_applications_user_distinct_count(::Clusters::Applications::Knative, time_period),
clusters_disabled: distinct_count(::Clusters::Cluster.disabled.where(time_period), :user_id), clusters_management_project: clusters_user_distinct_count(::Clusters::Cluster.with_management_project, time_period),
clusters_enabled: distinct_count(::Clusters::Cluster.enabled.where(time_period), :user_id), clusters_disabled: clusters_user_distinct_count(::Clusters::Cluster.disabled, time_period),
clusters_platforms_gke: distinct_count(::Clusters::Cluster.gcp_installed.enabled.where(time_period), :user_id), clusters_enabled: clusters_user_distinct_count(::Clusters::Cluster.enabled, time_period),
clusters_platforms_eks: distinct_count(::Clusters::Cluster.aws_installed.enabled.where(time_period), :user_id), clusters_platforms_gke: clusters_user_distinct_count(::Clusters::Cluster.gcp_installed.enabled, time_period),
clusters_platforms_user: distinct_count(::Clusters::Cluster.user_provided.enabled.where(time_period), :user_id), clusters_platforms_eks: clusters_user_distinct_count(::Clusters::Cluster.aws_installed.enabled, time_period),
group_clusters_disabled: distinct_count(::Clusters::Cluster.disabled.group_type.where(time_period), :user_id), clusters_platforms_user: clusters_user_distinct_count(::Clusters::Cluster.user_provided.enabled, time_period),
group_clusters_enabled: distinct_count(::Clusters::Cluster.enabled.group_type.where(time_period), :user_id), instance_clusters_disabled: clusters_user_distinct_count(::Clusters::Cluster.disabled.instance_type, time_period),
project_clusters_disabled: distinct_count(::Clusters::Cluster.disabled.project_type.where(time_period), :user_id), instance_clusters_enabled: clusters_user_distinct_count(::Clusters::Cluster.enabled.instance_type, time_period),
project_clusters_enabled: distinct_count(::Clusters::Cluster.enabled.project_type.where(time_period), :user_id), group_clusters_disabled: clusters_user_distinct_count(::Clusters::Cluster.disabled.group_type, time_period),
group_clusters_enabled: clusters_user_distinct_count(::Clusters::Cluster.enabled.group_type, time_period),
project_clusters_disabled: clusters_user_distinct_count(::Clusters::Cluster.disabled.project_type, time_period),
project_clusters_enabled: clusters_user_distinct_count(::Clusters::Cluster.enabled.project_type, time_period),
projects_slack_notifications_active: distinct_count(::Project.with_slack_service.where(time_period), :creator_id), projects_slack_notifications_active: distinct_count(::Project.with_slack_service.where(time_period), :creator_id),
projects_slack_slash_active: distinct_count(::Project.with_slack_slash_commands_service.where(time_period), :creator_id), projects_slack_slash_active: distinct_count(::Project.with_slack_slash_commands_service.where(time_period), :creator_id),
projects_with_prometheus_alerts: distinct_count(::Project.with_prometheus_service.where(time_period), :creator_id) projects_with_prometheus_alerts: distinct_count(::Project.with_prometheus_service.where(time_period), :creator_id)
...@@ -257,7 +260,7 @@ module EE ...@@ -257,7 +260,7 @@ module EE
def usage_activity_by_stage_monitor(time_period) def usage_activity_by_stage_monitor(time_period)
{ {
clusters: distinct_count(::Clusters::Cluster.where(time_period), :user_id), clusters: distinct_count(::Clusters::Cluster.where(time_period), :user_id),
clusters_applications_prometheus: clusters_user_distinct_count(::Clusters::Applications::Prometheus, time_period), clusters_applications_prometheus: cluster_applications_user_distinct_count(::Clusters::Applications::Prometheus, time_period),
operations_dashboard_default_dashboard: count(::User.active.with_dashboard('operations').where(time_period)), operations_dashboard_default_dashboard: count(::User.active.with_dashboard('operations').where(time_period)),
operations_dashboard_users_with_projects_added: distinct_count(UsersOpsDashboardProject.joins(:user).merge(::User.active).where(time_period), :user_id), operations_dashboard_users_with_projects_added: distinct_count(UsersOpsDashboardProject.joins(:user).merge(::User.active).where(time_period), :user_id),
projects_prometheus_active: distinct_count(::Project.with_active_prometheus_service.where(time_period), :creator_id), projects_prometheus_active: distinct_count(::Project.with_active_prometheus_service.where(time_period), :creator_id),
...@@ -315,7 +318,7 @@ module EE ...@@ -315,7 +318,7 @@ module EE
ci_pipeline_schedules: distinct_count(::Ci::PipelineSchedule.where(time_period), :owner_id), ci_pipeline_schedules: distinct_count(::Ci::PipelineSchedule.where(time_period), :owner_id),
ci_pipelines: distinct_count(::Ci::Pipeline.where(time_period), :user_id), ci_pipelines: distinct_count(::Ci::Pipeline.where(time_period), :user_id),
ci_triggers: distinct_count(::Ci::Trigger.where(time_period), :owner_id), ci_triggers: distinct_count(::Ci::Trigger.where(time_period), :owner_id),
clusters_applications_runner: clusters_user_distinct_count(::Clusters::Applications::Runner, time_period), clusters_applications_runner: cluster_applications_user_distinct_count(::Clusters::Applications::Runner, time_period),
projects_reporting_ci_cd_back_to_github: distinct_count(::Project.with_github_service_pipeline_events.where(time_period), :creator_id) projects_reporting_ci_cd_back_to_github: distinct_count(::Project.with_github_service_pipeline_events.where(time_period), :creator_id)
} }
end end
...@@ -351,8 +354,12 @@ module EE ...@@ -351,8 +354,12 @@ module EE
distinct_count(::Project.service_desk_enabled.where(time_period), :creator_id, start: project_creator_id_start, finish: project_creator_id_finish) distinct_count(::Project.service_desk_enabled.where(time_period), :creator_id, start: project_creator_id_start, finish: project_creator_id_finish)
end end
def cluster_applications_user_distinct_count(applications, time_period)
distinct_count(applications.where(time_period).available.joins(:cluster), 'clusters.user_id')
end
def clusters_user_distinct_count(clusters, time_period) def clusters_user_distinct_count(clusters, time_period)
distinct_count(clusters.where(time_period).available.joins(:cluster), 'clusters.user_id') distinct_count(clusters.where(time_period), :user_id)
end end
# rubocop:enable CodeReuse/ActiveRecord # rubocop:enable CodeReuse/ActiveRecord
end end
......
...@@ -292,6 +292,9 @@ describe Gitlab::UsageData do ...@@ -292,6 +292,9 @@ describe Gitlab::UsageData do
create(:cluster_platform_kubernetes) create(:cluster_platform_kubernetes)
create(:cluster, :group, :disabled, user: user) create(:cluster, :group, :disabled, user: user)
create(:cluster, :group, user: user) create(:cluster, :group, user: user)
create(:cluster, :instance, :disabled, :production_environment)
create(:cluster, :instance, :production_environment)
create(:cluster, :management_project)
create(:slack_service, project: project) create(:slack_service, project: project)
create(:slack_slash_commands_service, project: project) create(:slack_slash_commands_service, project: project)
create(:prometheus_service, project: project) create(:prometheus_service, project: project)
...@@ -302,15 +305,18 @@ describe Gitlab::UsageData do ...@@ -302,15 +305,18 @@ describe Gitlab::UsageData do
clusters_applications_helm: 2, clusters_applications_helm: 2,
clusters_applications_ingress: 2, clusters_applications_ingress: 2,
clusters_applications_knative: 2, clusters_applications_knative: 2,
clusters_disabled: 2, clusters_management_project: 2,
clusters_enabled: 8, clusters_disabled: 4,
clusters_enabled: 12,
clusters_platforms_gke: 2, clusters_platforms_gke: 2,
clusters_platforms_eks: 2, clusters_platforms_eks: 2,
clusters_platforms_user: 2, clusters_platforms_user: 2,
instance_clusters_disabled: 2,
instance_clusters_enabled: 2,
group_clusters_disabled: 2, group_clusters_disabled: 2,
group_clusters_enabled: 2, group_clusters_enabled: 2,
project_clusters_disabled: 2, project_clusters_disabled: 2,
project_clusters_enabled: 8, project_clusters_enabled: 10,
projects_slack_notifications_active: 2, projects_slack_notifications_active: 2,
projects_slack_slash_active: 2, projects_slack_slash_active: 2,
projects_with_prometheus_alerts: 2 projects_with_prometheus_alerts: 2
...@@ -320,15 +326,18 @@ describe Gitlab::UsageData do ...@@ -320,15 +326,18 @@ describe Gitlab::UsageData do
clusters_applications_helm: 1, clusters_applications_helm: 1,
clusters_applications_ingress: 1, clusters_applications_ingress: 1,
clusters_applications_knative: 1, clusters_applications_knative: 1,
clusters_disabled: 1, clusters_management_project: 1,
clusters_enabled: 4, clusters_disabled: 2,
clusters_enabled: 6,
clusters_platforms_gke: 1, clusters_platforms_gke: 1,
clusters_platforms_eks: 1, clusters_platforms_eks: 1,
clusters_platforms_user: 1, clusters_platforms_user: 1,
instance_clusters_disabled: 1,
instance_clusters_enabled: 1,
group_clusters_disabled: 1, group_clusters_disabled: 1,
group_clusters_enabled: 1, group_clusters_enabled: 1,
project_clusters_disabled: 1, project_clusters_disabled: 1,
project_clusters_enabled: 4, project_clusters_enabled: 5,
projects_slack_notifications_active: 1, projects_slack_notifications_active: 1,
projects_slack_slash_active: 1, projects_slack_slash_active: 1,
projects_with_prometheus_alerts: 1 projects_with_prometheus_alerts: 1
......
...@@ -68,9 +68,11 @@ module Gitlab ...@@ -68,9 +68,11 @@ module Gitlab
clusters_enabled: count(::Clusters::Cluster.enabled), clusters_enabled: count(::Clusters::Cluster.enabled),
project_clusters_enabled: count(::Clusters::Cluster.enabled.project_type), project_clusters_enabled: count(::Clusters::Cluster.enabled.project_type),
group_clusters_enabled: count(::Clusters::Cluster.enabled.group_type), group_clusters_enabled: count(::Clusters::Cluster.enabled.group_type),
instance_clusters_enabled: count(::Clusters::Cluster.enabled.instance_type),
clusters_disabled: count(::Clusters::Cluster.disabled), clusters_disabled: count(::Clusters::Cluster.disabled),
project_clusters_disabled: count(::Clusters::Cluster.disabled.project_type), project_clusters_disabled: count(::Clusters::Cluster.disabled.project_type),
group_clusters_disabled: count(::Clusters::Cluster.disabled.group_type), group_clusters_disabled: count(::Clusters::Cluster.disabled.group_type),
instance_clusters_disabled: count(::Clusters::Cluster.disabled.instance_type),
clusters_platforms_eks: count(::Clusters::Cluster.aws_installed.enabled), clusters_platforms_eks: count(::Clusters::Cluster.aws_installed.enabled),
clusters_platforms_gke: count(::Clusters::Cluster.gcp_installed.enabled), clusters_platforms_gke: count(::Clusters::Cluster.gcp_installed.enabled),
clusters_platforms_user: count(::Clusters::Cluster.user_provided.enabled), clusters_platforms_user: count(::Clusters::Cluster.user_provided.enabled),
...@@ -83,6 +85,7 @@ module Gitlab ...@@ -83,6 +85,7 @@ module Gitlab
clusters_applications_knative: count(::Clusters::Applications::Knative.available), clusters_applications_knative: count(::Clusters::Applications::Knative.available),
clusters_applications_elastic_stack: count(::Clusters::Applications::ElasticStack.available), clusters_applications_elastic_stack: count(::Clusters::Applications::ElasticStack.available),
clusters_applications_jupyter: count(::Clusters::Applications::Jupyter.available), clusters_applications_jupyter: count(::Clusters::Applications::Jupyter.available),
clusters_management_project: count(::Clusters::Cluster.with_management_project),
in_review_folder: count(::Environment.in_review_folder), in_review_folder: count(::Environment.in_review_folder),
grafana_integrated_projects: count(GrafanaIntegration.enabled), grafana_integrated_projects: count(GrafanaIntegration.enabled),
groups: count(Group), groups: count(Group),
......
...@@ -39,12 +39,14 @@ FactoryBot.define do ...@@ -39,12 +39,14 @@ FactoryBot.define do
gcp_cluster = create(:cluster_provider_gcp, :created).cluster gcp_cluster = create(:cluster_provider_gcp, :created).cluster
create(:cluster_provider_aws, :created) create(:cluster_provider_aws, :created)
create(:cluster_platform_kubernetes) create(:cluster_platform_kubernetes)
create(:cluster, :management_project, management_project: projects[0])
create(:cluster, :group) create(:cluster, :group)
create(:cluster, :instance, :production_environment)
# Disabled clusters # Disabled clusters
create(:cluster, :disabled) create(:cluster, :disabled)
create(:cluster, :group, :disabled) create(:cluster, :group, :disabled)
create(:cluster, :group, :disabled) create(:cluster, :instance, :disabled)
# Applications # Applications
create(:clusters_applications_helm, :installed, cluster: gcp_cluster) create(:clusters_applications_helm, :installed, cluster: gcp_cluster)
......
...@@ -58,13 +58,14 @@ describe Gitlab::UsageData, :aggregate_failures do ...@@ -58,13 +58,14 @@ describe Gitlab::UsageData, :aggregate_failures do
expect(count_data[:issues_with_embedded_grafana_charts_approx]).to eq(2) expect(count_data[:issues_with_embedded_grafana_charts_approx]).to eq(2)
expect(count_data[:incident_issues]).to eq(4) expect(count_data[:incident_issues]).to eq(4)
expect(count_data[:clusters_enabled]).to eq(4) expect(count_data[:clusters_enabled]).to eq(6)
expect(count_data[:project_clusters_enabled]).to eq(3) expect(count_data[:project_clusters_enabled]).to eq(4)
expect(count_data[:group_clusters_enabled]).to eq(1) expect(count_data[:group_clusters_enabled]).to eq(1)
expect(count_data[:instance_clusters_enabled]).to eq(1)
expect(count_data[:clusters_disabled]).to eq(3) expect(count_data[:clusters_disabled]).to eq(3)
expect(count_data[:project_clusters_disabled]).to eq(1) expect(count_data[:project_clusters_disabled]).to eq(1)
expect(count_data[:group_clusters_disabled]).to eq(2) expect(count_data[:group_clusters_disabled]).to eq(1)
expect(count_data[:group_clusters_enabled]).to eq(1) expect(count_data[:instance_clusters_disabled]).to eq(1)
expect(count_data[:clusters_platforms_eks]).to eq(1) expect(count_data[:clusters_platforms_eks]).to eq(1)
expect(count_data[:clusters_platforms_gke]).to eq(1) expect(count_data[:clusters_platforms_gke]).to eq(1)
expect(count_data[:clusters_platforms_user]).to eq(1) expect(count_data[:clusters_platforms_user]).to eq(1)
...@@ -78,6 +79,7 @@ describe Gitlab::UsageData, :aggregate_failures do ...@@ -78,6 +79,7 @@ describe Gitlab::UsageData, :aggregate_failures do
expect(count_data[:clusters_applications_elastic_stack]).to eq(1) expect(count_data[:clusters_applications_elastic_stack]).to eq(1)
expect(count_data[:grafana_integrated_projects]).to eq(2) expect(count_data[:grafana_integrated_projects]).to eq(2)
expect(count_data[:clusters_applications_jupyter]).to eq(1) expect(count_data[:clusters_applications_jupyter]).to eq(1)
expect(count_data[:clusters_management_project]).to eq(1)
end end
it 'works when queries time out' do it 'works when queries time out' do
......
...@@ -43,9 +43,11 @@ module UsageDataHelpers ...@@ -43,9 +43,11 @@ module UsageDataHelpers
clusters_enabled clusters_enabled
project_clusters_enabled project_clusters_enabled
group_clusters_enabled group_clusters_enabled
instance_clusters_enabled
clusters_disabled clusters_disabled
project_clusters_disabled project_clusters_disabled
group_clusters_disabled group_clusters_disabled
instance_clusters_disabled
clusters_platforms_eks clusters_platforms_eks
clusters_platforms_gke clusters_platforms_gke
clusters_platforms_user clusters_platforms_user
...@@ -58,6 +60,7 @@ module UsageDataHelpers ...@@ -58,6 +60,7 @@ module UsageDataHelpers
clusters_applications_knative clusters_applications_knative
clusters_applications_elastic_stack clusters_applications_elastic_stack
clusters_applications_jupyter clusters_applications_jupyter
clusters_management_project
in_review_folder in_review_folder
grafana_integrated_projects grafana_integrated_projects
groups groups
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment