summaryrefslogtreecommitdiff
path: root/lib/gitlab/usage
diff options
context:
space:
mode:
Diffstat (limited to 'lib/gitlab/usage')
-rw-r--r--lib/gitlab/usage/metrics/instrumentations/count_ci_internal_pipelines_metric.rb23
-rw-r--r--lib/gitlab/usage/metrics/instrumentations/count_issues_created_manually_from_alerts_metric.rb28
-rw-r--r--lib/gitlab/usage/metrics/instrumentations/count_ml_candidates_metric.rb15
-rw-r--r--lib/gitlab/usage/metrics/instrumentations/count_ml_experiments_metric.rb15
-rw-r--r--lib/gitlab/usage/metrics/instrumentations/count_projects_with_ml_candidates_metric.rb18
-rw-r--r--lib/gitlab/usage/metrics/instrumentations/count_projects_with_ml_experiments_metric.rb15
-rw-r--r--lib/gitlab/usage/metrics/instrumentations/count_projects_with_monitor_enabled_metric.rb21
-rw-r--r--lib/gitlab/usage/metrics/instrumentations/count_users_with_ml_candidates_metric.rb15
-rw-r--r--lib/gitlab/usage/metrics/instrumentations/incoming_email_encrypted_secrets_enabled_metric.rb15
-rw-r--r--lib/gitlab/usage/metrics/instrumentations/jira_active_integrations_metric.rb36
-rw-r--r--lib/gitlab/usage/metrics/instrumentations/service_desk_email_encrypted_secrets_enabled_metric.rb15
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