Class: Gitlab::Usage::Metrics::Instrumentations::DatabaseMetric
- Inherits:
-
BaseMetric
- Object
- BaseMetric
- Gitlab::Usage::Metrics::Instrumentations::DatabaseMetric
- Defined in:
- lib/gitlab/usage/metrics/instrumentations/database_metric.rb
Direct Known Subclasses
ActiveUserCountMetric, BatchedBackgroundMigrationFailedJobsMetric, BatchedBackgroundMigrationsMetric, CountAllCiBuildsMetric, CountBoardsMetric, CountBulkImportsEntitiesMetric, CountCiInternalPipelinesMetric, CountCiRunnersGroupTypeActiveMetric, CountCiRunnersGroupTypeActiveOnlineMetric, CountCiRunnersInstanceTypeActiveMetric, CountCiRunnersInstanceTypeActiveOnlineMetric, CountCiRunnersMetric, CountCiRunnersProjectTypeActiveMetric, CountCiRunnersProjectTypeActiveOnlineMetric, CountConnectedAgentsMetric, CountDeploymentsMetric, CountImportedProjectsMetric, CountImportedProjectsTotalMetric, CountIssuesCreatedManuallyFromAlertsMetric, CountIssuesMetric, CountMlCandidatesMetric, CountMlExperimentsMetric, CountPersonalSnippetsMetric, CountProjectSnippetsMetric, CountProjectsWithAlertsCreatedMetric, CountProjectsWithJiraDvcsIntegrationMetric, CountProjectsWithMlCandidatesMetric, CountProjectsWithMlExperimentsMetric, CountProjectsWithMonitorEnabledMetric, CountSlackAppInstallationsGbpMetric, CountSlackAppInstallationsMetric, CountSnippetsMetric, CountUserAuthMetric, CountUsersAssociatingMilestonesToReleasesMetric, CountUsersCreatingIssuesMetric, CountUsersWithMlCandidatesMetric, DistinctCountProjectsWithExpirationPolicyMetric, GitlabForJiraAppDirectInstallationsCountMetric, GitlabForJiraAppProxyInstallationsCountMetric, InProductMarketingEmailCtaClickedMetric, InProductMarketingEmailSentMetric, IssuesWithAlertManagementAlertsMetric, IssuesWithPrometheusAlertEvents, JiraActiveIntegrationsMetric, JiraImportsTotalImportedIssuesCountMetric
Constant Summary collapse
- UnimplementedOperationError =
Usage Example
class CountUsersCreatingIssuesMetric < DatabaseMetric
operation :distinct_count, column: :author_id relation do |database_time_constraints| ::Issue.where(database_time_constraints) end
end
Class.new(StandardError)
Constants included from TimeFrame
TimeFrame::ALL_TIME_TIME_FRAME_NAME, TimeFrame::DEFAULT_TIMESTAMP_COLUMN, TimeFrame::SEVEN_DAYS_TIME_FRAME_NAME, TimeFrame::TWENTY_EIGHT_DAYS_TIME_FRAME_NAME
Constants included from Gitlab::Utils::UsageData
Gitlab::Utils::UsageData::DISTRIBUTED_HLL_FALLBACK, Gitlab::Utils::UsageData::FALLBACK, Gitlab::Utils::UsageData::HISTOGRAM_FALLBACK, Gitlab::Utils::UsageData::MAX_BUCKET_SIZE
Class Attribute Summary collapse
-
.cache_key ⇒ Object
readonly
Returns the value of attribute cache_key.
-
.column ⇒ Object
readonly
Returns the value of attribute column.
-
.metric_finish ⇒ Object
readonly
Returns the value of attribute metric_finish.
-
.metric_operation ⇒ Object
readonly
Returns the value of attribute metric_operation.
-
.metric_operation_block ⇒ Object
readonly
Returns the value of attribute metric_operation_block.
-
.metric_relation ⇒ Object
readonly
Returns the value of attribute metric_relation.
-
.metric_start ⇒ Object
readonly
Returns the value of attribute metric_start.
-
.metric_timestamp_column ⇒ Object
readonly
Returns the value of attribute metric_timestamp_column.
Attributes inherited from BaseMetric
#events, #options, #time_frame
Class Method Summary collapse
- .cache_start_and_finish_as(cache_key) ⇒ Object
- .finish(&block) ⇒ Object
- .metric_options(&block) ⇒ Object
- .operation(symbol, column: nil, &block) ⇒ Object
- .relation(relation_proc = nil, &block) ⇒ Object
- .start(&block) ⇒ Object
- .timestamp_column(symbol) ⇒ Object
Instance Method Summary collapse
Methods inherited from BaseMetric
available?, #available?, #initialize
Methods included from TimeFrame
#monthly_time_range, #monthly_time_range_db_params, #weekly_time_range, #weekly_time_range_db_params
Methods included from Gitlab::Utils::UsageData
#add, #add_metric, #alt_usage_data, #average, #count, #distinct_count, #estimate_batch_distinct_count, #histogram, #maximum_id, #measure_duration, #minimum_id, #redis_usage_data, #sum, #track_usage_event, #with_finished_at, #with_metadata, #with_prometheus_client
Constructor Details
This class inherits a constructor from Gitlab::Usage::Metrics::Instrumentations::BaseMetric
Class Attribute Details
.cache_key ⇒ Object (readonly)
Returns the value of attribute cache_key.
65 66 67 |
# File 'lib/gitlab/usage/metrics/instrumentations/database_metric.rb', line 65 def cache_key @cache_key end |
.column ⇒ Object (readonly)
Returns the value of attribute column.
65 66 67 |
# File 'lib/gitlab/usage/metrics/instrumentations/database_metric.rb', line 65 def column @column end |
.metric_finish ⇒ Object (readonly)
Returns the value of attribute metric_finish.
65 66 67 |
# File 'lib/gitlab/usage/metrics/instrumentations/database_metric.rb', line 65 def metric_finish @metric_finish end |
.metric_operation ⇒ Object (readonly)
Returns the value of attribute metric_operation.
65 66 67 |
# File 'lib/gitlab/usage/metrics/instrumentations/database_metric.rb', line 65 def metric_operation @metric_operation end |
.metric_operation_block ⇒ Object (readonly)
Returns the value of attribute metric_operation_block.
65 66 67 |
# File 'lib/gitlab/usage/metrics/instrumentations/database_metric.rb', line 65 def metric_operation_block @metric_operation_block end |
.metric_relation ⇒ Object (readonly)
Returns the value of attribute metric_relation.
65 66 67 |
# File 'lib/gitlab/usage/metrics/instrumentations/database_metric.rb', line 65 def metric_relation @metric_relation end |
.metric_start ⇒ Object (readonly)
Returns the value of attribute metric_start.
65 66 67 |
# File 'lib/gitlab/usage/metrics/instrumentations/database_metric.rb', line 65 def metric_start @metric_start end |
.metric_timestamp_column ⇒ Object (readonly)
Returns the value of attribute metric_timestamp_column.
65 66 67 |
# File 'lib/gitlab/usage/metrics/instrumentations/database_metric.rb', line 65 def @metric_timestamp_column end |
Class Method Details
.cache_start_and_finish_as(cache_key) ⇒ Object
61 62 63 |
# File 'lib/gitlab/usage/metrics/instrumentations/database_metric.rb', line 61 def cache_start_and_finish_as(cache_key) @cache_key = cache_key end |
.finish(&block) ⇒ Object
31 32 33 34 35 |
# File 'lib/gitlab/usage/metrics/instrumentations/database_metric.rb', line 31 def finish(&block) return @metric_finish&.call unless block @metric_finish = block end |
.metric_options(&block) ⇒ Object
43 44 45 46 47 |
# File 'lib/gitlab/usage/metrics/instrumentations/database_metric.rb', line 43 def (&block) return @metric_options&.call.to_h unless block @metric_options = block end |
.operation(symbol, column: nil, &block) ⇒ Object
53 54 55 56 57 58 59 |
# File 'lib/gitlab/usage/metrics/instrumentations/database_metric.rb', line 53 def operation(symbol, column: nil, &block) raise UnimplementedOperationError unless symbol.in?(IMPLEMENTED_OPERATIONS) @metric_operation = symbol @column = column @metric_operation_block = block if block end |
.relation(relation_proc = nil, &block) ⇒ Object
37 38 39 40 41 |
# File 'lib/gitlab/usage/metrics/instrumentations/database_metric.rb', line 37 def relation(relation_proc = nil, &block) return unless relation_proc || block @metric_relation = (relation_proc || block) end |
.start(&block) ⇒ Object
25 26 27 28 29 |
# File 'lib/gitlab/usage/metrics/instrumentations/database_metric.rb', line 25 def start(&block) return @metric_start&.call unless block @metric_start = block end |
.timestamp_column(symbol) ⇒ Object
49 50 51 |
# File 'lib/gitlab/usage/metrics/instrumentations/database_metric.rb', line 49 def (symbol) @metric_timestamp_column = symbol end |
Instance Method Details
#instrumentation ⇒ Object
86 87 88 |
# File 'lib/gitlab/usage/metrics/instrumentations/database_metric.rb', line 86 def instrumentation to_sql end |
#to_sql ⇒ Object
82 83 84 |
# File 'lib/gitlab/usage/metrics/instrumentations/database_metric.rb', line 82 def to_sql Gitlab::Usage::Metrics::Query.for(self.class.metric_operation, relation, self.class.column) end |
#value ⇒ Object
70 71 72 73 74 75 76 77 78 79 80 |
# File 'lib/gitlab/usage/metrics/instrumentations/database_metric.rb', line 70 def value start, finish = get_or_cache_batch_ids method(self.class.metric_operation) .call(relation, self.class.column, start: start, finish: finish, **self.class., &self.class.metric_operation_block) end |