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, BaseIntegrationsMetric, BatchedBackgroundMigrationFailedJobsMetric, BatchedBackgroundMigrationsMetric, BulkImportsUsersMetric, CountActiveUserWithPasskeysMetric, CountAdminsMetric, CountAllCiBuildsMetric, CountBoardsMetric, CountBulkImportsEntitiesMetric, CountCiInternalPipelinesMetric, CountCiRunnerManagerCustomExecutorsMetric, CountCiRunnersGroupTypeActiveMetric, CountCiRunnersGroupTypeActiveOnlineMetric, CountCiRunnersInstanceTypeActiveMetric, CountCiRunnersInstanceTypeActiveOnlineMetric, CountCiRunnersMetric, CountCiRunnersOnlineMetric, CountCiRunnersProjectTypeActiveMetric, CountCiRunnersProjectTypeActiveOnlineMetric, CountConnectedAgentsMetric, CountContainerRegistryProtectedTagRulesMetric, CountContainerRegistryProtectionRulesMetric, CountCreatingCiBuildMetric, CountCsvImportsMetric, CountDeploymentsMetric, CountDistinctNamespacesWithPackagesProtectionRulesMetric, CountDistinctTopLevelGroupsWithContainerRegistryProtectionRulesMetric, CountImportedProjectsMetric, CountImportedProjectsTotalMetric, CountIssuesCreatedManuallyFromAlertsMetric, CountIssuesMetric, CountJiraImportsMetric, CountMlCandidatesMetric, CountMlExperimentsMetric, CountNilExternalAttributesMetric, CountPackagesMetric, CountPackagesProtectionRulesMetric, CountPersonalSnippetsMetric, CountProjectSnippetsMetric, CountProjectsMetric, CountProjectsWithAlertsCreatedMetric, CountProjectsWithContainerRegistryProtectedTagRulesMetric, CountProjectsWithContainerRegistryProtectionRulesMetric, CountProjectsWithJiraDvcsIntegrationMetric, CountProjectsWithMlCandidatesMetric, CountProjectsWithMlExperimentsMetric, CountProjectsWithMonitorEnabledMetric, CountProjectsWithPackagesProtectionRulesMetric, CountServiceDeskCustomEmailEnabledMetric, CountSlackAppInstallationsGbpMetric, CountSlackAppInstallationsMetric, CountSnippetsMetric, CountTopLevelGroupsMetric, CountUserAuthMetric, CountUsersAssociatingMilestonesToReleasesMetric, CountUsersCreatingIssuesMetric, CountUsersWithMlCandidatesMetric, CsvImportsUsersMetric, DistinctCountProjectsWithExpirationPolicyMetric, GitlabForJiraAppDirectInstallationsCountMetric, GitlabForJiraAppProxyInstallationsCountMetric, GroupImportsUsersMetric, IssuesWithAlertManagementAlertsMetric, JiraActiveIntegrationsMetric, JiraImportsFinishedMetric, JiraImportsFinishedProjectsMetric, JiraImportsTotalImportedIssuesCountMetric, JiraImportsUsersMetric, ProjectImportsCreatorsMetric
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) endend
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, #metric_definition, #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, #metrics_collection_metadata, #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.
67 68 69 |
# File 'lib/gitlab/usage/metrics/instrumentations/database_metric.rb', line 67 def cache_key @cache_key end |
.column ⇒ Object (readonly)
Returns the value of attribute column.
67 68 69 |
# File 'lib/gitlab/usage/metrics/instrumentations/database_metric.rb', line 67 def column @column end |
.metric_finish ⇒ Object (readonly)
Returns the value of attribute metric_finish.
67 68 69 |
# File 'lib/gitlab/usage/metrics/instrumentations/database_metric.rb', line 67 def metric_finish @metric_finish end |
.metric_operation ⇒ Object (readonly)
Returns the value of attribute metric_operation.
67 68 69 |
# File 'lib/gitlab/usage/metrics/instrumentations/database_metric.rb', line 67 def metric_operation @metric_operation end |
.metric_operation_block ⇒ Object (readonly)
Returns the value of attribute metric_operation_block.
67 68 69 |
# File 'lib/gitlab/usage/metrics/instrumentations/database_metric.rb', line 67 def metric_operation_block @metric_operation_block end |
.metric_relation ⇒ Object (readonly)
Returns the value of attribute metric_relation.
67 68 69 |
# File 'lib/gitlab/usage/metrics/instrumentations/database_metric.rb', line 67 def metric_relation @metric_relation end |
.metric_start ⇒ Object (readonly)
Returns the value of attribute metric_start.
67 68 69 |
# File 'lib/gitlab/usage/metrics/instrumentations/database_metric.rb', line 67 def metric_start @metric_start end |
.metric_timestamp_column ⇒ Object (readonly)
Returns the value of attribute metric_timestamp_column.
67 68 69 |
# File 'lib/gitlab/usage/metrics/instrumentations/database_metric.rb', line 67 def end |
Class Method Details
.cache_start_and_finish_as(cache_key) ⇒ Object
63 64 65 |
# File 'lib/gitlab/usage/metrics/instrumentations/database_metric.rb', line 63 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
45 46 47 48 49 |
# File 'lib/gitlab/usage/metrics/instrumentations/database_metric.rb', line 45 def (&block) return &.call.to_h unless block = block end |
.operation(symbol, column: nil, &block) ⇒ Object
55 56 57 58 59 60 61 |
# File 'lib/gitlab/usage/metrics/instrumentations/database_metric.rb', line 55 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 42 43 |
# File 'lib/gitlab/usage/metrics/instrumentations/database_metric.rb', line 37 def relation(relation_proc = nil, &block) metric_relation = relation_proc || block return unless metric_relation @metric_relation = metric_relation 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
51 52 53 |
# File 'lib/gitlab/usage/metrics/instrumentations/database_metric.rb', line 51 def (symbol) = symbol end |
Instance Method Details
#instrumentation ⇒ Object
88 89 90 |
# File 'lib/gitlab/usage/metrics/instrumentations/database_metric.rb', line 88 def instrumentation to_sql end |
#to_sql ⇒ Object
84 85 86 |
# File 'lib/gitlab/usage/metrics/instrumentations/database_metric.rb', line 84 def to_sql Gitlab::Usage::Metrics::Query.for(self.class.metric_operation, relation, self.class.column) end |
#value ⇒ Object
72 73 74 75 76 77 78 79 80 81 82 |
# File 'lib/gitlab/usage/metrics/instrumentations/database_metric.rb', line 72 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 |