Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'lib/gitlab/usage')
-rw-r--r--lib/gitlab/usage/metric_definition.rb19
-rw-r--r--lib/gitlab/usage/metrics/instrumentations/batched_background_migration_failed_jobs_metric.rb4
-rw-r--r--lib/gitlab/usage/metrics/instrumentations/count_connected_agents_metric.rb17
-rw-r--r--lib/gitlab/usage/metrics/instrumentations/count_imported_projects_total_metric.rb4
-rw-r--r--lib/gitlab/usage/metrics/instrumentations/count_issues_created_manually_from_alerts_metric.rb2
-rw-r--r--lib/gitlab/usage/metrics/instrumentations/database_metric.rb2
-rw-r--r--lib/gitlab/usage/metrics/instrumentations/issues_created_from_alerts_metric.rb3
-rw-r--r--lib/gitlab/usage/metrics/instrumentations/issues_with_self_managed_prometheus_alert_events.rb24
-rw-r--r--lib/gitlab/usage/metrics/instrumentations/numbers_metric.rb2
-rw-r--r--lib/gitlab/usage/metrics/instrumentations/redis_metric.rb2
-rw-r--r--lib/gitlab/usage/time_series_storable.rb22
11 files changed, 66 insertions, 35 deletions
diff --git a/lib/gitlab/usage/metric_definition.rb b/lib/gitlab/usage/metric_definition.rb
index bd42586731e..450575b7223 100644
--- a/lib/gitlab/usage/metric_definition.rb
+++ b/lib/gitlab/usage/metric_definition.rb
@@ -4,7 +4,6 @@ module Gitlab
module Usage
class MetricDefinition
METRIC_SCHEMA_PATH = Rails.root.join('config', 'metrics', 'schema.json')
- SKIP_VALIDATION_STATUS = 'removed'
AVAILABLE_STATUSES = %w[active broken].to_set.freeze
VALID_SERVICE_PING_STATUSES = %w[active broken].to_set.freeze
@@ -26,6 +25,18 @@ module Gitlab
events_from_new_structure || events_from_old_structure || {}
end
+ def to_context
+ return unless %w[redis redis_hll].include?(data_source)
+
+ event_name = if data_source == 'redis_hll'
+ options[:events].first
+ elsif data_source == 'redis'
+ Gitlab::Usage::Metrics::Instrumentations::RedisMetric.new(attributes).redis_key
+ end
+
+ Gitlab::Tracking::ServicePingContext.new(data_source: data_source, event: event_name)
+ end
+
def to_h
attributes
end
@@ -98,6 +109,10 @@ module Gitlab
all.select { |definition| definition.attributes[:instrumentation_class].present? && definition.available? }
end
+ def context_for(key_path)
+ definitions[key_path].to_context
+ end
+
def schemer
@schemer ||= ::JSONSchemer.schema(Pathname.new(METRIC_SCHEMA_PATH))
end
@@ -161,7 +176,7 @@ module Gitlab
end
def skip_validation?
- !!attributes[:skip_validation] || @skip_validation || attributes[:status] == SKIP_VALIDATION_STATUS
+ !!attributes[:skip_validation] || @skip_validation
end
def events_from_new_structure
diff --git a/lib/gitlab/usage/metrics/instrumentations/batched_background_migration_failed_jobs_metric.rb b/lib/gitlab/usage/metrics/instrumentations/batched_background_migration_failed_jobs_metric.rb
index f5d963cf522..807e0ee071a 100644
--- a/lib/gitlab/usage/metrics/instrumentations/batched_background_migration_failed_jobs_metric.rb
+++ b/lib/gitlab/usage/metrics/instrumentations/batched_background_migration_failed_jobs_metric.rb
@@ -27,6 +27,10 @@ module Gitlab
}
end
end
+
+ def to_sql
+ relation.unscope(:order).to_sql
+ end
end
end
end
diff --git a/lib/gitlab/usage/metrics/instrumentations/count_connected_agents_metric.rb b/lib/gitlab/usage/metrics/instrumentations/count_connected_agents_metric.rb
new file mode 100644
index 00000000000..dea3f73c008
--- /dev/null
+++ b/lib/gitlab/usage/metrics/instrumentations/count_connected_agents_metric.rb
@@ -0,0 +1,17 @@
+# frozen_string_literal: true
+
+module Gitlab
+ module Usage
+ module Metrics
+ module Instrumentations
+ class CountConnectedAgentsMetric < DatabaseMetric
+ operation :count
+
+ relation do
+ Clusters::AgentToken.connected
+ end
+ end
+ end
+ end
+ end
+end
diff --git a/lib/gitlab/usage/metrics/instrumentations/count_imported_projects_total_metric.rb b/lib/gitlab/usage/metrics/instrumentations/count_imported_projects_total_metric.rb
index 109d2245635..4430c7453e6 100644
--- a/lib/gitlab/usage/metrics/instrumentations/count_imported_projects_total_metric.rb
+++ b/lib/gitlab/usage/metrics/instrumentations/count_imported_projects_total_metric.rb
@@ -10,8 +10,8 @@ module Gitlab
relation { Project }
operation :count
- IMPORT_TYPES = %w(gitlab_project gitlab github bitbucket bitbucket_server gitea git manifest
- gitlab_migration).freeze
+ IMPORT_TYPES = %w[gitlab_project gitlab github bitbucket bitbucket_server gitea git manifest
+ gitlab_migration].freeze
def value
count(project_relation) + count(entity_relation)
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
index e6093691f48..745d147ac88 100644
--- 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
@@ -13,7 +13,7 @@ module Gitlab
cache_start_and_finish_as :issue
relation do
- Issue.with_alert_management_alerts.not_authored_by(::User.alert_bot)
+ Issue.with_alert_management_alerts.not_authored_by(::Users::Internal.alert_bot)
end
def value
diff --git a/lib/gitlab/usage/metrics/instrumentations/database_metric.rb b/lib/gitlab/usage/metrics/instrumentations/database_metric.rb
index 2af7c208fce..7133c815e10 100644
--- a/lib/gitlab/usage/metrics/instrumentations/database_metric.rb
+++ b/lib/gitlab/usage/metrics/instrumentations/database_metric.rb
@@ -18,7 +18,7 @@ module Gitlab
UnimplementedOperationError = Class.new(StandardError) # rubocop:disable UsageData/InstrumentationSuperclass
class << self
- IMPLEMENTED_OPERATIONS = %i(count distinct_count estimate_batch_distinct_count sum average).freeze
+ IMPLEMENTED_OPERATIONS = %i[count distinct_count estimate_batch_distinct_count sum average].freeze
private_constant :IMPLEMENTED_OPERATIONS
diff --git a/lib/gitlab/usage/metrics/instrumentations/issues_created_from_alerts_metric.rb b/lib/gitlab/usage/metrics/instrumentations/issues_created_from_alerts_metric.rb
index e430bc8eb71..d88128216d6 100644
--- a/lib/gitlab/usage/metrics/instrumentations/issues_created_from_alerts_metric.rb
+++ b/lib/gitlab/usage/metrics/instrumentations/issues_created_from_alerts_metric.rb
@@ -7,8 +7,7 @@ module Gitlab
class IssuesCreatedFromAlertsMetric < NumbersMetric
ISSUES_FROM_ALERTS_METRICS = [
IssuesWithAlertManagementAlertsMetric,
- IssuesWithPrometheusAlertEvents,
- IssuesWithSelfManagedPrometheusAlertEvents
+ IssuesWithPrometheusAlertEvents
].freeze
operation :add
diff --git a/lib/gitlab/usage/metrics/instrumentations/issues_with_self_managed_prometheus_alert_events.rb b/lib/gitlab/usage/metrics/instrumentations/issues_with_self_managed_prometheus_alert_events.rb
deleted file mode 100644
index fdbaa65bc68..00000000000
--- a/lib/gitlab/usage/metrics/instrumentations/issues_with_self_managed_prometheus_alert_events.rb
+++ /dev/null
@@ -1,24 +0,0 @@
-# frozen_string_literal: true
-
-module Gitlab
- module Usage
- module Metrics
- module Instrumentations
- class IssuesWithSelfManagedPrometheusAlertEvents < DatabaseMetric
- # this metric is used in IssuesCreatedFromAlertsMetric
- # do not report metric directly in service ping
- available? { false }
-
- operation :count
-
- start { Issue.minimum(:id) }
- finish { Issue.maximum(:id) }
-
- relation { Issue.with_self_managed_prometheus_alert_events }
-
- cache_start_and_finish_as :issue
- end
- end
- end
- end
-end
diff --git a/lib/gitlab/usage/metrics/instrumentations/numbers_metric.rb b/lib/gitlab/usage/metrics/instrumentations/numbers_metric.rb
index 67fcd226a0a..f168837bd50 100644
--- a/lib/gitlab/usage/metrics/instrumentations/numbers_metric.rb
+++ b/lib/gitlab/usage/metrics/instrumentations/numbers_metric.rb
@@ -21,7 +21,7 @@ module Gitlab
UnimplementedOperationError = Class.new(StandardError) # rubocop:disable UsageData/InstrumentationSuperclass
class << self
- IMPLEMENTED_OPERATIONS = %i(add).freeze
+ IMPLEMENTED_OPERATIONS = %i[add].freeze
private_constant :IMPLEMENTED_OPERATIONS
diff --git a/lib/gitlab/usage/metrics/instrumentations/redis_metric.rb b/lib/gitlab/usage/metrics/instrumentations/redis_metric.rb
index ca5e5b706c4..217fa6aca49 100644
--- a/lib/gitlab/usage/metrics/instrumentations/redis_metric.rb
+++ b/lib/gitlab/usage/metrics/instrumentations/redis_metric.rb
@@ -48,8 +48,6 @@ module Gitlab
end
end
- private
-
def redis_key
key = metric_event.dup
key.prepend("#{prefix}_") if prefix
diff --git a/lib/gitlab/usage/time_series_storable.rb b/lib/gitlab/usage/time_series_storable.rb
new file mode 100644
index 00000000000..83f62b8c1c7
--- /dev/null
+++ b/lib/gitlab/usage/time_series_storable.rb
@@ -0,0 +1,22 @@
+# frozen_string_literal: true
+
+module Gitlab
+ module Usage
+ module TimeSeriesStorable
+ # requires a #redis_key(event, date) method to be defined
+ def keys_for_aggregation(events:, start_date:, end_date:)
+ # we always keep 1 week of margin
+ # .end_of_week is necessary to make sure this works for 1 week long periods too
+ end_date = end_date.end_of_week - 1.week
+ (start_date.to_date..end_date.to_date).flat_map do |date|
+ events.map { |event| redis_key(event, date) }
+ end.uniq
+ end
+
+ def apply_time_aggregation(key, time)
+ year_week = time.strftime('%G-%V')
+ "#{key}-#{year_week}"
+ end
+ end
+ end
+end