diff options
Diffstat (limited to 'lib/gitlab/usage')
11 files changed, 216 insertions, 0 deletions
diff --git a/lib/gitlab/usage/metrics/instrumentations/count_ci_internal_pipelines_metric.rb b/lib/gitlab/usage/metrics/instrumentations/count_ci_internal_pipelines_metric.rb new file mode 100644 index 00000000000..44a2d739a4a --- /dev/null +++ b/lib/gitlab/usage/metrics/instrumentations/count_ci_internal_pipelines_metric.rb @@ -0,0 +1,23 @@ +# frozen_string_literal: true + +module Gitlab + module Usage + module Metrics + module Instrumentations + class CountCiInternalPipelinesMetric < DatabaseMetric + operation :count + + relation do + ::Ci::Pipeline.internal + end + + def value + return FALLBACK if Gitlab.com? + + super + end + end + end + end + end +end diff --git a/lib/gitlab/usage/metrics/instrumentations/count_issues_created_manually_from_alerts_metric.rb b/lib/gitlab/usage/metrics/instrumentations/count_issues_created_manually_from_alerts_metric.rb new file mode 100644 index 00000000000..e6093691f48 --- /dev/null +++ b/lib/gitlab/usage/metrics/instrumentations/count_issues_created_manually_from_alerts_metric.rb @@ -0,0 +1,28 @@ +# frozen_string_literal: true + +module Gitlab + module Usage + module Metrics + module Instrumentations + class CountIssuesCreatedManuallyFromAlertsMetric < DatabaseMetric + operation :count + + start { Issue.minimum(:id) } + finish { Issue.maximum(:id) } + + cache_start_and_finish_as :issue + + relation do + Issue.with_alert_management_alerts.not_authored_by(::User.alert_bot) + end + + def value + return FALLBACK if Gitlab.com? + + super + end + end + end + end + end +end diff --git a/lib/gitlab/usage/metrics/instrumentations/count_ml_candidates_metric.rb b/lib/gitlab/usage/metrics/instrumentations/count_ml_candidates_metric.rb new file mode 100644 index 00000000000..e6e547c155c --- /dev/null +++ b/lib/gitlab/usage/metrics/instrumentations/count_ml_candidates_metric.rb @@ -0,0 +1,15 @@ +# frozen_string_literal: true + +module Gitlab + module Usage + module Metrics + module Instrumentations + class CountMlCandidatesMetric < DatabaseMetric + operation :count + + relation { Ml::Candidate } + end + end + end + end +end diff --git a/lib/gitlab/usage/metrics/instrumentations/count_ml_experiments_metric.rb b/lib/gitlab/usage/metrics/instrumentations/count_ml_experiments_metric.rb new file mode 100644 index 00000000000..3e589f28df1 --- /dev/null +++ b/lib/gitlab/usage/metrics/instrumentations/count_ml_experiments_metric.rb @@ -0,0 +1,15 @@ +# frozen_string_literal: true + +module Gitlab + module Usage + module Metrics + module Instrumentations + class CountMlExperimentsMetric < DatabaseMetric + operation :count + + relation { Ml::Experiment } + end + end + end + end +end diff --git a/lib/gitlab/usage/metrics/instrumentations/count_projects_with_ml_candidates_metric.rb b/lib/gitlab/usage/metrics/instrumentations/count_projects_with_ml_candidates_metric.rb new file mode 100644 index 00000000000..bf1f5534a70 --- /dev/null +++ b/lib/gitlab/usage/metrics/instrumentations/count_projects_with_ml_candidates_metric.rb @@ -0,0 +1,18 @@ +# frozen_string_literal: true + +module Gitlab + module Usage + module Metrics + module Instrumentations + class CountProjectsWithMlCandidatesMetric < DatabaseMetric + operation :distinct_count, column: 'ml_experiments.project_id' + + relation do + Ml::Experiment.where('EXISTS (?)', + Ml::Candidate.where("\"ml_experiments\".\"id\" = \"ml_candidates\".\"experiment_id\"").select(1)) + end + end + end + end + end +end diff --git a/lib/gitlab/usage/metrics/instrumentations/count_projects_with_ml_experiments_metric.rb b/lib/gitlab/usage/metrics/instrumentations/count_projects_with_ml_experiments_metric.rb new file mode 100644 index 00000000000..d575163b6b5 --- /dev/null +++ b/lib/gitlab/usage/metrics/instrumentations/count_projects_with_ml_experiments_metric.rb @@ -0,0 +1,15 @@ +# frozen_string_literal: true + +module Gitlab + module Usage + module Metrics + module Instrumentations + class CountProjectsWithMlExperimentsMetric < DatabaseMetric + operation :distinct_count, column: :project_id + + relation { Ml::Experiment } + end + end + end + end +end diff --git a/lib/gitlab/usage/metrics/instrumentations/count_projects_with_monitor_enabled_metric.rb b/lib/gitlab/usage/metrics/instrumentations/count_projects_with_monitor_enabled_metric.rb new file mode 100644 index 00000000000..2a560233390 --- /dev/null +++ b/lib/gitlab/usage/metrics/instrumentations/count_projects_with_monitor_enabled_metric.rb @@ -0,0 +1,21 @@ +# frozen_string_literal: true + +module Gitlab + module Usage + module Metrics + module Instrumentations + class CountProjectsWithMonitorEnabledMetric < DatabaseMetric + operation :count + + metric_options do + { + batch_size: 10_000 + } + end + + relation { ProjectFeature.where.not(monitor_access_level: ProjectFeature::DISABLED) } + end + end + end + end +end diff --git a/lib/gitlab/usage/metrics/instrumentations/count_users_with_ml_candidates_metric.rb b/lib/gitlab/usage/metrics/instrumentations/count_users_with_ml_candidates_metric.rb new file mode 100644 index 00000000000..0ec7173e096 --- /dev/null +++ b/lib/gitlab/usage/metrics/instrumentations/count_users_with_ml_candidates_metric.rb @@ -0,0 +1,15 @@ +# frozen_string_literal: true + +module Gitlab + module Usage + module Metrics + module Instrumentations + class CountUsersWithMlCandidatesMetric < DatabaseMetric + operation :distinct_count, column: :user_id + + relation { Ml::Candidate } + end + end + end + end +end diff --git a/lib/gitlab/usage/metrics/instrumentations/incoming_email_encrypted_secrets_enabled_metric.rb b/lib/gitlab/usage/metrics/instrumentations/incoming_email_encrypted_secrets_enabled_metric.rb new file mode 100644 index 00000000000..ab9c6f87023 --- /dev/null +++ b/lib/gitlab/usage/metrics/instrumentations/incoming_email_encrypted_secrets_enabled_metric.rb @@ -0,0 +1,15 @@ +# frozen_string_literal: true + +module Gitlab + module Usage + module Metrics + module Instrumentations + class IncomingEmailEncryptedSecretsEnabledMetric < GenericMetric + value do + Gitlab::IncomingEmail.encrypted_secrets.active? + end + end + end + end + end +end diff --git a/lib/gitlab/usage/metrics/instrumentations/jira_active_integrations_metric.rb b/lib/gitlab/usage/metrics/instrumentations/jira_active_integrations_metric.rb new file mode 100644 index 00000000000..13af3937f43 --- /dev/null +++ b/lib/gitlab/usage/metrics/instrumentations/jira_active_integrations_metric.rb @@ -0,0 +1,36 @@ +# frozen_string_literal: true + +module Gitlab + module Usage + module Metrics + module Instrumentations + class JiraActiveIntegrationsMetric < DatabaseMetric + operation :count + + def initialize(metric_definition) + super + + deployment_type = options[:deployment_type] + + return if deployment_type.in?(allowed_types) + + raise ArgumentError, "deployment_type '#{deployment_type}' must be one of: #{allowed_types.join(', ')}" + end + + relation do |options| + ::Integrations::Jira + .active + .joins(:jira_tracker_data) + .where(jira_tracker_data: { deployment_type: options[:deployment_type] }) + end + + private + + def allowed_types + Integrations::JiraTrackerData.deployment_types.keys + end + end + end + end + end +end diff --git a/lib/gitlab/usage/metrics/instrumentations/service_desk_email_encrypted_secrets_enabled_metric.rb b/lib/gitlab/usage/metrics/instrumentations/service_desk_email_encrypted_secrets_enabled_metric.rb new file mode 100644 index 00000000000..4332043de8a --- /dev/null +++ b/lib/gitlab/usage/metrics/instrumentations/service_desk_email_encrypted_secrets_enabled_metric.rb @@ -0,0 +1,15 @@ +# frozen_string_literal: true + +module Gitlab + module Usage + module Metrics + module Instrumentations + class ServiceDeskEmailEncryptedSecretsEnabledMetric < GenericMetric + value do + Gitlab::ServiceDeskEmail.encrypted_secrets.active? + end + end + end + end + end +end |