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 'doc/development')
-rw-r--r--doc/development/README.md308
-rw-r--r--doc/development/agent/gitops.md149
-rw-r--r--doc/development/agent/identity.md107
-rw-r--r--doc/development/agent/index.md88
-rw-r--r--doc/development/agent/local.md156
-rw-r--r--doc/development/agent/repository_overview.md99
-rw-r--r--doc/development/agent/routing.md231
-rw-r--r--doc/development/agent/user_stories.md78
-rw-r--r--doc/development/api_graphql_styleguide.md156
-rw-r--r--doc/development/application_limits.md12
-rw-r--r--doc/development/architecture.md249
-rw-r--r--doc/development/audit_event_guide/index.md17
-rw-r--r--doc/development/auto_devops.md2
-rw-r--r--doc/development/avoiding_downtime_in_migrations.md4
-rw-r--r--doc/development/background_migrations.md85
-rw-r--r--doc/development/bulk_import.md4
-rw-r--r--doc/development/cascading_settings.md27
-rw-r--r--doc/development/changelog.md5
-rw-r--r--doc/development/chatops_on_gitlabcom.md2
-rw-r--r--doc/development/cicd/cicd_reference_documentation_guide.md4
-rw-r--r--doc/development/cicd/index.md20
-rw-r--r--doc/development/cicd/templates.md16
-rw-r--r--doc/development/code_review.md11
-rw-r--r--doc/development/contributing/issue_workflow.md4
-rw-r--r--doc/development/contributing/merge_request_workflow.md6
-rw-r--r--doc/development/contributing/style_guides.md28
-rw-r--r--doc/development/dangerbot.md22
-rw-r--r--doc/development/database/database_reviewer_guidelines.md3
-rw-r--r--doc/development/database/multiple_databases.md101
-rw-r--r--doc/development/database/not_null_constraints.md4
-rw-r--r--doc/development/database/pagination_guidelines.md2
-rw-r--r--doc/development/database/pagination_performance_guidelines.md2
-rw-r--r--doc/development/database/rename_database_tables.md2
-rw-r--r--doc/development/database/transaction_guidelines.md117
-rw-r--r--doc/development/database_review.md11
-rw-r--r--doc/development/deprecation_guidelines/index.md5
-rw-r--r--doc/development/documentation/index.md19
-rw-r--r--doc/development/documentation/site_architecture/global_nav.md37
-rw-r--r--doc/development/documentation/site_architecture/index.md4
-rw-r--r--doc/development/documentation/structure.md204
-rw-r--r--doc/development/documentation/styleguide/index.md144
-rw-r--r--doc/development/documentation/styleguide/word_list.md170
-rw-r--r--doc/development/documentation/testing.md14
-rw-r--r--doc/development/documentation/workflow.md2
-rw-r--r--doc/development/emails.md2
-rw-r--r--doc/development/experiment_guide/gitlab_experiment.md7
-rw-r--r--doc/development/fe_guide/accessibility.md2
-rw-r--r--doc/development/fe_guide/content_editor.md6
-rw-r--r--doc/development/fe_guide/editor_lite.md265
-rw-r--r--doc/development/fe_guide/frontend_faq.md2
-rw-r--r--doc/development/fe_guide/graphql.md29
-rw-r--r--doc/development/fe_guide/index.md2
-rw-r--r--doc/development/fe_guide/performance.md18
-rw-r--r--doc/development/fe_guide/source_editor.md264
-rw-r--r--doc/development/fe_guide/storybook.md51
-rw-r--r--doc/development/fe_guide/style/html.md2
-rw-r--r--doc/development/fe_guide/style/scss.md4
-rw-r--r--doc/development/fe_guide/vue3_migration.md49
-rw-r--r--doc/development/fe_guide/vuex.md57
-rw-r--r--doc/development/feature_flags/controls.md4
-rw-r--r--doc/development/feature_flags/development.md9
-rw-r--r--doc/development/feature_flags/index.md97
-rw-r--r--doc/development/feature_flags/process.md6
-rw-r--r--doc/development/features_inside_dot_gitlab.md2
-rw-r--r--doc/development/foreign_keys.md5
-rw-r--r--doc/development/geo.md13
-rw-r--r--doc/development/git_object_deduplication.md2
-rw-r--r--doc/development/gitaly.md4
-rw-r--r--doc/development/github_importer.md40
-rw-r--r--doc/development/go_guide/index.md10
-rw-r--r--doc/development/i18n/externalization.md4
-rw-r--r--doc/development/i18n/merging_translations.md2
-rw-r--r--doc/development/i18n/proofreader.md1
-rw-r--r--doc/development/img/stage_group_dashboards_error_attribution.pngbin0 -> 166125 bytes
-rw-r--r--doc/development/img/stage_group_dashboards_service_sli_detail.pngbin0 -> 110562 bytes
-rw-r--r--doc/development/index.md340
-rw-r--r--doc/development/integrations/secure.md104
-rw-r--r--doc/development/integrations/secure_partner_integration.md3
-rw-r--r--doc/development/internal_api.md135
-rw-r--r--doc/development/iterating_tables_in_batches.md288
-rw-r--r--doc/development/jh_features_review.md7
-rw-r--r--doc/development/logging.md6
-rw-r--r--doc/development/merge_request_performance_guidelines.md19
-rw-r--r--doc/development/migration_style_guide.md80
-rw-r--r--doc/development/module_with_instance_variables.md4
-rw-r--r--doc/development/multi_version_compatibility.md37
-rw-r--r--doc/development/new_fe_guide/dependencies.md9
-rw-r--r--doc/development/omnibus.md2
-rw-r--r--doc/development/packages.md4
-rw-r--r--doc/development/performance.md2
-rw-r--r--doc/development/permissions.md5
-rw-r--r--doc/development/pipelines.md130
-rw-r--r--doc/development/policies.md4
-rw-r--r--doc/development/polymorphic_associations.md2
-rw-r--r--doc/development/profiling.md2
-rw-r--r--doc/development/pry_debugging.md2
-rw-r--r--doc/development/query_performance.md2
-rw-r--r--doc/development/query_recorder.md2
-rw-r--r--doc/development/rails_initializers.md2
-rw-r--r--doc/development/rake_tasks.md7
-rw-r--r--doc/development/reactive_caching.md18
-rw-r--r--doc/development/redis.md1
-rw-r--r--doc/development/refactoring_guide/index.md2
-rw-r--r--doc/development/renaming_features.md2
-rw-r--r--doc/development/repository_mirroring.md34
-rw-r--r--doc/development/reusing_abstractions.md2
-rw-r--r--doc/development/scalability.md8
-rw-r--r--doc/development/secure_coding_guidelines.md6
-rw-r--r--doc/development/serializing_data.md6
-rw-r--r--doc/development/service_ping/dictionary.md23249
-rw-r--r--doc/development/service_ping/index.md1707
-rw-r--r--doc/development/service_ping/metrics_dictionary.md237
-rw-r--r--doc/development/service_ping/metrics_instrumentation.md102
-rw-r--r--doc/development/service_ping/review_guidelines.md75
-rw-r--r--doc/development/shell_scripting_guide/index.md2
-rw-r--r--doc/development/sidekiq_style_guide.md38
-rw-r--r--doc/development/snowplow/index.md24
-rw-r--r--doc/development/snowplow/review_guidelines.md43
-rw-r--r--doc/development/sql.md12
-rw-r--r--doc/development/stage_group_dashboards.md51
-rw-r--r--doc/development/testing_guide/best_practices.md6
-rw-r--r--doc/development/testing_guide/end_to_end/environment_selection.md68
-rw-r--r--doc/development/testing_guide/end_to_end/execution_context_selection.md122
-rw-r--r--doc/development/testing_guide/end_to_end/index.md7
-rw-r--r--doc/development/testing_guide/end_to_end/resources.md2
-rw-r--r--doc/development/testing_guide/end_to_end/rspec_metadata_tests.md5
-rw-r--r--doc/development/testing_guide/end_to_end/running_tests_that_require_special_setup.md14
-rw-r--r--doc/development/testing_guide/frontend_testing.md13
-rw-r--r--doc/development/testing_guide/index.md2
-rw-r--r--doc/development/understanding_explain_plans.md2
-rw-r--r--doc/development/usage_ping.md9
-rw-r--r--doc/development/usage_ping/dictionary.md4258
-rw-r--r--doc/development/usage_ping/index.md1580
-rw-r--r--doc/development/usage_ping/metrics_dictionary.md238
-rw-r--r--doc/development/usage_ping/metrics_instrumentation.md103
-rw-r--r--doc/development/usage_ping/product_intelligence_review.md92
-rw-r--r--doc/development/usage_ping/review_guidelines.md9
137 files changed, 32507 insertions, 4530 deletions
diff --git a/doc/development/README.md b/doc/development/README.md
index bc996fdff21..5ab8653dc35 100644
--- a/doc/development/README.md
+++ b/doc/development/README.md
@@ -1,308 +1,8 @@
---
-comments: false
-type: index, dev
-stage: none
-group: Development
-info: "See the Technical Writers assigned to Development Guidelines: https://about.gitlab.com/handbook/engineering/ux/technical-writing/#assignments-to-development-guidelines"
-description: "Development Guidelines: learn how to contribute to GitLab."
+redirect_to: 'index.md'
---
-# Contributor and Development Docs
+This document was moved to [another location](index.md).
-Learn the processes and technical information needed for contributing to GitLab.
-
-This content is intended for members of the GitLab Team as well as community
-contributors. Content specific to the GitLab Team should instead be included in
-the [Handbook](https://about.gitlab.com/handbook/).
-
-For information on using GitLab to work on your own software projects, see the
-[GitLab user documentation](../user/index.md).
-
-For information on working with the GitLab APIs, see the [API documentation](../api/README.md).
-
-For information about how to install, configure, update, and upgrade your own
-GitLab instance, see the [administration documentation](../administration/index.md).
-
-## Get started
-
-- Set up the GitLab development environment with the
- [GitLab Development Kit (GDK)](https://gitlab.com/gitlab-org/gitlab-development-kit/-/blob/main/README.md)
-- [GitLab contributing guide](contributing/index.md)
- - [Issues workflow](contributing/issue_workflow.md) for more information about:
- - Issue tracker guidelines.
- - Triaging.
- - Labels.
- - Feature proposals.
- - Issue weight.
- - Regression issues.
- - Technical or UX debt.
- - [Merge requests workflow](contributing/merge_request_workflow.md) for more
- information about:
- - Merge request guidelines.
- - Contribution acceptance criteria.
- - Definition of done.
- - Dependencies.
- - [Style guides](contributing/style_guides.md)
- - [Implement design & UI elements](contributing/design.md)
-- [GitLab Architecture Overview](architecture.md)
-- [Rake tasks](rake_tasks.md) for development
-
-## Processes
-
-**Must-reads:**
-
-- [Guide on adapting existing and introducing new components](architecture.md#adapting-existing-and-introducing-new-components)
-- [Code review guidelines](code_review.md) for reviewing code and having code
- reviewed
-- [Database review guidelines](database_review.md) for reviewing
- database-related changes and complex SQL queries, and having them reviewed
-- [Secure coding guidelines](secure_coding_guidelines.md)
-- [Pipelines for the GitLab project](pipelines.md)
-
-Complementary reads:
-
-- [GitLab core team & GitLab Inc. contribution process](https://gitlab.com/gitlab-org/gitlab/-/blob/master/PROCESS.md)
-- [Security process for developers](https://gitlab.com/gitlab-org/release/docs/blob/master/general/security/developer.md#security-releases-critical-non-critical-as-a-developer)
-- [Guidelines for implementing Enterprise Edition features](ee_features.md)
-- [Danger bot](dangerbot.md)
-- [Guidelines for changelogs](changelog.md)
-- [Requesting access to ChatOps on GitLab.com](chatops_on_gitlabcom.md#requesting-access) (for GitLab team members)
-- [Patch release process for developers](https://gitlab.com/gitlab-org/release/docs/blob/master/general/patch/process.md#process-for-developers)
-- [Adding a new service component to GitLab](adding_service_component.md)
-
-### Development guidelines review
-
-When you submit a change to the GitLab development guidelines, who
-you ask for reviews depends on the level of change.
-
-#### Wording, style, or link changes
-
-Not all changes require extensive review. For example, MRs that don't change the
-content's meaning or function can be reviewed, approved, and merged by any
-maintainer or Technical Writer. These can include:
-
-- Typo fixes.
-- Clarifying links, such as to external programming language documentation.
-- Changes to comply with the [Documentation Style Guide](documentation/index.md)
- that don't change the intent of the documentation page.
-
-#### Specific changes
-
-If the MR proposes changes that are limited to a particular stage, group, or team,
-request a review and approval from an experienced GitLab Team Member in that
-group. For example, if you're documenting a new internal API used exclusively by
-a given group, request an engineering review from one of the group's members.
-
-After the engineering review is complete, assign the MR to the
-[Technical Writer associated with the stage and group](https://about.gitlab.com/handbook/engineering/ux/technical-writing/#assignments)
-in the modified documentation page's metadata.
-
-If you have questions or need further input, request a review from the
-Technical Writer assigned to the [Development Guidelines](https://about.gitlab.com/handbook/engineering/ux/technical-writing/#assignments-to-development-guidelines).
-
-#### Broader changes
-
-Some changes affect more than one group. For example:
-
-- Changes to [code review guidelines](code_review.md).
-- Changes to [commit message guidelines](contributing/merge_request_workflow.md#commit-messages-guidelines).
-- Changes to guidelines in [feature flags in development of GitLab](feature_flags/).
-- Changes to [feature flags documentation guidelines](documentation/feature_flags.md).
-
-In these cases, use the following workflow:
-
-1. Request a peer review from a member of your team.
-1. Request a review and approval of an Engineering Manager (EM)
- or Staff Engineer who's responsible for the area in question:
-
- - [Frontend](https://about.gitlab.com/handbook/engineering/frontend/)
- - [Backend](https://about.gitlab.com/handbook/engineering/)
- - [Database](https://about.gitlab.com/handbook/engineering/development/database/)
- - [User Experience (UX)](https://about.gitlab.com/handbook/engineering/ux/)
- - [Security](https://about.gitlab.com/handbook/engineering/security/)
- - [Quality](https://about.gitlab.com/handbook/engineering/quality/)
- - [Engineering Productivity](https://about.gitlab.com/handbook/engineering/quality/engineering-productivity-team/)
- - [Infrastructure](https://about.gitlab.com/handbook/engineering/infrastructure/)
- - [Technical Writing](https://about.gitlab.com/handbook/engineering/ux/technical-writing/)
-
- You can skip this step for MRs authored by EMs or Staff Engineers responsible
- for their area.
-
- If there are several affected groups, you may need approvals at the
- EM/Staff Engineer level from each affected area.
-
-1. After completing the reviews, consult with the EM/Staff Engineer
- author / approver of the MR.
-
- If this is a significant change across multiple areas, request final review
- and approval from the VP of Development, the DRI for Development Guidelines,
- @clefelhocz1.
-
-1. After all approvals are complete, assign the merge request to the
- Technical Writer for [Development Guidelines](https://about.gitlab.com/handbook/engineering/ux/technical-writing/#assignments-to-development-guidelines)
- for final content review and merge. The Technical Writer may ask for
- additional approvals as previously suggested before merging the MR.
-
-## UX and Frontend guides
-
-- [GitLab Design System](https://design.gitlab.com/), for building GitLab with
- existing CSS styles and elements
-- [Frontend guidelines](fe_guide/index.md)
-- [Emoji guide](fe_guide/emojis.md)
-
-## Backend guides
-
-- [Directory structure](directory_structure.md)
-- [GitLab utilities](utilities.md)
-- [Issuable-like Rails models](issuable-like-models.md)
-- [Logging](logging.md)
-- [API style guide](api_styleguide.md) for contributing to the API
-- [GraphQL API style guide](api_graphql_styleguide.md) for contributing to the
- [GraphQL API](../api/graphql/index.md)
-- [Sidekiq guidelines](sidekiq_style_guide.md) for working with Sidekiq workers
-- [Working with Gitaly](gitaly.md)
-- [Manage feature flags](feature_flags/index.md)
-- [Licensed feature availability](licensed_feature_availability.md)
-- [Dealing with email/mailers](emails.md)
-- [Shell commands](shell_commands.md) in the GitLab codebase
-- [`Gemfile` guidelines](gemfile.md)
-- [Pry debugging](pry_debugging.md)
-- [Sidekiq debugging](../administration/troubleshooting/sidekiq.md)
-- [Accessing session data](session.md)
-- [Gotchas](gotchas.md) to avoid
-- [Avoid modules with instance variables](module_with_instance_variables.md), if
- possible
-- [How to dump production data to staging](db_dump.md)
-- [Working with the GitHub importer](github_importer.md)
-- [Import/Export development documentation](import_export.md)
-- [Test Import Project](import_project.md)
-- [Group migration](bulk_import.md)
-- [Elasticsearch integration docs](elasticsearch.md)
-- [Working with Merge Request diffs](diffs.md)
-- [Kubernetes integration guidelines](kubernetes.md)
-- [Permissions](permissions.md)
-- [Guidelines for reusing abstractions](reusing_abstractions.md)
-- [DeclarativePolicy framework](policies.md)
-- [How Git object deduplication works in GitLab](git_object_deduplication.md)
-- [Geo development](geo.md)
-- [Routing](routing.md)
-- [Repository mirroring](repository_mirroring.md)
-- [Git LFS](lfs.md)
-- [Developing against interacting components or features](interacting_components.md)
-- [File uploads](uploads.md)
-- [Auto DevOps development guide](auto_devops.md)
-- [Mass Inserting Models](mass_insert.md)
-- [Value Stream Analytics development guide](value_stream_analytics.md)
-- [Issue types vs first-class types](issue_types.md)
-- [Application limits](application_limits.md)
-- [Redis guidelines](redis.md)
-- [Rails initializers](rails_initializers.md)
-- [Code comments](code_comments.md)
-- [Renaming features](renaming_features.md)
-- [Windows Development on GCP](windows.md)
-- [Code Intelligence](code_intelligence/index.md)
-- [Approval Rules](approval_rules.md)
-- [Feature categorization](feature_categorization/index.md)
-- [Wikis development guide](wikis.md)
-- [Newlines style guide](newlines_styleguide.md)
-- [Image scaling guide](image_scaling.md)
-- [Export to CSV](export_csv.md)
-- [Cascading Settings](cascading_settings.md)
-- [FIPS compliance](fips_compliance.md)
-
-## Performance guides
-
-- [Instrumentation](instrumentation.md) for Ruby code running in production
- environments.
-- [Performance guidelines](performance.md) for writing code, benchmarks, and
- certain patterns to avoid.
-- [Merge request performance guidelines](merge_request_performance_guidelines.md)
- for ensuring merge requests do not negatively impact GitLab performance
-- [Profiling](profiling.md) a URL, measuring performance using Sherlock, or
- tracking down N+1 queries using Bullet.
-- [Cached queries guidelines](cached_queries.md), for tracking down N+1 queries
- masked by query caching, memory profiling and why should we avoid cached
- queries.
-
-## Database guides
-
-See [database guidelines](database/index.md).
-
-## Integration guides
-
-- [Jira Connect app](integrations/jira_connect.md)
-- [Security Scanners](integrations/secure.md)
-- [Secure Partner Integration](integrations/secure_partner_integration.md)
-- [How to run Jenkins in development environment](integrations/jenkins.md)
-- [How to run local `Codesandbox` integration for Web IDE Live Preview](integrations/codesandbox.md)
-
-## Testing guides
-
-- [Testing standards and style guidelines](testing_guide/index.md)
-- [Frontend testing standards and style guidelines](testing_guide/frontend_testing.md)
-
-## Refactoring guides
-
-- [Refactoring guidelines](refactoring_guide/index.md)
-
-## Deprecation guides
-
-- [Deprecation guidelines](deprecation_guidelines/index.md)
-
-## Documentation guides
-
-- [Writing documentation](documentation/index.md)
-- [Documentation style guide](documentation/styleguide/index.md)
-- [Markdown](../user/markdown.md)
-
-## Internationalization (i18n) guides
-
-- [Introduction](i18n/index.md)
-- [Externalization](i18n/externalization.md)
-- [Translation](i18n/translation.md)
-
-## Product Intelligence guides
-
-- [Product Intelligence guide](https://about.gitlab.com/handbook/product/product-intelligence-guide/)
-- [Usage Ping guide](usage_ping/index.md)
-- [Snowplow guide](snowplow/index.md)
-
-## Experiment guide
-
-- [Introduction](experiment_guide/index.md)
-
-## Build guides
-
-- [Building a package for testing purposes](build_test_package.md)
-
-## Compliance
-
-- [Licensing](licensing.md) for ensuring license compliance
-
-## Go guides
-
-- [Go Guidelines](go_guide/index.md)
-
-## Shell Scripting guides
-
-- [Shell scripting standards and style guidelines](shell_scripting_guide/index.md)
-
-## Domain-specific guides
-
-- [CI/CD development documentation](cicd/index.md)
-- [AppSec development documentation](appsec/index.md)
-
-## Other Development guides
-
-- [Defining relations between files using projections](projections.md)
-- [Reference processing](reference_processing.md)
-- [Compatibility with multiple versions of the application running at the same time](multi_version_compatibility.md)
-- [Features inside `.gitlab/`](features_inside_dot_gitlab.md)
-- [Dashboards for stage groups](stage_group_dashboards.md)
-- [Preventing transient bugs](transient/prevention-patterns.md)
-
-## Other GitLab Development Kit (GDK) guides
-
-- [Run full Auto DevOps cycle in a GDK instance](https://gitlab.com/gitlab-org/gitlab-development-kit/blob/main/doc/howto/auto_devops.md)
-- [Using GitLab Runner with the GDK](https://gitlab.com/gitlab-org/gitlab-development-kit/blob/main/doc/howto/runner.md)
-- [Using the Web IDE terminal with the GDK](https://gitlab.com/gitlab-org/gitlab-development-kit/-/blob/main/doc/howto/web_ide_terminal_gdk_setup.md)
+<!-- This redirect file can be deleted after 2021-09-28. -->
+<!-- Before deletion, see: https://docs.gitlab.com/ee/development/documentation/#move-or-rename-a-page -->
diff --git a/doc/development/agent/gitops.md b/doc/development/agent/gitops.md
index f183ba86aa1..3d59f5bd845 100644
--- a/doc/development/agent/gitops.md
+++ b/doc/development/agent/gitops.md
@@ -1,148 +1,9 @@
---
-stage: Configure
-group: Configure
-info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://about.gitlab.com/handbook/engineering/ux/technical-writing/#designated-technical-writers
+redirect_to: 'https://gitlab.com/gitlab-org/cluster-integration/gitlab-agent/-/blob/master/doc/gitops.md'
+remove_date: '2022-06-24'
---
-# GitOps with the Kubernetes Agent **(PREMIUM SELF)**
+This file was moved to [another location](https://gitlab.com/gitlab-org/cluster-integration/gitlab-agent/-/blob/master/doc/gitops.md).
-The [GitLab Kubernetes Agent](../../user/clusters/agent/index.md) supports the
-[pull-based version](https://www.gitops.tech/#pull-based-deployments) of
-[GitOps](https://www.gitops.tech/). To be useful, the feature must be able to perform these tasks:
-
-- Connect one or more Kubernetes clusters to a GitLab project or group.
-- Synchronize cluster-wide state from a Git repository.
-- Synchronize namespace-scoped state from a Git repository.
-- Control the following settings:
-
- - The kinds of objects an agent can manage.
- - Enabling the namespaced mode of operation for managing objects only in a specific namespace.
- - Enabling the non-namespaced mode of operation for managing objects in any namespace, and
- managing non-namespaced objects.
-
-- Synchronize state from one or more Git repositories into a cluster.
-- Configure multiple agents running in different clusters to synchronize state
- from the same repository.
-
-## GitOps architecture
-
-In this architecture, the Kubernetes cluster (`agentk`) periodically fetches
-configuration from (`kas`), spawning a goroutine for each configured GitOps
-repository. Each goroutine makes a streaming `GetObjectsToSynchronize()` gRPC call.
-`kas` accepts these requests, then checks if this agent is authorized to access
-this GitLab repository. If authorized, `kas` polls Gitaly for repository updates
-and sends the latest manifests to the agent.
-
-Before each poll, `kas` verifies with GitLab that the agent's token is still valid.
-When `agentk` receives an updated manifest, it performs a synchronization using
-[`gitops-engine`](https://github.com/argoproj/gitops-engine).
-
-If a repository is removed from the list, `agentk` stops the `GetObjectsToSynchronize()`
-calls to that repository.
-
-```mermaid
-graph TB
- agentk -- fetch configuration --> kas
- agentk -- fetch GitOps manifests --> kas
-
- subgraph "GitLab"
- kas[kas]
- GitLabRoR[GitLab RoR]
- Gitaly[Gitaly]
- kas -- poll GitOps repositories --> Gitaly
- kas -- authZ for agentk --> GitLabRoR
- kas -- fetch configuration --> Gitaly
- end
-
- subgraph "Kubernetes cluster"
- agentk[agentk]
- end
-```
-
-## Architecture considered but not implemented
-
-As part of the implementation process, this architecture was considered, but ultimately
-not implemented.
-
-In this architecture, `agentk` periodically fetches configuration from `kas`. For each
-configured GitOps repository, it spawns a goroutine. Each goroutine then spawns a
-copy of [`git-sync`](https://github.com/kubernetes/git-sync). It polls a particular
-repository and invokes a corresponding webhook on `agentk` when it changes. When that
-happens, `agentk` performs a synchronization using
-[`gitops-engine`](https://github.com/argoproj/gitops-engine).
-
-For repositories no longer in the list, `agentk` stops corresponding goroutines
-and `git-sync` copies, also deleting their cloned repositories from disk:
-
-```mermaid
-graph TB
- agentk -- fetch configuration --> kas
- git-sync -- poll GitOps repositories --> GitLabRoR
-
- subgraph "GitLab"
- kas[kas]
- GitLabRoR[GitLab RoR]
- kas -- authZ for agentk --> GitLabRoR
- kas -- fetch configuration --> Gitaly[Gitaly]
- end
-
- subgraph "Kubernetes cluster"
- agentk[agentk]
- git-sync[git-sync]
- agentk -- control --> git-sync
- git-sync -- notify about changes --> agentk
- end
-```
-
-## Comparing implemented and non-implemented architectures
-
-Both architectures attempt to answer the same question: how to grant an agent
-access to a non-public repository?
-
-In the **implemented** architecture:
-
-- Favorable: Fewer moving parts, as `git-sync` and `git` are not used, making this
- design more reliable.
-- Favorable: Uses existing connectivity and authentication mechanisms are used (gRPC + `agentk` token).
-- Favorable: No polling through external infrastructure. Saves traffic and avoids
- noise in access logs.
-
-In the **unimplemented** architecture:
-
-- Favorable: `agentk` uses `git-sync` to access repositories with standard protocols
- (either HTTPS, or SSH and Git) with accepted authentication and authorization methods.
-
- - Unfavorable: The user must put credentials into a `secret`. GitLab doesn't have
- a mechanism for per-repository tokens for robots.
- - Unfavorable: Rotating all credentials is more work than rotating a single `agentk` token.
-
-- Unfavorable: A dependency on an external component (`git-sync`) that can be avoided.
-- Unfavorable: More network traffic and connections than the implemented design
-
-### Ideas considered for the unimplemented design
-
-As part of the design process, these ideas were considered, and discarded:
-
-- Running `git-sync` and `gitops-engine` as part of `kas`.
-
- - Favorable: More code and infrastructure under our control for GitLab.com
- - Unfavorable: Running an arbitrary number of `git-sync` processes would require
- an unbounded amount of RAM and disk space.
- - Unfavorable: Unclear which `kas` replica is responsible for which agent and
- repository synchronization. If done as part of `agentk`, leader election can be
- done using [client-go](https://pkg.go.dev/k8s.io/client-go/tools/leaderelection?tab=doc).
-
-- Running `git-sync` and a "`gitops-engine` driver" helper program as a separate
- Kubernetes `Deployment`.
-
- - Favorable: Better isolation and higher resiliency. For example, if the node
- with `agentk` dies, not all synchronization stops.
- - Favorable: Each deployment has its own memory and disk limits.
- - Favorable: Per-repository synchronization identity (distinct `ServiceAccount`)
- can be implemented.
- - Unfavorable: Time consuming to implement properly:
-
- - Each `Deployment` needs CRUD (create, update, and delete) permissions.
- - Users may want to customize a `Deployment`, or add and remove satellite objects
- like `PodDisruptionBudget`, `HorizontalPodAutoscaler`, and `PodSecurityPolicy`.
- - Metrics, monitoring, logs for the `Deployment`.
+<!-- This redirect file can be deleted after <2022-06-24>. -->
+<!-- Before deletion, see: https://docs.gitlab.com/ee/development/documentation/#move-or-rename-a-page -->
diff --git a/doc/development/agent/identity.md b/doc/development/agent/identity.md
index 83af4318de9..67084a6d995 100644
--- a/doc/development/agent/identity.md
+++ b/doc/development/agent/identity.md
@@ -1,106 +1,9 @@
---
-stage: Configure
-group: Configure
-info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://about.gitlab.com/handbook/engineering/ux/technical-writing/#designated-technical-writers
+redirect_to: 'https://gitlab.com/gitlab-org/cluster-integration/gitlab-agent/-/blob/master/doc/identity_and_auth.md'
+remove_date: '2022-06-24'
---
-# Kubernetes Agent identity and authentication **(PREMIUM SELF)**
+This file was moved to [another location](https://gitlab.com/gitlab-org/cluster-integration/gitlab-agent/-/blob/master/doc/identity_and_auth.md).
-This page uses the word `agent` to describe the concept of the
-GitLab Kubernetes Agent. The program that implements the concept is called `agentk`.
-Read the
-[architecture page](https://gitlab.com/gitlab-org/cluster-integration/gitlab-agent/-/blob/master/doc/architecture.md)
-for more information.
-
-## Agent identity and name
-
-In a GitLab installation, each agent must have a unique, immutable name. This
-name must be unique in the project the agent is attached to, and this name must
-follow the [DNS label standard from RFC 1123](https://tools.ietf.org/html/rfc1123).
-The name must:
-
-- Contain at most 63 characters.
-- Contain only lowercase alphanumeric characters or `-`.
-- Start with an alphanumeric character.
-- End with an alphanumeric character.
-
-Kubernetes uses the
-[same naming restriction](https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#dns-label-names)
-for some names.
-
-The regex for names is: `/\A[a-z0-9]([-a-z0-9]*[a-z0-9])?\z/`.
-
-## Multiple agents in a cluster
-
-A Kubernetes cluster may have 0 or more agents running in it. Each agent likely
-has a different configuration. Some may enable features A and B, and some may
-enable features B and C. This flexibility enables different groups of people to
-use different features of the agent in the same cluster.
-
-For example, [Priyanka (Platform Engineer)](https://about.gitlab.com/handbook/marketing/strategic-marketing/roles-personas/#priyanka-platform-engineer)
-may want to use cluster-wide features of the agent, while
-[Sasha (Software Developer)](https://about.gitlab.com/handbook/marketing/strategic-marketing/roles-personas/#sasha-software-developer)
-uses the agent that only has access to a particular namespace.
-
-Each agent is likely running using a
-[`ServiceAccount`](https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/),
-a distinct Kubernetes identity, with a distinct set of permissions attached to it.
-These permissions enable the agent administrator to follow the
-[principle of least privilege](https://en.wikipedia.org/wiki/Principle_of_least_privilege)
-and minimize the permissions each particular agent needs.
-
-## Kubernetes Agent authentication
-
-When adding a new agent, GitLab provides the user with a bearer access token. The
-agent uses this token to authenticate with GitLab. This token is a random string
-and does not encode any information in it, but it is secret and must
-be treated with care. Store it as a `Secret` in Kubernetes.
-
-Each agent can have 0 or more tokens in a GitLab database. Having several valid
-tokens helps you rotate tokens without needing to re-register an agent. Each token
-record in the database has the following fields:
-
-- Agent identity it belongs to.
-- Token value. Encrypted at rest.
-- Creation time.
-- Who created it.
-- Revocation flag to mark token as revoked.
-- Revocation time.
-- Who revoked it.
-- A text field to store any comments the administrator may want to make about the token for future self.
-
-Tokens can be managed by users with `maintainer` and higher level of
-[permissions](../../user/permissions.md).
-
-Tokens are immutable, and only the following fields can be updated:
-
-- Revocation flag. Can only be updated to `true` once, but immutable after that.
-- Revocation time. Set to the current time when revocation flag is set, but immutable after that.
-- Comments field. Can be updated any number of times, including after the token has been revoked.
-
-The agent sends its token, along with each request, to GitLab to authenticate itself.
-For each request, GitLab checks the token's validity:
-
-- Does the token exist in the database?
-- Has the token been revoked?
-
-This information may be cached for some time to reduce load on the database.
-
-## Kubernetes Agent authorization
-
-GitLab provides the following information in its response for a given Agent access token:
-
-- Agent configuration Git repository. (The agent doesn't support per-folder authorization.)
-- Agent name.
-
-## Create an agent
-
-You can create an agent by following the [user documentation](../../user/clusters/agent/index.md#create-an-agent-record-in-gitlab), or via Rails console:
-
-```ruby
-project = ::Project.find_by_full_path("path-to/your-configuration-project")
-# agent-name should be the same as specified above in the config.yaml
-agent = ::Clusters::Agent.create(name: "<agent-name>", project: project)
-token = ::Clusters::AgentToken.create(agent: agent)
-token.token # this will print out the token you need to use on the next step
-```
+<!-- This redirect file can be deleted after <2022-06-24>. -->
+<!-- Before deletion, see: https://docs.gitlab.com/ee/development/documentation/#move-or-rename-a-page -->
diff --git a/doc/development/agent/index.md b/doc/development/agent/index.md
index 112162f8f90..2cb05e2dd8f 100644
--- a/doc/development/agent/index.md
+++ b/doc/development/agent/index.md
@@ -1,87 +1,9 @@
---
-stage: Configure
-group: Configure
-info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://about.gitlab.com/handbook/engineering/ux/technical-writing/#designated-technical-writers
+redirect_to: 'https://gitlab.com/gitlab-org/cluster-integration/gitlab-agent/-/blob/master/doc/architecture.md'
+remove_date: '2022-06-24'
---
-# Kubernetes Agent development **(PREMIUM SELF)**
+This file was moved to [another location](https://gitlab.com/gitlab-org/cluster-integration/gitlab-agent/-/blob/master/doc/architecture.md).
-This page contains developer-specific information about the GitLab Kubernetes Agent.
-[End-user documentation about the GitLab Kubernetes Agent](../../user/clusters/agent/index.md)
-is also available.
-
-The agent can help you perform tasks like these:
-
-- Integrate a cluster, located behind a firewall or NAT, with GitLab. To
- learn more, read [issue #212810, Invert the model GitLab.com uses for Kubernetes integration by leveraging long lived reverse tunnels](https://gitlab.com/gitlab-org/gitlab/-/issues/212810).
-- Access API endpoints in a cluster in real time. For an example use case, read
- [issue #218220, Allow Prometheus in K8s cluster to be installed manually](https://gitlab.com/gitlab-org/gitlab/-/issues/218220#note_348729266).
-- Enable real-time features by pushing information about events happening in a cluster.
- For example, you could build a cluster view dashboard to visualize changes in progress
- in a cluster. For more information about these efforts, read about the
- [Real-Time Working Group](https://about.gitlab.com/company/team/structure/working-groups/real-time/).
-- Enable a [cache of Kubernetes objects through informers](https://github.com/kubernetes/client-go/blob/ccd5becdffb7fd8006e31341baaaacd14db2dcb7/tools/cache/shared_informer.go#L34-L183),
- kept up-to-date with very low latency. This cache helps you:
-
- - Reduce or eliminate information propagation latency by avoiding Kubernetes API calls
- and polling, and only fetching data from an up-to-date cache.
- - Lower the load placed on the Kubernetes API by removing polling.
- - Eliminate any rate-limiting errors by removing polling.
- - Simplify backend code by replacing polling code with cache access. While it's another
- API call, no polling is needed. This example describes [fetching cached data synchronously from the front end](https://gitlab.com/gitlab-org/gitlab/-/issues/217792#note_348582537) instead of fetching data from the Kubernetes API.
-
-## Architecture of the Kubernetes Agent
-
-The GitLab Kubernetes Agent and the GitLab Kubernetes Agent Server use
-[bidirectional streaming](https://grpc.io/docs/what-is-grpc/core-concepts/#bidirectional-streaming-rpc)
-to allow the connection acceptor (the gRPC server, GitLab Kubernetes Agent Server) to
-act as a client. The connection acceptor sends requests as gRPC replies. The client-server
-relationship is inverted because the connection must be initiated from inside the
-Kubernetes cluster to bypass any firewall or NAT the cluster may be located behind.
-To learn more about this inversion, read
-[issue #212810](https://gitlab.com/gitlab-org/gitlab/-/issues/212810).
-
-This diagram describes how GitLab (`GitLab RoR`), the GitLab Kubernetes Agent (`agentk`), and the GitLab Kubernetes Agent Server (`kas`) work together.
-
-```mermaid
-graph TB
- agentk -- gRPC bidirectional streaming --> kas
-
- subgraph "GitLab"
- kas[kas]
- GitLabRoR[GitLab RoR] -- gRPC --> kas
- kas -- gRPC --> Gitaly[Gitaly]
- kas -- REST API --> GitLabRoR
- end
-
- subgraph "Kubernetes cluster"
- agentk[agentk]
- end
-```
-
-- `GitLab RoR` is the main GitLab application. It uses gRPC to talk to `kas`.
-- `agentk` is the GitLab Kubernetes Agent. It keeps a connection established to a
- `kas` instance, waiting for requests to process. It may also actively send information
- about things happening in the cluster.
-- `kas` is the GitLab Kubernetes Agent Server, and is responsible for:
- - Accepting requests from `agentk`.
- - [Authentication of requests](https://gitlab.com/gitlab-org/cluster-integration/gitlab-agent/-/blob/master/doc/identity_and_auth.md) from `agentk` by querying `GitLab RoR`.
- - Fetching agent's configuration from a corresponding Git repository by querying Gitaly.
- - Matching incoming requests from `GitLab RoR` with existing connections from
- the right `agentk`, forwarding requests to it and forwarding responses back.
- - (Optional) Sending notifications through ActionCable for events received from `agentk`.
- - Polling manifest repositories for [GitOps support](https://gitlab.com/gitlab-org/cluster-integration/gitlab-agent/-/blob/master/doc/gitops.md) by communicating with Gitaly.
-
-<i class="fa fa-youtube-play youtube" aria-hidden="true"></i>
-To learn more about how the repository is structured, see
-[GitLab Kubernetes Agent repository overview](https://www.youtube.com/watch?v=j8CyaCWroUY).
-
-## Guiding principles
-
-GitLab prefers to add logic into `kas` rather than `agentk`. `agentk` should be kept
-streamlined and small to minimize the need for upgrades. On GitLab.com, `kas` is
-managed by GitLab, so upgrades and features can be added without requiring you
-to upgrade `agentk` in your clusters.
-
-`agentk` can't be viewed as a dumb reverse proxy because features are planned to be built
-[on top of the cache with informers](https://github.com/kubernetes/client-go/blob/ccd5becdffb7fd8006e31341baaaacd14db2dcb7/tools/cache/shared_informer.go#L34-L183).
+<!-- This redirect file can be deleted after <2022-06-24>. -->
+<!-- Before deletion, see: https://docs.gitlab.com/ee/development/documentation/#move-or-rename-a-page -->
diff --git a/doc/development/agent/local.md b/doc/development/agent/local.md
index 50959b5c450..1fff5607de4 100644
--- a/doc/development/agent/local.md
+++ b/doc/development/agent/local.md
@@ -1,155 +1,9 @@
---
-stage: Configure
-group: Configure
-info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://about.gitlab.com/handbook/engineering/ux/technical-writing/#designated-technical-writers
+redirect_to: 'https://gitlab.com/gitlab-org/cluster-integration/gitlab-agent/-/blob/master/doc/local.md'
+remove_date: '2022-06-24'
---
-# Run the Kubernetes Agent locally **(PREMIUM SELF)**
+This file was moved to [another location](https://gitlab.com/gitlab-org/cluster-integration/gitlab-agent/-/blob/master/doc/local.md).
-You can run `kas` and `agentk` locally to test the [Kubernetes Agent](index.md) yourself.
-
-1. Create a `cfg.yaml` file from the contents of
- [`config_example.yaml`](https://gitlab.com/gitlab-org/cluster-integration/gitlab-agent/-/blob/master/pkg/kascfg/config_example.yaml), or this example:
-
- ```yaml
- agent:
- listen:
- network: tcp
- address: 127.0.0.1:8150
- websocket: false
- gitops:
- poll_period: "10s"
- gitlab:
- address: http://localhost:3000
- authentication_secret_file: /Users/tkuah/code/ee-gdk/gitlab/.gitlab_kas_secret
- ```
-
-1. Create a `token.txt`. This is the token for
- [the agent you created](../../user/clusters/agent/index.md#create-an-agent-record-in-gitlab). This file must not contain a newline character. You can create the file with this command:
-
- ```shell
- echo -n "<TOKEN>" > token.txt
- ```
-
-1. Start the binaries with the following commands:
-
- ```shell
- # Need GitLab to start
- gdk start
- # Stop GDK's version of kas
- gdk stop gitlab-k8s-agent
-
- # Start kas
- bazel run //cmd/kas -- --configuration-file="$(pwd)/cfg.yaml"
- ```
-
-1. In a new terminal window, run this command to start `agentk`:
-
- ```shell
- bazel run //cmd/agentk -- --kas-address=grpc://127.0.0.1:8150 --token-file="$(pwd)/token.txt"
- ```
-
-You can also inspect the
-[Makefile](https://gitlab.com/gitlab-org/cluster-integration/gitlab-agent/-/blob/master/Makefile)
-for more targets.
-
-<i class="fa fa-youtube-play youtube" aria-hidden="true"></i>
-To learn more about how the repository is structured, see
-[GitLab Kubernetes Agent repository overview](https://www.youtube.com/watch?v=j8CyaCWroUY).
-
-## Run tests locally
-
-You can run all tests, or a subset of tests, locally.
-
-- **To run all tests**: Run the command `make test`.
-- **To run all test targets in the directory**: Run the command
- `bazel test //internal/module/gitops/server:all`.
-
- You can use `*` in the command, instead of `all`, but it must be quoted to
- avoid shell expansion: `bazel test '//internal/module/gitops/server:*'`.
-- **To run all tests in a directory and its subdirectories**: Run the command
- `bazel test //internal/module/gitops/server/...`.
-
-### Run specific test scenarios
-
-To run only a specific test scenario, you need the directory name and the target
-name of the test. For example, to run the tests at
-`internal/module/gitops/server/module_test.go`, the `BUILD.bazel` file that
-defines the test's target name lives at `internal/module/gitops/server/BUILD.bazel`.
-In the latter, the target name is defined like:
-
-```bazel
-go_test(
- name = "server_test",
- size = "small",
- srcs = [
- "module_test.go",
-```
-
-The target name is `server_test` and the directory is `internal/module/gitops/server/`.
-Run the test scenario with this command:
-
-```shell
-bazel test //internal/module/gitops/server:server_test
-```
-
-### Additional resources
-
-- Bazel documentation about [specifying targets to build](https://docs.bazel.build/versions/master/guide.html#specifying-targets-to-build).
-- [The Bazel query](https://docs.bazel.build/versions/master/query.html)
-- [Bazel query how to](https://docs.bazel.build/versions/master/query-how-to.html)
-
-## KAS QA tests
-
-This section describes how to run KAS tests against different GitLab environments based on the
-[GitLab QA orchestrator](https://gitlab.com/gitlab-org/gitlab-qa).
-
-### Status
-
-The `kas` QA tests currently have some limitations. You can run them manually on GDK, but they don't
-run automatically with the nightly jobs against the live environment. See the section below
-to learn how to run them against different environments.
-
-### Prepare
-
-Before performing any of these tests, if you have a `k3s` instance running, make sure to
-stop it manually before running them. Otherwise, the tests might fail with the message
-`failed to remove k3s cluster`.
-
-You might need to specify the correct Agent image version that matches the `kas` image version. You can use the `GITLAB_AGENTK_VERSION` local environment for this.
-
-### Against `staging`
-
-1. Go to your local `qa/qa/service/cluster_provider/k3s.rb` and comment out
- [this line](https://gitlab.com/gitlab-org/gitlab/-/blob/5b15540ea78298a106150c3a1d6ed26416109b9d/qa/qa/service/cluster_provider/k3s.rb#L8) and
- [this line](https://gitlab.com/gitlab-org/gitlab/-/blob/5b15540ea78298a106150c3a1d6ed26416109b9d/qa/qa/service/cluster_provider/k3s.rb#L36).
- We don't allow local connections on `staging` as they require an admin user.
-1. Ensure you don't have an `EE_LICENSE` environment variable set as this would force an admin login.
-1. Go to your GDK root folder and `cd gitlab/qa`.
-1. Login with your user in staging and create a group to be used as sandbox.
- Something like: `username-qa-sandbox`.
-1. Create an access token for your user with the `api` permission.
-1. Replace the values given below with your own and run:
-
- ```shell
- GITLAB_SANDBOX_NAME="<THE GROUP ID YOU CREATED ON STEP 2>" \
- GITLAB_QA_ACCESS_TOKEN="<THE ACCESS TOKEN YOU CREATED ON STEP 3>" \
- GITLAB_USERNAME="<YOUR STAGING USERNAME>" \
- GITLAB_PASSWORD="<YOUR STAGING PASSWORD>" \
- bundle exec bin/qa Test::Instance::All https://staging.gitlab.com -- --tag quarantine qa/specs/features/ee/api/7_configure/kubernetes/kubernetes_agent_spec.rb
- ```
-
-### Against GDK
-
-1. Go to your `qa/qa/fixtures/kubernetes_agent/agentk-manifest.yaml.erb` and comment out [this line](https://gitlab.com/gitlab-org/gitlab/-/blob/a55b78532cfd29426cf4e5b4edda81407da9d449/qa/qa/fixtures/kubernetes_agent/agentk-manifest.yaml.erb#L27) and uncomment [this line](https://gitlab.com/gitlab-org/gitlab/-/blob/a55b78532cfd29426cf4e5b4edda81407da9d449/qa/qa/fixtures/kubernetes_agent/agentk-manifest.yaml.erb#L28).
- GDK's `kas` listens on `grpc`, not on `wss`.
-1. Go to the GDK's root folder and `cd gitlab/qa`.
-1. On the contrary to staging, run the QA test in GDK as admin, which is the default choice. To do so, use the default sandbox group and run the command below. Make sure to adjust your credentials if necessary, otherwise, the test might fail:
-
- ```shell
- GITLAB_USERNAME=root \
- GITLAB_PASSWORD="5iveL\!fe" \
- GITLAB_ADMIN_USERNAME=root \
- GITLAB_ADMIN_PASSWORD="5iveL\!fe" \
- bundle exec bin/qa Test::Instance::All http://gdk.test:3000 -- --tag quarantine qa/specs/features/ee/api/7_configure/kubernetes/kubernetes_agent_spec.rb
- ```
+<!-- This redirect file can be deleted after <2022-06-24>. -->
+<!-- Before deletion, see: https://docs.gitlab.com/ee/development/documentation/#move-or-rename-a-page -->
diff --git a/doc/development/agent/repository_overview.md b/doc/development/agent/repository_overview.md
index b9eea286a3e..43ea99889c5 100644
--- a/doc/development/agent/repository_overview.md
+++ b/doc/development/agent/repository_overview.md
@@ -1,98 +1,9 @@
---
-stage: Configure
-group: Configure
-info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://about.gitlab.com/handbook/engineering/ux/technical-writing/#designated-technical-writers
+redirect_to: 'https://gitlab.com/gitlab-org/cluster-integration/gitlab-agent/-/blob/master/doc/repository_overview.md'
+remove_date: '2022-06-24'
---
-# Kubernetes Agent repository overview **(PREMIUM SELF)**
+This file was moved to [another location](https://gitlab.com/gitlab-org/cluster-integration/gitlab-agent/-/blob/master/doc/repository_overview.md).
-This page describes the subfolders of the Kubernetes Agent repository.
-[Development information](index.md) and
-[end-user documentation](../../user/clusters/agent/index.md) are both available.
-
-<i class="fa fa-youtube-play youtube" aria-hidden="true"></i>
-For a video overview, see
-[GitLab Kubernetes Agent repository overview](https://www.youtube.com/watch?v=j8CyaCWroUY).
-
-## `build`
-
-Various files for the build process.
-
-### `build/deployment`
-
-A [`kpt`](https://googlecontainertools.github.io/kpt/) package that bundles some
-[Kustomize](https://kustomize.io/) layers and components. Can be used as-is, or
-to create a custom package to install `agentk`.
-
-## `cmd`
-
-Commands are binaries that this repository produces. They are:
-
-- `kas` is the GitLab Kubernetes Agent Server binary.
-- `agentk` is the GitLab Kubernetes Agent binary.
-
-Each of these directories contain application bootstrap code for:
-
-- Reading configuration.
-- Applying defaults to it.
-- Constructing the dependency graph of objects that constitute the program.
-- Running it.
-
-### `cmd/agentk`
-
-- `agentk` initialization logic.
-- Implementation of the agent modules API.
-
-### `cmd/kas`
-
-- `kas` initialization logic.
-- Implementation of the server modules API.
-
-## `examples`
-
-Git submodules for the example projects.
-
-## `internal`
-
-The main code of both `gitlab-kas` and `agentk`, and various supporting building blocks.
-
-### `internal/api`
-
-Structs that represent some important pieces of data.
-
-### `internal/gitaly`
-
-Items to work with [Gitaly](../../administration/gitaly/index.md).
-
-### `internal/gitlab`
-
-GitLab REST client.
-
-### `internal/module`
-
-Modules that implement server and agent-side functionality.
-
-### `internal/tool`
-
-Various building blocks. `internal/tool/testing` contains mocks and helpers
-for testing. Mocks are generated with [`gomock`](https://pkg.go.dev/github.com/golang/mock).
-
-## `it`
-
-Contains scaffolding for integration tests. Unused at the moment.
-
-## `pkg`
-
-Contains exported packages.
-
-### `pkg/agentcfg`
-
-Contains protobuf definitions of the `agentk` configuration file. Used to configure
-the agent through a configuration repository.
-
-### `pkg/kascfg`
-
-Contains protobuf definitions of the `gitlab-kas` configuration file. Contains an
-example of that configuration file along with the test for it. The test ensures
-the configuration file example is in sync with the protobuf definitions of the
-file and defaults, which are applied when the file is loaded.
+<!-- This redirect file can be deleted after <2022-06-24>. -->
+<!-- Before deletion, see: https://docs.gitlab.com/ee/development/documentation/#move-or-rename-a-page -->
diff --git a/doc/development/agent/routing.md b/doc/development/agent/routing.md
index 9a7d6422d47..7792d6d56a4 100644
--- a/doc/development/agent/routing.md
+++ b/doc/development/agent/routing.md
@@ -1,230 +1,9 @@
---
-stage: Configure
-group: Configure
-info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://about.gitlab.com/handbook/engineering/ux/technical-writing/#designated-technical-writers
+redirect_to: 'https://gitlab.com/gitlab-org/cluster-integration/gitlab-agent/-/blob/master/doc/kas_request_routing.md'
+remove_date: '2022-06-24'
---
-# Routing `kas` requests in the Kubernetes Agent **(PREMIUM SELF)**
+This file was moved to [another location](https://gitlab.com/gitlab-org/cluster-integration/gitlab-agent/-/blob/master/doc/kas_request_routing.md).
-This document describes how `kas` routes requests to concrete `agentk` instances.
-GitLab must talk to GitLab Kubernetes Agent Server (`kas`) to:
-
-- Get information about connected agents. [Read more](https://gitlab.com/gitlab-org/gitlab/-/issues/249560).
-- Interact with agents. [Read more](https://gitlab.com/gitlab-org/gitlab/-/issues/230571).
-- Interact with Kubernetes clusters. [Read more](https://gitlab.com/gitlab-org/gitlab/-/issues/240918).
-
-Each agent connects to an instance of `kas` and keeps an open connection. When
-GitLab must talk to a particular agent, a `kas` instance connected to this agent must
-be found, and the request routed to it.
-
-## System design
-
-For an architecture overview please see
-[architecture.md](https://gitlab.com/gitlab-org/cluster-integration/gitlab-agent/-/blob/master/doc/architecture.md).
-
-```mermaid
-flowchart LR
- subgraph "Kubernetes 1"
- agentk1p1["agentk 1, Pod1"]
- agentk1p2["agentk 1, Pod2"]
- end
-
- subgraph "Kubernetes 2"
- agentk2p1["agentk 2, Pod1"]
- end
-
- subgraph "Kubernetes 3"
- agentk3p1["agentk 3, Pod1"]
- end
-
- subgraph kas
- kas1["kas 1"]
- kas2["kas 2"]
- kas3["kas 3"]
- end
-
- GitLab["GitLab Rails"]
- Redis
-
- GitLab -- "gRPC to any kas" --> kas
- kas1 -- register connected agents --> Redis
- kas2 -- register connected agents --> Redis
- kas1 -- lookup agent --> Redis
-
- agentk1p1 -- "gRPC" --> kas1
- agentk1p2 -- "gRPC" --> kas2
- agentk2p1 -- "gRPC" --> kas1
- agentk3p1 -- "gRPC" --> kas2
-```
-
-For this architecture, this diagram shows a request to `agentk 3, Pod1` for the list of pods:
-
-```mermaid
-sequenceDiagram
- GitLab->>+kas1: Get list of running<br />Pods from agentk<br />with agent_id=3
- Note right of kas1: kas1 checks for<br />agent connected with agent_id=3.<br />It does not.<br />Queries Redis
- kas1->>+Redis: Get list of connected agents<br />with agent_id=3
- Redis-->-kas1: List of connected agents<br />with agent_id=3
- Note right of kas1: kas1 picks a specific agentk instance<br />to address and talks to<br />the corresponding kas instance,<br />specifying which agentk instance<br />to route the request to.
- kas1->>+kas2: Get the list of running Pods<br />from agentk 3, Pod1
- kas2->>+agentk 3 Pod1: Get list of Pods
- agentk 3 Pod1->>-kas2: Get list of Pods
- kas2-->>-kas1: List of running Pods<br />from agentk 3, Pod1
- kas1-->>-GitLab: List of running Pods<br />from agentk with agent_id=3
-```
-
-Each `kas` instance tracks the agents connected to it in Redis. For each agent, it
-stores a serialized protobuf object with information about the agent. When an agent
-disconnects, `kas` removes all corresponding information from Redis. For both events,
-`kas` publishes a notification to a Redis [pub-sub channel](https://redis.io/topics/pubsub).
-
-Each agent, while logically a single entity, can have multiple replicas (multiple pods)
-in a cluster. `kas` accommodates that and records per-replica (generally per-connection)
-information. Each open `GetConfiguration()` streaming request is given
-a unique identifier which, combined with agent ID, identifies an `agentk` instance.
-
-gRPC can keep multiple TCP connections open for a single target host. `agentk` only
-runs one `GetConfiguration()` streaming request. `kas` uses that connection, and
-doesn't see idle TCP connections because they are handled by the gRPC framework.
-
-Each `kas` instance provides information to Redis, so other `kas` instances can discover and access it.
-
-Information is stored in Redis with an [expiration time](https://redis.io/commands/expire),
-to expire information for `kas` instances that become unavailable. To prevent
-information from expiring too quickly, `kas` periodically updates the expiration time
-for valid entries. Before terminating, `kas` cleans up the information it adds into Redis.
-
-When `kas` must atomically update multiple data structures in Redis, it uses
-[transactions](https://redis.io/topics/transactions) to ensure data consistency.
-Grouped data items must have the same expiration time.
-
-In addition to the existing `agentk -> kas` gRPC endpoint, `kas` exposes two new,
-separate gRPC endpoints for GitLab and for `kas -> kas` requests. Each endpoint
-is a separate network listener, making it easier to control network access to endpoints
-and allowing separate configuration for each endpoint.
-
-Databases, like PostgreSQL, aren't used because the data is transient, with no need
-to reliably persist it.
-
-### `GitLab : kas` external endpoint
-
-GitLab authenticates with `kas` using JWT and the same shared secret used by the
-`kas -> GitLab` communication. The JWT issuer should be `gitlab` and the audience
-should be `gitlab-kas`.
-
-When accessed through this endpoint, `kas` plays the role of request router.
-
-If a request from GitLab comes but no connected agent can handle it, `kas` blocks
-and waits for a suitable agent to connect to it or to another `kas` instance. It
-stops waiting when the client disconnects, or when some long timeout happens, such
-as client timeout. `kas` is notified of new agent connections through a
-[pub-sub channel](https://redis.io/topics/pubsub) to avoid frequent polling.
-When a suitable agent connects, `kas` routes the request to it.
-
-### `kas : kas` internal endpoint
-
-This endpoint is an implementation detail, an internal API, and should not be used
-by any other system. It's protected by JWT using a secret, shared among all `kas`
-instances. No other system must have access to this secret.
-
-When accessed through this endpoint, `kas` uses the request itself to determine
-which `agentk` to send the request to. It prevents request cycles by only following
-the instructions in the request, rather than doing discovery. It's the responsibility
-of the `kas` receiving the request from the _external_ endpoint to retry and re-route
-requests. This method ensures a single central component for each request can determine
-how a request is routed, rather than distributing the decision across several `kas` instances.
-
-### Reverse gRPC tunnel
-
-This section explains how the `agentk` -> `kas` reverse gRPC tunnel is implemented.
-
-<i class="fa fa-youtube-play youtube" aria-hidden="true"></i>
-For a video overview of how some of the blocks map to code, see
-[GitLab Kubernetes Agent reverse gRPC tunnel architecture and code overview
-](https://www.youtube.com/watch?v=9pnQF76hyZc).
-
-#### High level schema
-
-In this example, `Server side of module A` exposes its API to get the `Pod` list
-on the `Public API gRPC server`. When it receives a request, it must determine
-the agent ID from it, then call the proxying code which forwards the request to
-a suitable `agentk` that can handle it.
-
-The `Agent side of module A` exposes the same API on the `Internal gRPC server`.
-When it receives the request, it needs to handle it (such as retrieving and returning
-the `Pod` list).
-
-This schema describes how reverse tunneling is handled fully transparently
-for modules, so you can add new features:
-
-```mermaid
-graph TB
- subgraph kas
- server-internal-grpc-server[Internal gRPC server]
- server-api-grpc-server[Public API gRPC server]
- server-module-a[Server side of module A]
- server-module-b[Server side of module B]
- end
- subgraph agentk
- agent-internal-grpc-server[Internal gRPC server]
- agent-module-a[Agent side of module A]
- agent-module-b[Agent side of module B]
- end
-
- agent-internal-grpc-server -- request --> agent-module-a
- agent-internal-grpc-server -- request --> agent-module-b
-
- server-module-a-. expose API on .-> server-internal-grpc-server
- server-module-b-. expose API on .-> server-api-grpc-server
-
- server-internal-grpc-server -- proxy request --> agent-internal-grpc-server
- server-api-grpc-server -- proxy request --> agent-internal-grpc-server
-```
-
-#### Implementation schema
-
-`HandleTunnelConnection()` is called with the server-side interface of the reverse
-tunnel. It registers the connection and blocks, waiting for a request to proxy
-through the connection.
-
-`HandleIncomingConnection()` is called with the server-side interface of the incoming
-connection. It registers the connection and blocks, waiting for a matching tunnel
-to proxy the connection through.
-
-After it has two connections that match, `Connection registry` starts bi-directional
-data streaming:
-
-```mermaid
-graph TB
- subgraph kas
- server-tunnel-module[Server tunnel module]
- connection-registry[Connection registry]
- server-internal-grpc-server[Internal gRPC server]
- server-api-grpc-server[Public API gRPC server]
- server-module-a[Server side of module A]
- server-module-b[Server side of module B]
- end
- subgraph agentk
- agent-internal-grpc-server[Internal gRPC server]
- agent-tunnel-module[Agent tunnel module]
- agent-module-a[Agent side of module A]
- agent-module-b[Agent side of module B]
- end
-
- server-tunnel-module -- "HandleTunnelConnection()" --> connection-registry
- server-internal-grpc-server -- "HandleIncomingConnection()" --> connection-registry
- server-api-grpc-server -- "HandleIncomingConnection()" --> connection-registry
- server-module-a-. expose API on .-> server-internal-grpc-server
- server-module-b-. expose API on .-> server-api-grpc-server
-
- agent-tunnel-module -- "establish tunnel, receive request" --> server-tunnel-module
- agent-tunnel-module -- make request --> agent-internal-grpc-server
- agent-internal-grpc-server -- request --> agent-module-a
- agent-internal-grpc-server -- request --> agent-module-b
-```
-
-### API definitions
-
-- [`agent_tracker/agent_tracker.proto`](https://gitlab.com/gitlab-org/cluster-integration/gitlab-agent/-/blob/master/internal/module/agent_tracker/agent_tracker.proto)
-- [`agent_tracker/rpc/rpc.proto`](https://gitlab.com/gitlab-org/cluster-integration/gitlab-agent/-/blob/master/internal/module/agent_tracker/rpc/rpc.proto)
-- [`reverse_tunnel/rpc/rpc.proto`](https://gitlab.com/gitlab-org/cluster-integration/gitlab-agent/-/blob/master/internal/module/reverse_tunnel/rpc/rpc.proto)
+<!-- This redirect file can be deleted after <2022-06-24>. -->
+<!-- Before deletion, see: https://docs.gitlab.com/ee/development/documentation/#move-or-rename-a-page -->
diff --git a/doc/development/agent/user_stories.md b/doc/development/agent/user_stories.md
index ab135cad9d3..ce38064b31b 100644
--- a/doc/development/agent/user_stories.md
+++ b/doc/development/agent/user_stories.md
@@ -1,77 +1,9 @@
---
-stage: Configure
-group: Configure
-info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://about.gitlab.com/handbook/engineering/ux/technical-writing/#designated-technical-writers
+redirect_to: 'https://gitlab.com/gitlab-org/cluster-integration/gitlab-agent/-/blob/master/doc/user_stories.md'
+remove_date: '2022-06-24'
---
-# Kubernetes Agent user stories **(PREMIUM SELF)**
+This file was moved to [another location](https://gitlab.com/gitlab-org/cluster-integration/gitlab-agent/-/blob/master/doc/user_stories.md).
-The [personas in action](https://about.gitlab.com/handbook/marketing/strategic-marketing/roles-personas/#user-personas)
-for the Kubernetes Agent are:
-
-- [Sasha, the Software Developer](https://about.gitlab.com/handbook/marketing/strategic-marketing/roles-personas/#sasha-software-developer).
-- [Allison, the Application Operator](https://about.gitlab.com/handbook/marketing/strategic-marketing/roles-personas/#allison-application-ops).
-- [Priyanka, the Platform Engineer](https://about.gitlab.com/handbook/marketing/strategic-marketing/roles-personas/#priyanka-platform-engineer).
-
-[Devon, the DevOps engineer](https://about.gitlab.com/handbook/marketing/strategic-marketing/roles-personas/#devon-devops-engineer)
-is intentionally excluded here, as DevOps is more of a role than a persona.
-
-There are various workflows to support, so some user stories might seem to contradict each other. They don't.
-
-## Software Developer user stories
-
-<!-- vale gitlab.FirstPerson = NO -->
-
-- As a Software Developer, I want to push my code, and move to the next development task,
- to work on business applications.
-- As a Software Developer, I want to set necessary dependencies and resource requirements
- together with my application code, so my code runs fine after deployment.
-
-<!-- vale gitlab.FirstPerson = YES -->
-
-## Application Operator user stories
-
-<!-- vale gitlab.FirstPerson = NO -->
-
-- As an Application Operator, I want to standardize the deployments used by my teams,
- so I can support all teams with minimal effort.
-- As an Application Operator, I want to have a single place to define all the deployments,
- so I can assure security fixes are applied everywhere.
-- As an Application Operator, I want to offer a set of predefined templates to
- Software Developers, so they can get started quickly and can deploy to production
- without my intervention, and I am not a bottleneck.
-- As an Application Operator, I want to know exactly what changes are being deployed,
- so I can fulfill my SLAs.
-- As an Application Operator, I want deep insights into what versions of my applications
- are running and want to be able to debug them, so I can fix operational issues.
-- As an Application Operator, I want application code to be automatically deployed
- to staging environments when new versions are available.
-- As an Application Operator, I want to follow my preferred deployment strategy,
- so I can move code into production in a reliable way.
-- As an Application Operator, I want review all code before it's deployed into production,
- so I can fulfill my SLAs.
-- As an Application Operator, I want to be notified before deployment when new code needs my attention,
- so I can review it swiftly.
-
-<!-- vale gitlab.FirstPerson = YES -->
-
-## Platform Engineer user stories
-
-<!-- vale gitlab.FirstPerson = NO -->
-
-- As a Platform Engineer, I want to restrict customizations to preselected values
- for Operators, so I can fulfill my SLAs.
-- As a Platform Engineer, I want to allow some level of customization to Operators,
- so I don't become a bottleneck.
-- As a Platform Engineer, I want to define all deployments in a single place, so
- I can assure security fixes are applied everywhere.
-- As a Platform Engineer, I want to define the infrastructure by code, so my
- infrastructure management is testable, reproducible, traceable, and scalable.
-- As a Platform Engineer, I want to define various policies that applications must
- follow, so that I can fulfill my SLAs.
-- As a Platform Engineer, I want approved tooling for log management and persistent storage,
- so I can scale, secure, and manage them as needed.
-- As a Platform Engineer, I want to be alerted when my infrastructure differs from
- its definition, so I can make sure that everything is configured as expected.
-
-<!-- vale gitlab.FirstPerson = YES -->
+<!-- This redirect file can be deleted after <2022-06-24>. -->
+<!-- Before deletion, see: https://docs.gitlab.com/ee/development/documentation/#move-or-rename-a-page -->
diff --git a/doc/development/api_graphql_styleguide.md b/doc/development/api_graphql_styleguide.md
index 4d521d11a69..c12b66a94a7 100644
--- a/doc/development/api_graphql_styleguide.md
+++ b/doc/development/api_graphql_styleguide.md
@@ -22,7 +22,7 @@ which is exposed as an API endpoint at `/api/graphql`.
## Deep Dive
In March 2019, Nick Thomas hosted a Deep Dive (GitLab team members only: `https://gitlab.com/gitlab-org/create-stage/issues/1`)
-on the GitLab [GraphQL API](../api/graphql/index.md) to share his domain specific knowledge
+on the GitLab [GraphQL API](../api/graphql/index.md) to share domain-specific knowledge
with anyone who may work in this part of the codebase in the future. You can find the
<i class="fa fa-youtube-play youtube" aria-hidden="true"></i>
[recording on YouTube](https://www.youtube.com/watch?v=-9L_1MWrjkg), and the slides on
@@ -68,9 +68,7 @@ Complexity is explained [on our client-facing API page](../api/graphql/index.md#
Fields default to adding `1` to a query's complexity score, but developers can
[specify a custom complexity](#field-complexity) when defining a field.
-To estimate the complexity of a query, you can run the
-[`gitlab:graphql:analyze`](rake_tasks.md#analyze-graphql-queries)
-Rake task.
+The complexity score of a query [can itself be queried for](../api/graphql/getting_started.md#query-complexity).
### Request timeout
@@ -83,7 +81,7 @@ developers must familiarize themselves with our [Deprecation and Removal process
Breaking changes are:
-- Removing or renaming a field, argument, enum value or mutation.
+- Removing or renaming a field, argument, enum value, or mutation.
- Changing the type of a field, argument or enum value.
- Raising the [complexity](#max-complexity) of a field or complexity multipliers in a resolver.
- Changing a field from being _not_ nullable (`null: false`) to nullable (`null: true`), as
@@ -96,7 +94,7 @@ discussed in [Nullable fields](#nullable-fields).
Fields that use the [`feature_flag` property](#feature_flag-property) and the flag is disabled by default are exempt
from the deprecation process, and can be removed at any time without notice.
-See the [deprecating fields and enum values](#deprecating-fields-arguments-and-enum-values) section for how to deprecate items.
+See the [deprecating fields, arguments, and enum values](#deprecating-fields-arguments-and-enum-values) section for how to deprecate items.
## Global IDs
@@ -110,6 +108,7 @@ See also:
- [Exposing Global IDs](#exposing-global-ids).
- [Mutation arguments](#object-identifier-arguments).
+- [Deprecating Global IDs](#deprecate-global-ids).
We have a custom scalar type (`Types::GlobalIDType`) which should be used as the
type of input and output arguments when the value is a `GlobalID`. The benefits
@@ -117,12 +116,12 @@ of using this type instead of `ID` are:
- it validates that the value is a `GlobalID`
- it parses it into a `GlobalID` before passing it to user code
-- it can be parameterized on the type of the object (e.g.
+- it can be parameterized on the type of the object (for example,
`GlobalIDType[Project]`) which offers even better validation and security.
Consider using this type for all new arguments and result types. Remember that
it is perfectly possible to parameterize this type with a concern or a
-supertype, if you want to accept a wider range of objects (e.g.
+supertype, if you want to accept a wider range of objects (such as
`GlobalIDType[Issuable]` vs `GlobalIDType[Issue]`).
## Types
@@ -206,7 +205,7 @@ Further reading:
- [GraphQL Best Practices Guide](https://graphql.org/learn/best-practices/#nullability).
- GraphQL documentation on [Object types and fields](https://graphql.org/learn/schema/#object-types-and-fields).
- [GraphQL Best Practices Guide](https://graphql.org/learn/best-practices/#nullability)
-- [Using nullability in GraphQL](https://www.apollographql.com/blog/using-nullability-in-graphql-2254f84c4ed7)
+- [Using nullability in GraphQL](https://www.apollographql.com/blog/graphql/basics/using-nullability-in-graphql/)
### Exposing Global IDs
@@ -341,7 +340,7 @@ For example, instead of `latest_pipeline`, use `pipelines(last: 1)`.
By default, the API returns at most a maximum number of records defined in
[`app/graphql/gitlab_schema.rb`](https://gitlab.com/gitlab-org/gitlab/-/blob/master/app/graphql/gitlab_schema.rb)
-per page within a connection and this will also be the default number of records
+per page in a connection and this is also the default number of records
returned per page if no limiting arguments (`first:` or `last:`) are provided by a client.
The `max_page_size` argument can be used to specify a different page size limit
@@ -369,7 +368,7 @@ Complexity is described in [our client documentation](../api/graphql/index.md#ma
Complexity limits are defined in [`app/graphql/gitlab_schema.rb`](https://gitlab.com/gitlab-org/gitlab/-/blob/master/app/graphql/gitlab_schema.rb).
-By default, fields will add `1` to a query's complexity score. This can be overridden by
+By default, fields add `1` to a query's complexity score. This can be overridden by
[providing a custom `complexity`](https://graphql-ruby.org/queries/complexity_and_depth.html) value for a field.
Developers should specify higher complexity for fields that cause more _work_ to be performed
@@ -390,7 +389,7 @@ field :blob, type: Types::Snippets::BlobType,
calls_gitaly: true
```
-This will increment the [`complexity` score](#field-complexity) of the field by `1`.
+This increments the [`complexity` score](#field-complexity) of the field by `1`.
If a resolver calls Gitaly, it can be annotated with
`BaseResolver.calls_gitaly!`. This passes `calls_gitaly: true` to any
@@ -480,7 +479,7 @@ You can refer to these guidelines to decide which approach to use:
The `feature_flag` property allows you to toggle the field's
[visibility](https://graphql-ruby.org/authorization/visibility.html)
-within the GraphQL schema. This removes the field from the schema
+in the GraphQL schema. This removes the field from the schema
when the flag is disabled.
A description is [appended](https://gitlab.com/gitlab-org/gitlab/-/blob/497b556/app/graphql/types/base_field.rb#L44-53)
@@ -595,6 +594,103 @@ end
If the field, argument, or enum value being deprecated is not being replaced,
a descriptive deprecation `reason` should be given.
+### Deprecate Global IDs
+
+We use the [`rails/globalid`](https://github.com/rails/globalid) gem to generate and parse
+Global IDs, so as such they are coupled to model names. When we rename a
+model, its Global ID changes.
+
+If the Global ID is used as an _argument_ type anywhere in the schema, then the Global ID
+change would normally constitute a breaking change.
+
+To continue to support clients using the old Global ID argument, we add a deprecation
+to `Gitlab::GlobalId::Deprecations`.
+
+NOTE:
+If the Global ID is _only_ [exposed as a field](#exposing-global-ids) then we do not need to
+deprecate it. We consider the change to the way a Global ID is expressed in a field to be
+backwards-compatible. We expect that clients don't parse these values: they are meant to
+be treated as opaque tokens, and any structure in them is incidental and not to be relied on.
+
+**Example scenario:**
+
+This example scenario is based on this [merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/62645).
+
+A model named `PrometheusService` is to be renamed `Integrations::Prometheus`. The old model
+name is used to create a Global ID type that is used as an argument for a mutation:
+
+```ruby
+# Mutations::UpdatePrometheus:
+
+argument :id, Types::GlobalIDType[::PrometheusService],
+ required: true,
+ description: "The ID of the integration to mutate."
+```
+
+Clients call the mutation by passing a Global ID string that looks like
+`"gid://gitlab/PrometheusService/1"`, named as `PrometheusServiceID`, as the `input.id` argument:
+
+```graphql
+mutation updatePrometheus($id: PrometheusServiceID!, $active: Boolean!) {
+ prometheusIntegrationUpdate(input: { id: $id, active: $active }) {
+ errors
+ integration {
+ active
+ }
+ }
+}
+```
+
+We rename the model to `Integrations::Prometheus`, and then update the codebase with the new name.
+When we come to update the mutation, we pass the renamed model to `Types::GlobalIDType[]`:
+
+```ruby
+# Mutations::UpdatePrometheus:
+
+argument :id, Types::GlobalIDType[::Integrations::Prometheus],
+ required: true,
+ description: "The ID of the integration to mutate."
+```
+
+This would cause a breaking change to the mutation, as the API now rejects clients who
+pass an `id` argument as `"gid://gitlab/PrometheusService/1"`, or that specify the argument
+type as `PrometheusServiceID` in the query signature.
+
+To allow clients to continue to interact with the mutation unchanged, edit the `DEPRECATIONS` constant in
+`Gitlab::GlobalId::Deprecations` and add a new `Deprecation` to the array:
+
+```ruby
+DEPRECATIONS = [
+ Deprecation.new(old_model_name: 'PrometheusService', new_model_name: 'Integrations::Prometheus', milestone: '14.0')
+].freeze
+```
+
+Then follow our regular [deprecation process](../api/graphql/index.md#deprecation-and-removal-process). To later remove
+support for the former argument style, remove the `Deprecation`:
+
+```ruby
+DEPRECATIONS = [].freeze
+```
+
+During the deprecation period the API will accept either of these formats for the argument value:
+
+- `"gid://gitlab/PrometheusService/1"`
+- `"gid://gitlab/Integrations::Prometheus/1"`
+
+The API will also accept these types in the query signature for the argument:
+
+- `PrometheusServiceID`
+- `IntegrationsPrometheusID`
+
+NOTE:
+Although queries that use the old type (`PrometheusServiceID` in this example) will be
+considered valid and executable by the API, validator tools will consider them to be invalid.
+This is because we are deprecating using a bespoke method outside of the
+[`@deprecated` directive](https://spec.graphql.org/June2018/#sec--deprecated), so validators are not
+aware of the support.
+
+The documentation will mention that the old Global ID style is now deprecated.
+
See also [Aliasing and deprecating mutations](#aliasing-and-deprecating-mutations).
## Enums
@@ -784,7 +880,7 @@ field :genus,
see: { 'Wikipedia page on genera' => 'https://wikipedia.org/wiki/Genus' }
```
-This will render in our documentation as:
+This renders in our documentation as:
```markdown
A taxonomic genus. See: [Wikipedia page on genera](https://wikipedia.org/wiki/Genus)
@@ -859,11 +955,11 @@ overhead. If you are writing:
### Error handling
-Resolvers may raise errors, which will be converted to top-level errors as
+Resolvers may raise errors, which are converted to top-level errors as
appropriate. All anticipated errors should be caught and transformed to an
appropriate GraphQL error (see
[`Gitlab::Graphql::Errors`](https://gitlab.com/gitlab-org/gitlab/-/blob/master/lib/gitlab/graphql/errors.rb)).
-Any uncaught errors will be suppressed and the client will receive the message
+Any uncaught errors are suppressed and the client receives the message
`Internal service error`.
The one special case is permission errors. In the REST API we return
@@ -874,7 +970,7 @@ Query resolvers **should not raise errors for unauthorized resources**.
The rationale for this is that clients must not be able to distinguish between
the absence of a record and the presence of one they do not have access to. To
-do so is a security vulnerability, since it leaks information we want to keep
+do so is a security vulnerability, because it leaks information we want to keep
hidden.
In most cases you don't need to worry about this - this is handled correctly by
@@ -1037,7 +1133,7 @@ class MyThingResolver < BaseResolver
end
```
-By default, fields defined in `#preloads` will be preloaded if that field
+By default, fields defined in `#preloads` are preloaded if that field
is selected in the query. Occasionally, finer control may be
needed to avoid preloading too much or incorrect content.
@@ -1121,7 +1217,7 @@ available in the `Resolver` class as `parent`.
To find the parent object in your `Presenter` class:
-1. Add the parent object to the GraphQL `context` from within your resolver's `resolve` method:
+1. Add the parent object to the GraphQL `context` from your resolver's `resolve` method:
```ruby
def resolve(**args)
@@ -1316,6 +1412,8 @@ Where an object has an `iid`, prefer to use the `full_path` or `group_path`
of its parent in combination with its `iid` as arguments to identify an
object rather than its `id`.
+See also [Deprecate Global IDs](#deprecate-global-ids).
+
### Fields
In the most common situations, a mutation would return 2 fields:
@@ -1327,7 +1425,7 @@ In the most common situations, a mutation would return 2 fields:
By inheriting any new mutations from `Mutations::BaseMutation` the
`errors` field is automatically added. A `clientMutationId` field is
also added, this can be used by the client to identify the result of a
-single mutation when multiple are performed within a single request.
+single mutation when multiple are performed in a single request.
### The `resolve` method
@@ -1447,7 +1545,7 @@ There are three states a mutation response can be in:
#### Success
In the happy path, errors *may* be returned, along with the anticipated payload, but
-if everything was successful, then `errors` should be an empty array, since
+if everything was successful, then `errors` should be an empty array, because
there are no problems we need to inform the user of.
```javascript
@@ -1524,7 +1622,7 @@ of errors should be treated as internal, and not shown to the user in specific
detail.
We need to inform the user when the mutation fails, but we do not need to
-tell them why, since they cannot have caused it, and nothing they can do
+tell them why, because they cannot have caused it, and nothing they can do
fixes it, although we may offer to retry the mutation.
#### Categorizing errors
@@ -1544,7 +1642,7 @@ See also the [frontend GraphQL guide](../development/fe_guide/graphql.md#handlin
### Aliasing and deprecating mutations
The `#mount_aliased_mutation` helper allows us to alias a mutation as
-another name within `MutationType`.
+another name in `MutationType`.
For example, to alias a mutation called `FooMutation` as `BarMutation`:
@@ -1565,7 +1663,7 @@ mount_aliased_mutation 'UpdateFoo',
```
Deprecated mutations should be added to `Types::DeprecatedMutations` and
-tested for within the unit test of `Types::MutationType`. The merge request
+tested for in the unit test of `Types::MutationType`. The merge request
[!34798](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/34798)
can be referred to as an example of this, including the method of testing
deprecated aliased mutations.
@@ -1591,7 +1689,7 @@ We cannot test subscriptions using GraphiQL, because they require an Action Cabl
All fields under `Types::SubscriptionType` are subscriptions that clients can subscribe to. These fields require a subscription class,
which is a descendant of `Subscriptions::BaseSubscription` and is stored under `app/graphql/subscriptions`.
-The arguments required to subscribe and the fields that are returned are defined within the subscription class. Multiple fields can share
+The arguments required to subscribe and the fields that are returned are defined in the subscription class. Multiple fields can share
the same subscription class if they have the same arguments and return the same fields.
This class runs during the initial subscription request and subsequent updates. You can read more about this in the
@@ -1623,8 +1721,8 @@ as normal.
Sometimes a mutation or resolver may accept a number of optional
arguments, but we still want to validate that at least one of the optional
arguments is provided. In this situation, consider using the `#ready?`
-method within your mutation or resolver to provide the validation. The
-`#ready?` method is called before any work is done within the
+method in your mutation or resolver to provide the validation. The
+`#ready?` method is called before any work is done in the
`#resolve` method.
Example:
@@ -1698,7 +1796,7 @@ For speed, you should test most logic in unit tests instead of integration tests
However, integration tests that check if data is returned verify the following
additional items:
-- The mutation is actually queryable within the schema (was mounted in `MutationType`).
+- The mutation is actually queryable in the schema (was mounted in `MutationType`).
- The data returned by a resolver or mutation correctly matches the
[return types](https://graphql-ruby.org/fields/introduction.html#field-return-type) of
the fields and resolves without errors.
@@ -1846,7 +1944,7 @@ to protect server resources from overly ambitious or malicious queries.
These values can be set as defaults and overridden in specific queries as needed.
The complexity values can be set per object as well, and the final query complexity is
evaluated based on how many objects are being returned. This is useful
-for objects that are expensive (e.g. requiring Gitaly calls).
+for objects that are expensive (such as requiring Gitaly calls).
For example, a conditional complexity method in a resolver:
diff --git a/doc/development/application_limits.md b/doc/development/application_limits.md
index b532a7ff98b..b606cda1124 100644
--- a/doc/development/application_limits.md
+++ b/doc/development/application_limits.md
@@ -48,7 +48,11 @@ It's recommended to create two separate migration script files.
create_or_update_plan_limit('project_hooks', 'free', 10)
create_or_update_plan_limit('project_hooks', 'bronze', 20)
create_or_update_plan_limit('project_hooks', 'silver', 30)
+ create_or_update_plan_limit('project_hooks', 'premium', 30)
+ create_or_update_plan_limit('project_hooks', 'premium_trial', 30)
create_or_update_plan_limit('project_hooks', 'gold', 100)
+ create_or_update_plan_limit('project_hooks', 'ultimate', 100)
+ create_or_update_plan_limit('project_hooks', 'ultimate_trial', 100)
end
def down
@@ -56,7 +60,11 @@ It's recommended to create two separate migration script files.
create_or_update_plan_limit('project_hooks', 'free', 0)
create_or_update_plan_limit('project_hooks', 'bronze', 0)
create_or_update_plan_limit('project_hooks', 'silver', 0)
+ create_or_update_plan_limit('project_hooks', 'premium', 0)
+ create_or_update_plan_limit('project_hooks', 'premium_trial', 0)
create_or_update_plan_limit('project_hooks', 'gold', 0)
+ create_or_update_plan_limit('project_hooks', 'ultimate', 0)
+ create_or_update_plan_limit('project_hooks', 'ultimate_trial', 0)
end
end
```
@@ -145,6 +153,10 @@ GitLab.com:
- `free`: Namespaces and projects with a Free subscription.
- `bronze`: Namespaces and projects with a Bronze subscription. This tier is no longer available for purchase.
- `silver`: Namespaces and projects with a Premium subscription.
+- `premium`: Namespaces and projects with a Premium subscription.
+- `premium_trial`: Namespaces and projects with a Premium Trial subscription.
- `gold`: Namespaces and projects with an Ultimate subscription.
+- `ultimate`: Namespaces and projects with an Ultimate subscription.
+- `ultimate_trial`: Namespaces and projects with an Ultimate Trial subscription.
The `test` environment doesn't have any plans.
diff --git a/doc/development/architecture.md b/doc/development/architecture.md
index 9801b24fdd0..f39171b1e69 100644
--- a/doc/development/architecture.md
+++ b/doc/development/architecture.md
@@ -35,7 +35,7 @@ Kubernetes platform. The largest known GitLab instance is on GitLab.com, which i
A typical installation uses NGINX or Apache as a web server to proxy through
[GitLab Workhorse](https://gitlab.com/gitlab-org/gitlab-workhorse) and into the [Puma](https://puma.io)
-application server. GitLab serves web pages and the [GitLab API](../api/README.md) using the Puma
+application server. GitLab serves web pages and the [GitLab API](../api/index.md) using the Puma
application server. It uses Sidekiq as a job queue which, in turn, uses Redis as a non-persistent
database backend for job information, metadata, and incoming jobs.
@@ -111,72 +111,187 @@ https://docs.google.com/drawings/d/1fBzAyklyveF-i-2q-OHUIqDkYfjjxC4mq5shwKSZHLs/
### Component diagram
```mermaid
-graph TB
-
-HTTP[HTTP/HTTPS] -- TCP 80, 443 --> NGINX[NGINX]
-SSH -- TCP 22 --> GitLabShell[GitLab Shell]
-SMTP[SMTP Gateway]
-Geo[GitLab Geo Node] -- TCP 22, 80, 443 --> NGINX
-
-GitLabShell --TCP 8080 -->Puma["Puma (GitLab Rails)"]
-GitLabShell --> Praefect
-Puma --> PgBouncer[PgBouncer]
-Puma --> Redis
-Puma --> Praefect
-Sidekiq --> Redis
-Sidekiq --> PgBouncer
-Sidekiq --> Praefect
-GitLabWorkhorse[GitLab Workhorse] --> Puma
-GitLabWorkhorse --> Redis
-GitLabWorkhorse --> Praefect
-Praefect --> Gitaly
-NGINX --> GitLabWorkhorse
-NGINX -- TCP 8090 --> GitLabPages[GitLab Pages]
-NGINX --> Grafana[Grafana]
-NGINX -- TCP 8150 --> GitLabKas[GitLab Kubernetes Agent Server]
-GitLabKas --> Praefect
-Grafana -- TCP 9090 --> Prometheus[Prometheus]
-Prometheus -- TCP 80, 443 --> Puma
-RedisExporter[Redis Exporter] --> Redis
-Prometheus -- TCP 9121 --> RedisExporter
-PostgreSQLExporter[PostgreSQL Exporter] --> PostgreSQL
-PgBouncerExporter[PgBouncer Exporter] --> PgBouncer
-Prometheus -- TCP 9187 --> PostgreSQLExporter
-Prometheus -- TCP 9100 --> NodeExporter[Node Exporter]
-Prometheus -- TCP 9168 --> GitLabExporter[GitLab Exporter]
-Prometheus -- TCP 9127 --> PgBouncerExporter
-GitLabExporter --> PostgreSQL
-GitLabExporter --> GitLabShell
-GitLabExporter --> Sidekiq
-PgBouncer --> Consul
-PostgreSQL --> Consul
-PgBouncer --> PostgreSQL
-NGINX --> Registry
-Puma --> Registry
-NGINX --> Mattermost
-Mattermost --- Puma
-Prometheus --> Alertmanager
-Migrations --> PostgreSQL
-Runner -- TCP 443 --> NGINX
-Puma -- TCP 9200 --> Elasticsearch
-Sidekiq -- TCP 9200 --> Elasticsearch
-Sidekiq -- TCP 80, 443 --> Sentry
-Puma -- TCP 80, 443 --> Sentry
-Sidekiq -- UDP 6831 --> Jaeger
-Puma -- UDP 6831 --> Jaeger
-Gitaly -- UDP 6831 --> Jaeger
-GitLabShell -- UDP 6831 --> Jaeger
-GitLabWorkhorse -- UDP 6831 --> Jaeger
-Alertmanager -- TCP 25 --> SMTP
-Sidekiq -- TCP 25 --> SMTP
-Puma -- TCP 25 --> SMTP
-Puma -- TCP 369 --> LDAP
-Sidekiq -- TCP 369 --> LDAP
-Puma -- TCP 443 --> ObjectStorage["Object Storage"]
-Sidekiq -- TCP 443 --> ObjectStorage
-GitLabWorkhorse -- TCP 443 --> ObjectStorage
-Registry -- TCP 443 --> ObjectStorage
-Geo -- TCP 5432 --> PostgreSQL
+%%{init: {"flowchart": { "useMaxWidth": false } }}%%
+graph LR
+ %% Anchor items in the appropriate subgraph.
+ %% Link them where the destination* is.
+
+ subgraph Clients
+ Browser((Browser))
+ Git((Git))
+ end
+
+ %% External Components / Applications
+ Geo{{GitLab Geo}} -- TCP 80, 443 --> HTTP
+ Geo -- TCP 22 --> SSH
+ Geo -- TCP 5432 --> PostgreSQL
+ Runner{{GitLab Runner}} -- TCP 443 --> HTTP
+ K8sAgent{{GitLab Kubernetes Agent}} -- TCP 443 --> HTTP
+
+ %% GitLab Application Suite
+ subgraph GitLab
+ subgraph Ingress
+ HTTP[[HTTP/HTTPS]]
+ SSH[[SSH]]
+ NGINX[NGINX]
+ GitLabShell[GitLab Shell]
+
+ %% inbound/internal
+ Browser -- TCP 80,443 --> HTTP
+ Git -- TCP 80,443 --> HTTP
+ Git -- TCP 22 --> SSH
+ HTTP -- TCP 80, 443 --> NGINX
+ SSH -- TCP 22 --> GitLabShell
+ end
+
+ subgraph GitLab Services
+ %% inbound from NGINX
+ NGINX --> GitLabWorkhorse
+ NGINX -- TCP 8090 --> GitLabPages
+ NGINX -- TCP 8150 --> GitLabKas
+ NGINX --> Registry
+ %% inbound from GitLabShell
+ GitLabShell --TCP 8080 -->Puma
+
+ %% services
+ Puma["Puma (GitLab Rails)"]
+ Puma <--> Registry
+ GitLabWorkhorse[GitLab Workhorse] <--> Puma
+ GitLabKas[GitLab Kubernetes Agent Server] --> GitLabWorkhorse
+ GitLabPages[GitLab Pages] --> GitLabWorkhorse
+ Mailroom
+ Sidekiq
+ end
+
+ subgraph Integrated Services
+ %% Mattermost
+ Mattermost
+ Mattermost ---> GitLabWorkhorse
+ NGINX --> Mattermost
+
+ %% Grafana
+ Grafana
+ NGINX --> Grafana
+ end
+
+ subgraph Metadata
+ %% PostgreSQL
+ PostgreSQL
+ PostgreSQL --> Consul
+
+ %% Consul and inbound
+ Consul
+ Puma ---> Consul
+ Sidekiq ---> Consul
+ Migrations --> PostgreSQL
+
+ %% PgBouncer and inbound
+ PgBouncer
+ PgBouncer --> Consul
+ PgBouncer --> PostgreSQL
+ Sidekiq --> PgBouncer
+ Puma --> PgBouncer
+ end
+
+ subgraph State
+ %% Redis and inbound
+ Redis
+ Puma --> Redis
+ Sidekiq --> Redis
+ GitLabWorkhorse --> Redis
+ Mailroom --> Redis
+ GitLabKas --> Redis
+
+ %% Sentinel and inbound
+ Sentinel <--> Redis
+ Puma --> Sentinel
+ Sidekiq --> Sentinel
+ GitLabWorkhorse --> Sentinel
+ Mailroom --> Sentinel
+ GitLabKas --> Sentinel
+ end
+
+ subgraph Git Repositories
+ %% Gitaly / Praefect
+ Praefect --> Gitaly
+ GitLabKas --> Praefect
+ GitLabShell --> Praefect
+ GitLabWorkhorse --> Praefect
+ Puma --> Praefect
+ Sidekiq --> Praefect
+ Praefect <--> PraefectPGSQL[PostgreSQL]
+ %% Gitaly makes API calls
+ %% Ordered here to ensure placement.
+ Gitaly --> GitLabWorkhorse
+ end
+
+ subgraph Storage
+ %% ObjectStorage and inbound traffic
+ ObjectStorage["Object Storage"]
+ Puma -- TCP 443 --> ObjectStorage
+ Sidekiq -- TCP 443 --> ObjectStorage
+ GitLabWorkhorse -- TCP 443 --> ObjectStorage
+ Registry -- TCP 443 --> ObjectStorage
+ GitLabPages -- TCP 443 --> ObjectStorage
+ end
+
+ subgraph Monitoring
+ %% Prometheus
+ Grafana -- TCP 9090 --> Prometheus[Prometheus]
+ Prometheus -- TCP 80, 443 --> Puma
+ RedisExporter[Redis Exporter] --> Redis
+ Prometheus -- TCP 9121 --> RedisExporter
+ PostgreSQLExporter[PostgreSQL Exporter] --> PostgreSQL
+ PgBouncerExporter[PgBouncer Exporter] --> PgBouncer
+ Prometheus -- TCP 9187 --> PostgreSQLExporter
+ Prometheus -- TCP 9100 --> NodeExporter[Node Exporter]
+ Prometheus -- TCP 9168 --> GitLabExporter[GitLab Exporter]
+ Prometheus -- TCP 9127 --> PgBouncerExporter
+ Prometheus --> Alertmanager
+ GitLabExporter --> PostgreSQL
+ GitLabExporter --> GitLabShell
+ GitLabExporter --> Sidekiq
+
+ %% Alertmanager
+ Alertmanager -- TCP 25 --> SMTP
+ end
+ %% end subgraph GitLab
+ end
+
+ subgraph External
+ subgraph External Services
+ SMTP[SMTP Gateway]
+ LDAP
+
+ %% Outbound SMTP
+ Sidekiq -- TCP 25 --> SMTP
+ Puma -- TCP 25 --> SMTP
+ Mailroom -- TCP 25 --> SMTP
+
+ %% Outbound LDAP
+ Puma -- TCP 369 --> LDAP
+ Sidekiq -- TCP 369 --> LDAP
+
+ %% Elasticsearch
+ Elasticsearch
+ Puma -- TCP 9200 --> Elasticsearch
+ Sidekiq -- TCP 9200 --> Elasticsearch
+ end
+ subgraph External Monitoring
+ %% Sentry
+ Sidekiq -- TCP 80, 443 --> Sentry
+ Puma -- TCP 80, 443 --> Sentry
+
+ %% Jaeger
+ Jaeger
+ Sidekiq -- UDP 6831 --> Jaeger
+ Puma -- UDP 6831 --> Jaeger
+ Gitaly -- UDP 6831 --> Jaeger
+ GitLabShell -- UDP 6831 --> Jaeger
+ GitLabWorkhorse -- UDP 6831 --> Jaeger
+ end
+ %% end subgraph External
+ end
click Alertmanager "./architecture.html#alertmanager"
click Praefect "./architecture.html#praefect"
diff --git a/doc/development/audit_event_guide/index.md b/doc/development/audit_event_guide/index.md
index 0bff297f2a0..f809293df59 100644
--- a/doc/development/audit_event_guide/index.md
+++ b/doc/development/audit_event_guide/index.md
@@ -20,12 +20,11 @@ To instrument an audit event, the following attributes should be provided:
| Attribute | Type | Required? | Description |
|:-------------|:---------------------|:----------|:----------------------------------------------------|
-| `name` | string | false | Action name to be audited. Used for error tracking |
+| `name` | String | false | Action name to be audited. Used for error tracking |
| `author` | User | true | User who authors the change |
| `scope` | User, Project, Group | true | Scope which the audit event belongs to |
| `target` | Object | true | Target object being audited |
-| `ip_address` | IPAddr | false | Request IP address |
-| `message` | string | true | Message describing the action |
+| `message` | String | true | Message describing the action |
## How to instrument new Audit Events
@@ -56,15 +55,14 @@ to both approvers and approval groups. In the initiating service
```ruby
# in the initiating service
audit_context = {
- name: 'merge_approval_rule_updated',
+ name: 'update_merge_approval_rule',
author: current_user,
scope: project_alpha,
target: merge_approval_rule,
- ip_address: request.remote_ip,
message: 'Attempted to update an approval rule'
}
-Gitlab::Audit::Auditor.audit(audit_context) do
+::Gitlab::Audit::Auditor.audit(audit_context) do
service.execute
end
```
@@ -95,15 +93,14 @@ This method allows recording single audit event and involves fewer moving parts.
```ruby
if merge_approval_rule.save
audit_context = {
- name: 'merge_approval_rule_created',
+ name: 'create_merge_approval_rule',
author: current_user,
scope: project_alpha,
target: merge_approval_rule,
- ip_address: request.remote_ip,
message: 'Created a new approval rule'
}
- Gitlab::Audit::Auditor.audit(audit_context)
+ ::Gitlab::Audit::Auditor.audit(audit_context)
end
```
@@ -114,7 +111,7 @@ The two ways we can instrument audit events have different flows.
### Using block to record multiple events
We wrap the operation block in a `Gitlab::Audit::Auditor` which captures the
-initial audit context (that is, `author`, `scope`, `target`, `ip_address`) object that are
+initial audit context (that is, `author`, `scope`, `target`) object that are
available at the time the operation is initiated.
Extra instrumentation is required in the interacted classes in the chain with
diff --git a/doc/development/auto_devops.md b/doc/development/auto_devops.md
index 054a3439ef1..2989e10a124 100644
--- a/doc/development/auto_devops.md
+++ b/doc/development/auto_devops.md
@@ -18,7 +18,7 @@ is also available on YouTube.
Auto DevOps builds on top of GitLab CI/CD to create an automatic pipeline
based on your project contents. When Auto DevOps is enabled for a
project, the user does not need to explicitly include any pipeline configuration
-through a [`.gitlab-ci.yml` file](../ci/yaml/README.md).
+through a [`.gitlab-ci.yml` file](../ci/yaml/index.md).
In the absence of a `.gitlab-ci.yml` file, the [Auto DevOps CI
template](https://gitlab.com/gitlab-org/gitlab/-/blob/master/lib/gitlab/ci/templates/Auto-DevOps.gitlab-ci.yml)
diff --git a/doc/development/avoiding_downtime_in_migrations.md b/doc/development/avoiding_downtime_in_migrations.md
index 6b6c47cfece..646b07f7266 100644
--- a/doc/development/avoiding_downtime_in_migrations.md
+++ b/doc/development/avoiding_downtime_in_migrations.md
@@ -95,8 +95,6 @@ renaming. For example
class RenameUsersUpdatedAtToUpdatedAtTimestamp < ActiveRecord::Migration[4.2]
include Gitlab::Database::MigrationHelpers
- DOWNTIME = false
-
disable_ddl_transaction!
def up
@@ -291,8 +289,6 @@ any remaining rows. For example:
class MigrateRemainingIssuesClosedAt < ActiveRecord::Migration[4.2]
include Gitlab::Database::MigrationHelpers
- DOWNTIME = false
-
disable_ddl_transaction!
class Issue < ActiveRecord::Base
diff --git a/doc/development/background_migrations.md b/doc/development/background_migrations.md
index 0b81d40f585..534621caf8f 100644
--- a/doc/development/background_migrations.md
+++ b/doc/development/background_migrations.md
@@ -7,9 +7,9 @@ info: "See the Technical Writers assigned to Development Guidelines: https://abo
# Background migrations
-Background migrations should be used to perform data migrations whenever a
-migration exceeds [the time limits in our guidelines](database_review.md#timing-guidelines-for-migrations). For example, you can use background
-migrations to migrate data that's stored in a single JSON column
+Background migrations should be used to perform data migrations whenever a
+migration exceeds [the time limits in our guidelines](database_review.md#timing-guidelines-for-migrations). For example, you can use background
+migrations to migrate data that's stored in a single JSON column
to a separate table instead.
If the database cluster is considered to be in an unhealthy state, background
@@ -17,7 +17,7 @@ migrations automatically reschedule themselves for a later point in time.
## When To Use Background Migrations
-You should use a background migration when you migrate _data_ in tables that have
+You should use a background migration when you migrate _data_ in tables that have
so many rows that the process would exceed [the time limits in our guidelines](database_review.md#timing-guidelines-for-migrations) if performed using a regular Rails migration.
- Background migrations should be used when migrating data in [high-traffic tables](migration_style_guide.md#high-traffic-tables).
@@ -429,3 +429,80 @@ should fit comfortably within the delay time for a few reasons:
Never try to optimize by fully filling the delay window even if you are confident
the queries themselves have no timing variance.
+
+### Background jobs tracking
+
+`queue_background_migration_jobs_by_range_at_intervals` can create records for each job that is scheduled to run.
+You can enable this behavior by passing `track_jobs: true`. Each record starts with a `pending` status. Make sure that your worker updates the job status to `succeeded` by calling `Gitlab::Database::BackgroundMigrationJob.mark_all_as_succeeded` in the `perform` method of your background migration.
+
+```ruby
+# Background migration code
+
+def perform(start_id, end_id)
+ # do work here
+
+ mark_job_as_succeeded(start_id, end_id)
+end
+
+private
+
+# Make sure that the arguments passed here match those passed to the background
+# migration
+def mark_job_as_succeeded(*arguments)
+ Gitlab::Database::BackgroundMigrationJob.mark_all_as_succeeded(
+ self.class.name.demodulize,
+ arguments
+ )
+end
+```
+
+```ruby
+# Post deployment migration
+include Gitlab::Database::MigrationHelpers
+
+MIGRATION = 'YourBackgroundMigrationName'
+DELAY_INTERVAL = 2.minutes.to_i # can be different
+BATCH_SIZE = 10_000 # can be different
+
+disable_ddl_transaction!
+
+def up
+ queue_background_migration_jobs_by_range_at_intervals(
+ define_batchable_model('name_of_the_table_backing_the_model'),
+ MIGRATION,
+ DELAY_INTERVAL,
+ batch_size: BATCH_SIZE,
+ track_jobs: true
+ )
+end
+
+def down
+ # no-op
+end
+```
+
+See [`lib/gitlab/background_migration/drop_invalid_vulnerabilities.rb`](https://gitlab.com/gitlab-org/gitlab/blob/master/lib/gitlab/background_migration/drop_invalid_vulnerabilities.rb) for a full example.
+
+#### Rescheduling pending jobs
+
+You can reschedule pending migrations from the `background_migration_jobs` table by creating a post-deployment migration and calling `requeue_background_migration_jobs_by_range_at_intervals` with the migration name and delay interval.
+
+```ruby
+# Post deployment migration
+include Gitlab::Database::MigrationHelpers
+
+MIGRATION = 'YourBackgroundMigrationName'
+DELAY_INTERVAL = 2.minutes
+
+disable_ddl_transaction!
+
+def up
+ requeue_background_migration_jobs_by_range_at_intervals(MIGRATION, DELAY_INTERVAL)
+end
+
+def down
+ # no-op
+end
+```
+
+See [`db/post_migrate/20210604070207_retry_backfill_traversal_ids.rb`](https://gitlab.com/gitlab-org/gitlab/blob/master/db/post_migrate/20210604070207_retry_backfill_traversal_ids.rb) for a full example.
diff --git a/doc/development/bulk_import.md b/doc/development/bulk_import.md
index e70880635e6..ff0c8a19ca1 100644
--- a/doc/development/bulk_import.md
+++ b/doc/development/bulk_import.md
@@ -40,9 +40,9 @@ idea is to have one ETL pipeline for each relation to be imported.
The current [Project](../user/project/settings/import_export.md) and [Group](../user/group/settings/import_export.md) Import are file based, so they require an export
step to generate the file to be imported.
-GitLab Group migration leverages on [GitLab API](../api/README.md) to speed the migration.
+GitLab Group migration leverages on [GitLab API](../api/index.md) to speed the migration.
-And, because we're on the road to [GraphQL](../api/README.md#graphql-api),
+And, because we're on the road to [GraphQL](../api/index.md#graphql-api),
GitLab Group Migration will be contributing towards to expand the GraphQL API coverage, which benefits both GitLab
and its users.
diff --git a/doc/development/cascading_settings.md b/doc/development/cascading_settings.md
index 631de544238..d1c5756fa2c 100644
--- a/doc/development/cascading_settings.md
+++ b/doc/development/cascading_settings.md
@@ -82,7 +82,7 @@ cascading_attr :delayed_project_removal
- `delayed_project_removal_locked_by_ancestor?`
- `delayed_project_removal_locked_by_application_setting?`
- `delayed_project_removal?` (Boolean attributes only)
-- `delayed_project_removal_locked_ancestor` (Returns locked namespace settings object [namespace_id])
+- `delayed_project_removal_locked_ancestor` (Returns locked namespace settings object `[namespace_id]`)
### Attribute reader method (`delayed_project_removal`)
@@ -112,9 +112,9 @@ There are a few Rails view helpers, HAML partials, and JavaScript functions that
### Rails view helpers
-[`cascading_namespace_setting_locked?`](https://gitlab.com/gitlab-org/gitlab/-/blob/c2736823b8e922e26fd35df4f0cd77019243c858/app/helpers/namespaces_helper.rb#L86)
+[`cascading_namespace_setting_locked?`](https://gitlab.com/gitlab-org/gitlab/-/blob/c2736823b8e922e26fd35df4f0cd77019243c858/app/helpers/namespaces_helper.rb#L86)
-Calls through to the [`_locked?` method](#_locked-method) to check if the setting is locked.
+Calls through to the [`_locked?` method](#_locked-method) to check if the setting is locked.
| Argument | Description | Type | Required (default value) |
|:------------|:---------------------------------------------------------------------------------|:----------------------------------------------------------------------------------|:-------------------------|
@@ -124,47 +124,50 @@ Calls through to the [`_locked?` method](#_locked-method) to check if the settin
### HAML partials
-[`_enforcement_checkbox.html.haml`](https://gitlab.com/gitlab-org/gitlab/-/blob/c2736823b8e922e26fd35df4f0cd77019243c858/app/views/shared/namespaces/cascading_settings/_enforcement_checkbox.html.haml)
+[`_enforcement_checkbox.html.haml`](https://gitlab.com/gitlab-org/gitlab/-/blob/c2736823b8e922e26fd35df4f0cd77019243c858/app/views/shared/namespaces/cascading_settings/_enforcement_checkbox.html.haml)
-Renders the enforcement checkbox.
+Renders the enforcement checkbox.
| Local | Description | Type | Required (default value) |
|:-----------------|:-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|:-----------------------------------------------------------------------------------------------|:------------------------------------------------|
| `attribute` | Name of the setting. For example, `:delayed_project_removal`. | `String` or `Symbol` | `true` |
+| `group` | Current group. | [`Group`](https://gitlab.com/gitlab-org/gitlab/-/blob/master/app/models/group.rb) | `true` |
| `form` | [Rails FormBuilder object](https://apidock.com/rails/ActionView/Helpers/FormBuilder). | [`ActionView::Helpers::FormBuilder`](https://apidock.com/rails/ActionView/Helpers/FormBuilder) | `true` |
| `setting_locked` | If the setting is locked by an ancestor group or admin setting. Can be calculated with [`cascading_namespace_setting_locked?`](https://gitlab.com/gitlab-org/gitlab/-/blob/c2736823b8e922e26fd35df4f0cd77019243c858/app/helpers/namespaces_helper.rb#L86). | `Boolean` | `true` |
| `help_text` | Text shown below the checkbox. | `String` | `false` (Subgroups cannot change this setting.) |
-[`_setting_label_checkbox.html.haml`](https://gitlab.com/gitlab-org/gitlab/-/blob/c2736823b8e922e26fd35df4f0cd77019243c858/app/views/shared/namespaces/cascading_settings/_setting_label_checkbox.html.haml)
+[`_setting_label_checkbox.html.haml`](https://gitlab.com/gitlab-org/gitlab/-/blob/c2736823b8e922e26fd35df4f0cd77019243c858/app/views/shared/namespaces/cascading_settings/_setting_label_checkbox.html.haml)
-Renders the label for a checkbox setting.
+Renders the label for a checkbox setting.
| Local | Description | Type | Required (default value) |
|:-----------------------|:-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|:-----------------------------------------------------------------------------------------------|:-------------------------|
| `attribute` | Name of the setting. For example, `:delayed_project_removal`. | `String` or `Symbol` | `true` |
+| `group` | Current group. | [`Group`](https://gitlab.com/gitlab-org/gitlab/-/blob/master/app/models/group.rb) | `true` |
| `form` | [Rails FormBuilder object](https://apidock.com/rails/ActionView/Helpers/FormBuilder). | [`ActionView::Helpers::FormBuilder`](https://apidock.com/rails/ActionView/Helpers/FormBuilder) | `true` |
| `setting_locked` | If the setting is locked by an ancestor group or admin setting. Can be calculated with [`cascading_namespace_setting_locked?`](https://gitlab.com/gitlab-org/gitlab/-/blob/c2736823b8e922e26fd35df4f0cd77019243c858/app/helpers/namespaces_helper.rb#L86). | `Boolean` | `true` |
| `settings_path_helper` | Lambda function that generates a path to the ancestor setting. For example, `settings_path_helper: -> (locked_ancestor) { edit_group_path(locked_ancestor, anchor: 'js-permissions-settings') }` | `Lambda` | `true` |
| `help_text` | Text shown below the checkbox. | `String` | `false` (`nil`) |
-[`_setting_label_fieldset.html.haml`](https://gitlab.com/gitlab-org/gitlab/-/blob/c2736823b8e922e26fd35df4f0cd77019243c858/app/views/shared/namespaces/cascading_settings/_setting_label_fieldset.html.haml)
+[`_setting_label_fieldset.html.haml`](https://gitlab.com/gitlab-org/gitlab/-/blob/c2736823b8e922e26fd35df4f0cd77019243c858/app/views/shared/namespaces/cascading_settings/_setting_label_fieldset.html.haml)
-Renders the label for a fieldset setting.
+Renders the label for a fieldset setting.
| Local | Description | Type | Required (default value) |
|:-----------------------|:---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|:---------------------|:-------------------------|
| `attribute` | Name of the setting. For example, `:delayed_project_removal`. | `String` or `Symbol` | `true` |
+| `group` | Current group. | [`Group`](https://gitlab.com/gitlab-org/gitlab/-/blob/master/app/models/group.rb) | `true` |
| `setting_locked` | If the setting is locked. Can be calculated with [`cascading_namespace_setting_locked?`](https://gitlab.com/gitlab-org/gitlab/-/blob/c2736823b8e922e26fd35df4f0cd77019243c858/app/helpers/namespaces_helper.rb#L86). | `Boolean` | `true` |
| `settings_path_helper` | Lambda function that generates a path to the ancestor setting. For example, `-> (locked_ancestor) { edit_group_path(locked_ancestor, anchor: 'js-permissions-settings') }` | `Lambda` | `true` |
| `help_text` | Text shown below the checkbox. | `String` | `false` (`nil`) |
-[`_lock_popovers.html.haml`](https://gitlab.com/gitlab-org/gitlab/-/blob/b73353e47e283a7d9c9eda5bdedb345dcfb685b6/app/views/shared/namespaces/cascading_settings/_lock_popovers.html.haml)
+[`_lock_popovers.html.haml`](https://gitlab.com/gitlab-org/gitlab/-/blob/b73353e47e283a7d9c9eda5bdedb345dcfb685b6/app/views/shared/namespaces/cascading_settings/_lock_popovers.html.haml)
-Renders the mount element needed to initialize the JavaScript used to display the popover when hovering over the lock icon. This partial is only needed once per page.
+Renders the mount element needed to initialize the JavaScript used to display the popover when hovering over the lock icon. This partial is only needed once per page.
### JavaScript
-[`initCascadingSettingsLockPopovers`](https://gitlab.com/gitlab-org/gitlab/-/blob/b73353e47e283a7d9c9eda5bdedb345dcfb685b6/app/assets/javascripts/namespaces/cascading_settings/index.js#L4)
+[`initCascadingSettingsLockPopovers`](https://gitlab.com/gitlab-org/gitlab/-/blob/b73353e47e283a7d9c9eda5bdedb345dcfb685b6/app/assets/javascripts/namespaces/cascading_settings/index.js#L4)
Initializes the JavaScript needed to display the popover when hovering over the lock icon (**{lock}**).
This function should be imported and called in the [page-specific JavaScript](fe_guide/performance.md#page-specific-javascript).
diff --git a/doc/development/changelog.md b/doc/development/changelog.md
index f0c37af42ab..c96fe2c18c1 100644
--- a/doc/development/changelog.md
+++ b/doc/development/changelog.md
@@ -81,7 +81,7 @@ EE: true
- Any change that introduces a database migration, whether it's regular, post,
or data migration, **must** have a changelog entry, even if it is behind a
- disabled feature flag.
+ disabled feature flag.
- [Security fixes](https://gitlab.com/gitlab-org/release/docs/blob/master/general/security/developer.md)
**must** have a changelog entry, with `Changelog` trailer set to `security`.
- Any user-facing change **must** have a changelog entry. Example: "GitLab now
@@ -98,6 +98,7 @@ EE: true
database records created during Cycle Analytics model spec."
- _Any_ contribution from a community member, no matter how small, **may** have
a changelog entry regardless of these guidelines if the contributor wants one.
+- [Removing](feature_flags/#changelog) a feature flag, when the new code is retained.
## Writing good changelog entries
@@ -188,4 +189,4 @@ documentation](https://git-scm.com/book/en/v2/Git-Tools-Rewriting-History).
---
-[Return to Development documentation](README.md)
+[Return to Development documentation](index.md)
diff --git a/doc/development/chatops_on_gitlabcom.md b/doc/development/chatops_on_gitlabcom.md
index 4ae49103d1b..26fcf520393 100644
--- a/doc/development/chatops_on_gitlabcom.md
+++ b/doc/development/chatops_on_gitlabcom.md
@@ -28,7 +28,7 @@ To request access to ChatOps on GitLab.com:
1. Confirm that your username in [Internal GitLab for Operations](https://ops.gitlab.net/)
is the same as your username in [GitLab.com](https://gitlab.com/). If the usernames
- don't match, update the username at [Internal GitLab for Operations](https://ops.gitlab.net/).
+ don't match, update the username in [User Settings/Account for the Ops instance](https://ops.gitlab.net/-/profile/account).
1. Comment in your onboarding issue, and tag your onboarding buddy and your manager.
Request they add you to the `ops` ChatOps project by running this command
diff --git a/doc/development/cicd/cicd_reference_documentation_guide.md b/doc/development/cicd/cicd_reference_documentation_guide.md
index 14a313daba8..33bc416d8bc 100644
--- a/doc/development/cicd/cicd_reference_documentation_guide.md
+++ b/doc/development/cicd/cicd_reference_documentation_guide.md
@@ -4,7 +4,7 @@ group: Pipeline Execution
info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://about.gitlab.com/handbook/engineering/ux/technical-writing/#assignments
---
-# CI/CD YAML reference style guide
+# CI/CD YAML reference style guide **(FREE)**
The CI/CD YAML reference uses a standard style to make it easier to use and update.
@@ -91,7 +91,7 @@ Keyword description and main details.
### YAML reference style example
-See the [`only:changes` / `except:changes`](../../ci/yaml/README.md#onlychanges--exceptchanges)
+See the [`only:changes` / `except:changes`](../../ci/yaml/index.md#onlychanges--exceptchanges)
documentation for an example of the YAML reference style. The following example is a
shortened version of that documentation's Markdown:
diff --git a/doc/development/cicd/index.md b/doc/development/cicd/index.md
index 025d63f4a62..6d4e19d8196 100644
--- a/doc/development/cicd/index.md
+++ b/doc/development/cicd/index.md
@@ -5,14 +5,14 @@ info: To determine the technical writer assigned to the Stage/Group associated w
type: index, concepts, howto
---
-# CI/CD development documentation
+# CI/CD development documentation **(FREE)**
Development guides that are specific to CI/CD are listed here.
If you are creating new CI/CD templates, please read [the development guide for GitLab CI/CD templates](templates.md).
See the [CI/CD YAML reference documentation guide](cicd_reference_documentation_guide.md)
-to learn how to update the [reference page](../../ci/yaml/README.md).
+to learn how to update the [reference page](../../ci/yaml/index.md).
## CI Architecture overview
@@ -27,13 +27,13 @@ On the left side we have the events that can trigger a pipeline based on various
- A `git push` is the most common event that triggers a pipeline.
- The [Web API](../../api/pipelines.md#create-a-new-pipeline).
- A user clicking the "Run pipeline" button in the UI.
-- When a [merge request is created or updated](../../ci/merge_request_pipelines/index.md#pipelines-for-merge-requests).
-- When an MR is added to a [Merge Train](../../ci/merge_request_pipelines/pipelines_for_merged_results/merge_trains/index.md#merge-trains).
+- When a [merge request is created or updated](../../ci/pipelines/merge_request_pipelines.md#pipelines-for-merge-requests).
+- When an MR is added to a [Merge Train](../../ci/pipelines/merge_trains.md#merge-trains).
- A [scheduled pipeline](../../ci/pipelines/schedules.md#pipeline-schedules).
-- When project is [subscribed to an upstream project](../../ci/multi_project_pipelines.md#trigger-a-pipeline-when-an-upstream-project-is-rebuilt).
+- When project is [subscribed to an upstream project](../../ci/pipelines/multi_project_pipelines.md#trigger-a-pipeline-when-an-upstream-project-is-rebuilt).
- When [Auto DevOps](../../topics/autodevops/index.md) is enabled.
- When GitHub integration is used with [external pull requests](../../ci/ci_cd_for_external_repos/index.md#pipelines-for-external-pull-requests).
-- When an upstream pipeline contains a [bridge job](../../ci/yaml/README.md#trigger) which triggers a downstream pipeline.
+- When an upstream pipeline contains a [bridge job](../../ci/yaml/index.md#trigger) which triggers a downstream pipeline.
Triggering any of these events invokes the [`CreatePipelineService`](https://gitlab.com/gitlab-org/gitlab/-/blob/master/app/services/ci/create_pipeline_service.rb)
which takes as input event data and the user triggering it, then attempts to create a pipeline.
@@ -42,7 +42,7 @@ The `CreatePipelineService` relies heavily on the [`YAML Processor`](https://git
component, which is responsible for taking in a YAML blob as input and returns the abstract data structure of a
pipeline (including stages and all jobs). This component also validates the structure of the YAML while
processing it, and returns any syntax or semantic errors. The `YAML Processor` component is where we define
-[all the keywords](../../ci/yaml/README.md) available to structure a pipeline.
+[all the keywords](../../ci/yaml/index.md) available to structure a pipeline.
The `CreatePipelineService` receives the abstract data structure returned by the `YAML Processor`,
which then converts it to persisted models (pipeline, stages, jobs, etc.). After that, the pipeline is ready
@@ -61,7 +61,7 @@ successfully or fail. Each status transition for job within a pipeline triggers
looks for the next jobs to be transitioned towards completion. While doing that, `ProcessPipelineService`
updates the status of jobs, stages and the overall pipeline.
-On the right side of the diagram we have a list of [runners](../../ci/runners/README.md)
+On the right side of the diagram we have a list of [runners](../../ci/runners/index.md)
connected to the GitLab instance. These can be shared runners, group runners, or project-specific runners.
The communication between runners and the Rails server occurs through a set of API endpoints, grouped as
the `Runner API Gateway`.
@@ -79,12 +79,12 @@ case the runner downloads them using a dedicated API endpoint.
Artifacts are stored in object storage, while metadata is kept in the database. An important example of artifacts
are reports (JUnit, SAST, DAST, etc.) which are parsed and rendered in the merge request.
-Job status transitions are not all automated. A user may run [manual jobs](../../ci/yaml/README.md#whenmanual), cancel a pipeline, retry
+Job status transitions are not all automated. A user may run [manual jobs](../../ci/yaml/index.md#whenmanual), cancel a pipeline, retry
specific failed jobs or the entire pipeline. Anything that
causes a job to change status triggers `ProcessPipelineService`, as it's responsible for
tracking the status of the entire pipeline.
-A special type of job is the [bridge job](../../ci/yaml/README.md#trigger) which is executed server-side
+A special type of job is the [bridge job](../../ci/yaml/index.md#trigger) which is executed server-side
when transitioning to the `pending` state. This job is responsible for creating a downstream pipeline, such as
a multi-project or child pipeline. The workflow loop starts again
from the `CreatePipelineService` every time a downstream pipeline is triggered.
diff --git a/doc/development/cicd/templates.md b/doc/development/cicd/templates.md
index 8331985697e..204287d7b59 100644
--- a/doc/development/cicd/templates.md
+++ b/doc/development/cicd/templates.md
@@ -7,7 +7,7 @@ type: index, concepts, howto
# Development guide for GitLab CI/CD templates
-This document explains how to develop [GitLab CI/CD templates](../../ci/examples/README.md).
+This document explains how to develop [GitLab CI/CD templates](../../ci/examples/index.md).
## Requirements for CI/CD templates
@@ -16,7 +16,7 @@ Before submitting a merge request with a new or updated CI/CD template, you must
- Place the template in the correct [directory](#template-directories).
- Follow the [CI/CD template authoring guidelines](#template-authoring-guidelines).
- Name the template following the `*.gitlab-ci.yml` format.
-- Use valid [`.gitlab-ci.yml` syntax](../../ci/yaml/README.md). Verify it's valid
+- Use valid [`.gitlab-ci.yml` syntax](../../ci/yaml/index.md). Verify it's valid
with the [CI/CD lint tool](../../ci/lint.md).
- Include [a changelog](../changelog.md) if the merge request introduces a user-facing change.
- Follow the [template review process](#contribute-cicd-template-merge-requests).
@@ -59,8 +59,8 @@ don't have any other `.gitlab-ci.yml` files.
When authoring pipeline templates:
-- Place any [global keywords](../../ci/yaml/README.md#global-keywords) like `image`
- or `before_script` in a [`default`](../../ci/yaml/README.md#custom-default-keyword-values)
+- Place any [global keywords](../../ci/yaml/index.md#global-keywords) like `image`
+ or `before_script` in a [`default`](../../ci/yaml/index.md#custom-default-keyword-values)
section at the top of the template.
- Note clearly in the [code comments](#explain-the-template-with-comments) if the
template is designed to be used with the `includes` keyword in an existing
@@ -68,7 +68,7 @@ When authoring pipeline templates:
A **job template** provides specific jobs that can be added to an existing CI/CD
workflow to accomplish specific tasks. It usually should be used by adding it to
-an existing `.gitlab-ci.yml` file by using the [`includes`](../../ci/yaml/README.md#global-keywords)
+an existing `.gitlab-ci.yml` file by using the [`includes`](../../ci/yaml/index.md#global-keywords)
keyword. You can also copy and paste the contents into an existing `.gitlab-ci.yml` file.
Configure job templates so that users can add them to their current pipeline with very
@@ -77,7 +77,7 @@ other pipeline configuration.
When authoring job templates:
-- Do not use [global](../../ci/yaml/README.md#global-keywords) or [`default`](../../ci/yaml/README.md#custom-default-keyword-values)
+- Do not use [global](../../ci/yaml/index.md#global-keywords) or [`default`](../../ci/yaml/index.md#custom-default-keyword-values)
keywords. When a root `.gitlab-ci.yml` includes a template, global or default keywords
might be overridden and cause unexpected behavior. If a job template requires a
specific stage, explain in the code comments that users must manually add the stage
@@ -127,8 +127,8 @@ job2:
#### Use `rules` instead of `only` or `except`
-Avoid using [`only` or `except`](../../ci/yaml/README.md#only--except) if possible.
-Only and except is not being developed any more, and [`rules`](../../ci/yaml/README.md#rules)
+Avoid using [`only` or `except`](../../ci/yaml/index.md#only--except) if possible.
+Only and except is not being developed any more, and [`rules`](../../ci/yaml/index.md#rules)
is now the preferred syntax:
```yaml
diff --git a/doc/development/code_review.md b/doc/development/code_review.md
index df09b27c6b4..929e75e7774 100644
--- a/doc/development/code_review.md
+++ b/doc/development/code_review.md
@@ -74,6 +74,7 @@ page, with these behaviors:
1. It doesn't pick people whose Slack or [GitLab status](../user/profile/index.md#set-your-current-status):
- contains the string 'OOO', 'PTO', 'Parental Leave', or 'Friends and Family'
- emoji is `:palm_tree:`, `:beach:`, `:beach_umbrella:`, `:beach_with_umbrella:`, `:ferris_wheel:`, `:thermometer:`, `:face_with_thermometer:`, `:red_circle:`, `:bulb:`, `:sun_with_face:`.
+ - GitLab user busy indicator is set to true
1. [Trainee maintainers](https://about.gitlab.com/handbook/engineering/workflow/code-review/#trainee-maintainer)
are three times as likely to be picked as other reviewers.
1. Team members whose Slack or [GitLab status](../user/profile/index.md#set-your-current-status) emoji
@@ -383,7 +384,7 @@ Before taking the decision to merge:
- Set the milestone.
- Consider warnings and errors from danger bot, code quality, and other reports.
Unless a strong case can be made for the violation, these should be resolved
- before merging. A comment must to be posted if the MR is merged with any failed job.
+ before merging. A comment must be posted if the MR is merged with any failed job.
- If the MR contains both Quality and non-Quality-related changes, the MR should be merged by the relevant maintainer for user-facing changes (backend, frontend, or database) after the Quality related changes are approved by a Software Engineer in Test.
If a merge request is fundamentally ready, but needs only trivial fixes (such as
@@ -422,7 +423,7 @@ WARNING:
do not merge the merge request** except for
[very specific cases](https://about.gitlab.com/handbook/engineering/workflow/#criteria-for-merging-during-broken-master).
For other cases, follow these [handbook instructions](https://about.gitlab.com/handbook/engineering/workflow/#merging-during-broken-master).
- - If the **latest [Pipeline for Merged Results](../ci/merge_request_pipelines/pipelines_for_merged_results/#pipelines-for-merged-results)** finished less than 2 hours ago, you
+ - If the **latest [Pipeline for Merged Results](../ci/pipelines/pipelines_for_merged_results.md)** finished less than 2 hours ago, you
might merge without starting a new pipeline as the merge request is close
enough to `main`.
- When you set the MR to "Merge When Pipeline Succeeds", you should take over
@@ -444,7 +445,7 @@ Merge Results against the latest `main` at the time of the pipeline creation.
WARNING:
**Review all changes thoroughly for malicious code before starting a
-[Pipeline for Merged Results](../ci/merge_request_pipelines/index.md#run-pipelines-in-the-parent-project-for-merge-requests-from-a-forked-project).**
+[Pipeline for Merged Results](../ci/pipelines/merge_request_pipelines.md#run-pipelines-in-the-parent-project-for-merge-requests-from-a-forked-project).**
When reviewing merge requests added by wider community contributors:
@@ -604,7 +605,7 @@ A merge request may benefit from being considered a customer critical priority b
Properties of customer critical merge requests:
-- The [Senior Director of Development](https://about.gitlab.com/job-families/engineering/engineering-management/#senior-director-engineering) ([@clefelhocz1](https://gitlab.com/clefelhocz1)) is the DRI for deciding if a merge request is customer critical.
+- The [VP of Development](https://about.gitlab.com/job-families/engineering/development/management/vp) ([@clefelhocz1](https://gitlab.com/clefelhocz1)) is the DRI for deciding if a merge request qualifies as customer critical.
- The DRI applies the `customer-critical-merge-request` label to the merge request.
- It is required that the reviewer(s) and maintainer(s) involved with a customer critical merge request are engaged as soon as this decision is made.
- It is required to prioritize work for those involved on a customer critical merge request so that they have the time available necessary to focus on it.
@@ -644,4 +645,4 @@ Largely based on the [`thoughtbot` code review guide](https://github.com/thought
---
-[Return to Development documentation](README.md)
+[Return to Development documentation](index.md)
diff --git a/doc/development/contributing/issue_workflow.md b/doc/development/contributing/issue_workflow.md
index 840434ebbc3..aa1b353c634 100644
--- a/doc/development/contributing/issue_workflow.md
+++ b/doc/development/contributing/issue_workflow.md
@@ -36,7 +36,7 @@ the affected files to find someone.
We also use [GitLab Triage](https://gitlab.com/gitlab-org/gitlab-triage) to automate
some triaging policies. This is currently set up as a scheduled pipeline
(`https://gitlab.com/gitlab-org/quality/triage-ops/pipeline_schedules/10512/editpipeline_schedules/10512/edit`,
-must have at least Developer access to the project) running on [quality/triage-ops](https://gitlab.com/gitlab-org/quality/triage-ops)
+must have at least the Developer role in the project) running on [quality/triage-ops](https://gitlab.com/gitlab-org/quality/triage-ops)
project.
## Labels
@@ -149,7 +149,7 @@ and `~"group::knowledge"` is picked up by someone in the Access group of the Pla
the issue should be relabeled as `~"group::access"` while keeping the original
`~"devops::create"` unchanged.
-We also use stage and group labels to help measure our [merge request rates](https://about.gitlab.com/handbook/engineering/merge-request-rate/).
+We also use stage and group labels to help measure our [merge request rates](https://about.gitlab.com/handbook/engineering/metrics/#merge-request-rate).
Please read [Stage and Group labels](https://about.gitlab.com/handbook/engineering/metrics/#stage-and-group-labels) for more information on how the labels are used in this context.
### Category labels
diff --git a/doc/development/contributing/merge_request_workflow.md b/doc/development/contributing/merge_request_workflow.md
index 783cf7af6fc..a6dcac47910 100644
--- a/doc/development/contributing/merge_request_workflow.md
+++ b/doc/development/contributing/merge_request_workflow.md
@@ -31,7 +31,7 @@ If you are new to GitLab development (or web development in general), see the
some potentially easy issues.
To start developing GitLab, download the [GitLab Development Kit](https://gitlab.com/gitlab-org/gitlab-development-kit)
-and see the [Development section](../../README.md) for the required guidelines.
+and see the [Development section](../../index.md) for the required guidelines.
## Merge request guidelines
@@ -158,8 +158,8 @@ Commit messages should follow the guidelines below, for reasons explained by Chr
Example commit message template that can be used on your machine that embodies the above (guide for [how to apply template](https://codeinthehole.com/tips/a-useful-template-for-commit-messages/)):
```plaintext
-# (If applied, this commit will...) <subject> (Max 50 char)
-# |<---- Using a Maximum Of 50 Characters ---->|
+# (If applied, this commit will...) <subject> (Max 72 characters)
+# |<---- Using a Maximum Of 72 Characters ---->|
# Explain why this change is being made
diff --git a/doc/development/contributing/style_guides.md b/doc/development/contributing/style_guides.md
index 20e47b501e6..5a54e3afbea 100644
--- a/doc/development/contributing/style_guides.md
+++ b/doc/development/contributing/style_guides.md
@@ -91,8 +91,32 @@ To skip some checks based on tags when pushing, you can set the `LEFTHOOK_EXCLUD
LEFTHOOK_EXCLUDE=frontend,documentation git push ...
```
+As an alternative, you can create `lefthook-local.yml` with this structure:
+
+```yaml
+pre-push:
+ exclude_tags:
+ - frontend
+ - documentation
+```
+
For more information, check out [Lefthook documentation](https://github.com/Arkweid/lefthook/blob/master/docs/full_guide.md#skip-some-tags-on-the-fly).
+### Skip or enable a specific Lefthook check
+
+To skip or enable a check based on its name when pushing, you can add `skip: true`
+or `skip: false` to the `lefthook-local.yml` section for that hook. For instance,
+you might want to enable the gettext check to detect issues with `locale/gitlab.pot`:
+
+```yaml
+pre-push:
+ commands:
+ gettext:
+ skip: false
+```
+
+For more information, check out [Lefthook documentation Skipping commands section](https://github.com/evilmartians/lefthook/blob/master/docs/full_guide.md#skipping-commands).
+
## Ruby, Rails, RSpec
Our codebase style is defined and enforced by [RuboCop](https://github.com/rubocop-hq/rubocop).
@@ -128,8 +152,12 @@ reduces the aforementioned [bike-shedding](https://en.wiktionary.org/wiki/bikesh
To that end, we encourage creation of new RuboCop rules in the codebase.
+We currently maintain Cops across several Ruby code bases, and not all of them are
+specific to the GitLab application.
When creating a new cop that could be applied to multiple applications, we encourage you
to add it to our [GitLab Styles](https://gitlab.com/gitlab-org/gitlab-styles) gem.
+If the Cop targets rules that only apply to the main GitLab application,
+it should be added to [GitLab](https://gitlab.com/gitlab-org/gitlab) instead.
### Resolving RuboCop exceptions
diff --git a/doc/development/dangerbot.md b/doc/development/dangerbot.md
index 68268027b73..8f5788785f0 100644
--- a/doc/development/dangerbot.md
+++ b/doc/development/dangerbot.md
@@ -58,7 +58,7 @@ itself, increasing visibility.
## Development guidelines
-Danger code is Ruby code, so all our [usual backend guidelines](README.md#backend-guides)
+Danger code is Ruby code, so all our [usual backend guidelines](index.md#backend-guides)
continue to apply. However, there are a few things that deserve special emphasis.
### When to use Danger
@@ -119,13 +119,12 @@ However, you can speed these cycles up somewhat by emptying the
to revert the change before merging!
To enable the Dangerfile on another existing GitLab project, run the following
-extra steps, based on [this procedure](https://danger.systems/guides/getting_started.html#creating-a-bot-account-for-danger-to-use):
+extra steps:
-1. Add `@gitlab-bot` to the project as a `reporter`.
-1. Add the `@gitlab-bot`'s `GITLAB_API_PRIVATE_TOKEN` value as a value for a new CI/CD
- variable named `DANGER_GITLAB_API_TOKEN`.
+1. Create a [Project access tokens](../user/project/settings/project_access_tokens.md).
+1. Add the token as a CI/CD project variable named `DANGER_GITLAB_API_TOKEN`.
-You should add the `~Danger bot` label to the merge request before sending it
+You should add the ~"Danger bot" label to the merge request before sending it
for review.
## Current uses
@@ -153,10 +152,11 @@ at GitLab so far:
Danger is run but its output is not added to a merge request comment if working
on a fork. This happens because the secret variable from the canonical project
is not shared to forks. To work around this, you can add an [environment
-variable](../ci/variables/README.md) called `DANGER_GITLAB_API_TOKEN` with a
-personal API token to your fork. That way the danger comments are made from CI
-using that API token instead. Making the variable
-[masked](../ci/variables/README.md#mask-a-cicd-variable) makes sure it
+variable](../ci/variables/index.md) called `DANGER_GITLAB_API_TOKEN` with a
+[personal API token](https://gitlab.com/-/profile/personal_access_tokens?name=GitLab+Dangerbot&scopes=api)
+to your fork that has the `api` scope set. That way the danger comments are made
+from CI using that API token instead. Making the variable
+[masked](../ci/variables/index.md#mask-a-cicd-variable) makes sure it
doesn't show up in the job logs. The variable cannot be
-[protected](../ci/variables/README.md#protect-a-cicd-variable), as it needs
+[protected](../ci/variables/index.md#protect-a-cicd-variable), as it needs
to be present for all feature branches.
diff --git a/doc/development/database/database_reviewer_guidelines.md b/doc/development/database/database_reviewer_guidelines.md
index 16734dada13..7a9c08d9d49 100644
--- a/doc/development/database/database_reviewer_guidelines.md
+++ b/doc/development/database/database_reviewer_guidelines.md
@@ -62,6 +62,9 @@ The following guides provide a quick introduction and links to follow on more ad
- Guide on [understanding EXPLAIN plans](../understanding_explain_plans.md).
- [Explaining the unexplainable series in `depesz`](https://www.depesz.com/tag/unexplainable/).
+We also have licensed access to The Art of PostgreSQL available, if you are interested in getting access please check out the
+[issue (confidential)](https://gitlab.com/gitlab-org/database-team/team-tasks/-/issues/23).
+
Finally, you can find various guides in the [Database guides](index.md) page that cover more specific
topics and use cases. The most frequently required during database reviewing are the following:
diff --git a/doc/development/database/multiple_databases.md b/doc/development/database/multiple_databases.md
new file mode 100644
index 00000000000..2895cef86fc
--- /dev/null
+++ b/doc/development/database/multiple_databases.md
@@ -0,0 +1,101 @@
+---
+stage: Enablement
+group: Sharding
+info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://about.gitlab.com/handbook/engineering/ux/technical-writing/#assignments
+---
+
+# Multiple Databases
+
+In order to scale GitLab, the GitLab application database
+will be [decomposed into multiple
+databases](https://gitlab.com/groups/gitlab-org/-/epics/6168).
+
+## CI Database
+
+Support for configuring the GitLab Rails application to use a distinct
+database for CI tables was added in [GitLab
+14.1](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/64289). This
+feature is still under development, and is not ready for production use.
+
+By default, GitLab is configured to use only one main database. To
+opt-in to use a main database, and CI database, modify the
+`config/database.yml` file to have a `main` and a `ci` database
+configurations. For example, given a `config/database.yml` like below:
+
+```yaml
+development:
+ adapter: postgresql
+ encoding: unicode
+ database: gitlabhq_development
+ host: /path/to/gdk/postgresql
+ pool: 10
+ prepared_statements: false
+ variables:
+ statement_timeout: 120s
+
+test: &test
+ adapter: postgresql
+ encoding: unicode
+ database: gitlabhq_test
+ host: /path/to/gdk/postgresql
+ pool: 10
+ prepared_statements: false
+ variables:
+ statement_timeout: 120s
+```
+
+Edit the `config/database.yml` to look like this:
+
+```yaml
+development:
+ main:
+ adapter: postgresql
+ encoding: unicode
+ database: gitlabhq_development
+ host: /path/to/gdk/postgresql
+ pool: 10
+ prepared_statements: false
+ variables:
+ statement_timeout: 120s
+ ci:
+ adapter: postgresql
+ encoding: unicode
+ database: gitlabhq_development_ci
+ migrations_paths: db/ci_migrate
+ host: /path/to/gdk/postgresql
+ pool: 10
+ prepared_statements: false
+ variables:
+ statement_timeout: 120s
+
+test: &test
+ main:
+ adapter: postgresql
+ encoding: unicode
+ database: gitlabhq_test
+ host: /path/to/gdk/postgresql
+ pool: 10
+ prepared_statements: false
+ variables:
+ statement_timeout: 120s
+ ci:
+ adapter: postgresql
+ encoding: unicode
+ database: gitlabhq_test_ci
+ migrations_paths: db/ci_migrate
+ host: /path/to/gdk/postgresql
+ pool: 10
+ prepared_statements: false
+ variables:
+ statement_timeout: 120s
+```
+
+### Migrations
+
+Any migrations that affect `Ci::BaseModel` models
+and their tables must be placed in two directories for now:
+
+- `db/migrate`
+- `db/ci_migrate`
+
+We aim to keep the schema for both tables the same across both databases.
diff --git a/doc/development/database/not_null_constraints.md b/doc/development/database/not_null_constraints.md
index 9d1850f5504..48b198b46bd 100644
--- a/doc/development/database/not_null_constraints.md
+++ b/doc/development/database/not_null_constraints.md
@@ -175,7 +175,7 @@ class CleanupEpicsWithNullDescription < ActiveRecord::Migration[6.0]
end
```
-#### Validate the text limit (next release)
+#### Validate the `NOT NULL` constraint (next release)
Validating the `NOT NULL` constraint will scan the whole table and make sure that each record is correct.
@@ -201,7 +201,7 @@ end
## `NOT NULL` constraints on large tables
-If you have to clean up a text column for a [high-traffic table](../migration_style_guide.md#high-traffic-tables)
+If you have to clean up a nullable column for a [high-traffic table](../migration_style_guide.md#high-traffic-tables)
(for example, the `artifacts` in `ci_builds`), your background migration will go on for a while and
it will need an additional [background migration cleaning up](../background_migrations.md#cleaning-up)
in the release after adding the data migration.
diff --git a/doc/development/database/pagination_guidelines.md b/doc/development/database/pagination_guidelines.md
index ce656851f86..b7209b4ca30 100644
--- a/doc/development/database/pagination_guidelines.md
+++ b/doc/development/database/pagination_guidelines.md
@@ -66,7 +66,7 @@ Offset-based pagination is the easiest way to paginate over records, however, it
- Avoid using page numbers, use next and previous page buttons.
- Keyset pagination doesn't support page numbers.
- For APIs, advise against building URLs for the next page by "hand".
- - Promote the usage of the [`Link` header](../../api/README.md#pagination-link-header) where the URLs for the next and previous page are provided by the backend.
+ - Promote the usage of the [`Link` header](../../api/index.md#pagination-link-header) where the URLs for the next and previous page are provided by the backend.
- This way changing the URL structure is possible without breaking backward compatibility.
NOTE:
diff --git a/doc/development/database/pagination_performance_guidelines.md b/doc/development/database/pagination_performance_guidelines.md
index ade1e853027..90e4faf2de7 100644
--- a/doc/development/database/pagination_performance_guidelines.md
+++ b/doc/development/database/pagination_performance_guidelines.md
@@ -5,7 +5,7 @@ info: To determine the technical writer assigned to the Stage/Group associated w
---
# Pagination performance guidelines
-
+
The following document gives a few ideas for improving the pagination (sorting) performance. These apply both on [offset](pagination_guidelines.md#offset-pagination) and [keyset](pagination_guidelines.md#keyset-pagination) paginations.
## Tie-breaker column
diff --git a/doc/development/database/rename_database_tables.md b/doc/development/database/rename_database_tables.md
index 743558fae19..8ac50d2c0a0 100644
--- a/doc/development/database/rename_database_tables.md
+++ b/doc/development/database/rename_database_tables.md
@@ -81,7 +81,7 @@ Execute a standard migration (not a post-migration):
when naming indexes, so there is a possibility that not all indexes are properly renamed. After running
the migration locally, check if there are inconsistently named indexes (`db/structure.sql`). Those can be
renamed manually in a separate migration, which can be also part of the release M.N+1.
-- Foreign key columns might still contain the old table name. For smaller tables, follow our [standard column
+- Foreign key columns might still contain the old table name. For smaller tables, follow our [standard column
rename process](../avoiding_downtime_in_migrations.md#renaming-columns)
- Avoid renaming database tables which are using with triggers.
- Table modifications (add or remove columns) are not allowed during the rename process, please make sure that all changes to the table happen before the rename migration is started (or in the next release).
diff --git a/doc/development/database/transaction_guidelines.md b/doc/development/database/transaction_guidelines.md
new file mode 100644
index 00000000000..1c25496b153
--- /dev/null
+++ b/doc/development/database/transaction_guidelines.md
@@ -0,0 +1,117 @@
+---
+stage: Enablement
+group: Database
+info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://about.gitlab.com/handbook/engineering/ux/technical-writing/#assignments
+---
+
+# Transaction guidelines
+
+This document gives a few examples of the usage of database transactions in application code.
+
+For further reference please check PostgreSQL documentation about [transactions](https://www.postgresql.org/docs/current/tutorial-transactions.html).
+
+## Database decomposition and sharding
+
+The [sharding group](https://about.gitlab.com/handbook/engineering/development/enablement/sharding) plans to split the main GitLab database and move some of the database tables to other database servers.
+
+The group will start decomposing the `ci_*` related database tables first. To maintain the current application development experience, tooling and static analyzers will be added to the codebase to ensure correct data access and data modification methods. By using the correct form for defining database transactions, we can save significant refactoring work in the future.
+
+## The transaction block
+
+The `ActiveRecord` library provides a convenient way to group database statements into a transaction.
+
+```ruby
+issue = Issue.find(10)
+project = issue.project
+
+ApplicationRecord.transaction do
+ issue.update!(title: 'updated title')
+ project.update!(last_update_at: Time.now)
+end
+```
+
+This transaction involves two database tables, in case of an error, each `UPDATE` statement will be rolled back to the previous, consistent state.
+
+NOTE:
+Avoid referencing the `ActiveRecord::Base` class and use `ApplicationRecord` instead.
+
+## Transaction and database locks
+
+When a transaction block is opened, the database will try to acquire the necessary locks on the resources. The type of locks will depend on the actual database statements.
+
+Consider a concurrent update scenario where the following code is executed at the same time from two different processes:
+
+```ruby
+issue = Issue.find(10)
+project = issue.project
+
+ApplicationRecord.transaction do
+ issue.update!(title: 'updated title')
+ project.update!(last_update_at: Time.now)
+end
+```
+
+The database will try to acquire the `FOR UPDATE` lock for the referenced `issue` and `project` records. In our case, we have two competing transactions for these locks, one of them will successfully acquire them. The other transaction will have to wait in the lock queue until the first transaction finishes. The execution of the second transaction is blocked at this point.
+
+## Transaction speed
+
+To prevent lock contention and maintain stable application performance, the transaction block should finish as fast as possible. When a transaction acquires locks, it will hold on to them until the transaction finishes.
+
+Apart from application performance, long-running transactions can also affect the application upgrade processes by blocking database migrations.
+
+### Dangerous example: 3rd party API calls
+
+Consider the following example:
+
+```ruby
+member = Member.find(5)
+
+Member.transaction do
+ member.update!(notification_email_sent: true)
+
+ member.send_notification_email
+end
+```
+
+Here, we ensure that the `notification_email_sent` column is updated only when the `send_notification_email` method succeeds. The `send_notification_email` method executes a network request to an email sending service. If the underlying infrastructure does not specify timeouts or the network call takes too long time, the database transaction will stay open.
+
+Ideally, a transaction should only contain database statements.
+
+Avoid doing in a `transaction` block:
+
+- External network requests such as: triggering Sidekiq jobs, sending emails, HTTP API calls and running database statements using a different connection.
+- File system operations.
+- Long, CPU intensive computation.
+- Calling `sleep(n)`.
+
+## Explicit model referencing
+
+If a transaction modifies records from the same database table, it's advised to use the `Model.transaction` block:
+
+```ruby
+build_1 = Ci::Build.find(1)
+build_2 = Ci::Build.find(2)
+
+Ci::Build.transaction do
+ build_1.touch
+ build_2.touch
+end
+```
+
+The transaction above will use the same database connection for the transaction as the models in the `transaction` block. In a multi-database environment the following example would be dangerous:
+
+```ruby
+# `ci_builds` table is located on another database
+class Ci::Build < CiDatabase
+end
+
+build_1 = Ci::Build.find(1)
+build_2 = Ci::Build.find(2)
+
+ActiveRecord::Base.transaction do
+ build_1.touch
+ build_2.touch
+end
+```
+
+The `ActiveRecord::Base` class uses a different database connection than the `Ci::Build` records. The two statements in the transaction block will not be part of the transaction and will not be rolled back in case something goes wrong. They act as 3rd part calls.
diff --git a/doc/development/database_review.md b/doc/development/database_review.md
index a25714ca6cf..88639758a9d 100644
--- a/doc/development/database_review.md
+++ b/doc/development/database_review.md
@@ -25,7 +25,7 @@ A database review is required for:
generally up to the author of a merge request to decide whether or
not complex queries are being introduced and if they require a
database review.
-- Changes in usage data metrics that use `count`, `distinct_count` and `estimate_batch_distinct_count`.
+- Changes in Service Data metrics that use `count`, `distinct_count` and `estimate_batch_distinct_count`.
These metrics could have complex queries over large tables.
See the [Product Intelligence Guide](https://about.gitlab.com/handbook/product/product-intelligence-guide/)
for implementation details.
@@ -43,7 +43,7 @@ If your merge request description does not include these items, the review will
If new migrations are introduced, in the MR **you are required to provide**:
-- The output of both migrating and rolling back for all migrations
+- The output of both migrating (`db:migrate`) and rolling back (`db:rollback`) for all migrations.
If new queries have been introduced or existing queries have been updated, **you are required to provide**:
@@ -104,7 +104,7 @@ the following preparations into account.
`db/schema_migrations` were added or removed.
- Make migrations reversible by using the `change` method or include a `down` method when using `up`.
- Include either a rollback procedure or describe how to rollback changes.
-- Add the output of both migrating and rolling back for all migrations into the MR description.
+- Add the output of both migrating (`db:migrate`) and rolling back (`db:rollback`) for all migrations into the MR description.
- Ensure the down method reverts the changes in `db/structure.sql`.
- Update the migration output whenever you modify the migrations during the review process.
- Add tests for the migration in `spec/migrations` if necessary. See [Testing Rails migrations at GitLab](testing_guide/testing_migrations_guide.md) for more details.
@@ -117,6 +117,9 @@ test its execution using `CREATE INDEX CONCURRENTLY` in the `#database-lab` Slac
- If the execution from `#database-lab` is longer than `1h`, the index should be moved to a [post-migration](post_deployment_migrations.md).
Keep in mind that in this case you may need to split the migration and the application changes in separate releases to ensure the index
will be in place when the code that needs it will be deployed.
+- Trigger the [database testing](../architecture/blueprints/database_testing/index.md) job (`db:gitlabcom-database-testing`) in the `test` stage.
+ - This job runs migrations in a production-like environment (similar to `#database_lab`) and posts to the MR its findings (queries, runtime, size change).
+ - Review migration runtimes and any warnings.
#### Preparation when adding or modifying queries
@@ -148,7 +151,7 @@ test its execution using `CREATE INDEX CONCURRENTLY` in the `#database-lab` Slac
- Provide a public link to the plan from either:
- [postgres.ai](https://postgres.ai/): Follow the link in `#database-lab` and generate a shareable, public link
by clicking the **Share** button in the upper right corner.
- - [explain.depesz.com](https://explain.depesz.com): Paste both the plan and the query used in the form.
+ - [explain.depesz.com](https://explain.depesz.com) or [explain.dalibo.com](https://explain.dalibo.com): Paste both the plan and the query used in the form.
- When providing query plans, make sure it hits enough data:
- You can use a GitLab production replica to test your queries on a large scale,
through the `#database-lab` Slack channel or through [ChatOps](understanding_explain_plans.md#chatops).
diff --git a/doc/development/deprecation_guidelines/index.md b/doc/development/deprecation_guidelines/index.md
index 07a29b17ddc..3543345aa34 100644
--- a/doc/development/deprecation_guidelines/index.md
+++ b/doc/development/deprecation_guidelines/index.md
@@ -14,8 +14,7 @@ changes to GitLab features.
It's important to understand the difference between **deprecation** and
**removal**:
-**Deprecation** is the process of flagging/marking/announcing that a feature
-is scheduled for removal in a future version of GitLab.
+**Deprecation** is the process of flagging/marking/announcing that a feature is no longer fully supported and may be removed in a future version of GitLab.
**Removal** is the process of actually removing a feature that was previously
deprecated.
@@ -31,7 +30,7 @@ Deprecations should be announced via [release posts](https://about.gitlab.com/ha
Generally, feature or configuration can be removed/changed only on major release.
It also should be [deprecated in advance](https://about.gitlab.com/handbook/marketing/blog/release-posts/#deprecations).
-For API removals, see the [GraphQL](../../api/graphql/index.md#deprecation-and-removal-process) and [GitLab API](../../api/README.md#compatibility-guidelines) guidelines.
+For API removals, see the [GraphQL](../../api/graphql/index.md#deprecation-and-removal-process) and [GitLab API](../../api/index.md#compatibility-guidelines) guidelines.
For configuration removals, see the [Omnibus deprecation policy](https://docs.gitlab.com/omnibus/package-information/deprecation_policy.html).
diff --git a/doc/development/documentation/index.md b/doc/development/documentation/index.md
index 12a1912dd25..91215ca21b4 100644
--- a/doc/development/documentation/index.md
+++ b/doc/development/documentation/index.md
@@ -115,15 +115,15 @@ each page should have a metadata tag called `type`. It can be one or more of the
following:
- `index`: It consists mostly of a list of links to other pages.
- [Example page](../../README.md).
+ [Example page](../../index.md).
- `concepts`: The background or context of a subject.
[Example page](../../topics/autodevops/index.md).
- `howto`: Specific use case instructions.
- [Example page](../../ssh/README.md).
+ [Example page](../../ssh/index.md).
- `tutorial`: Learn a process/concept by doing.
[Example page](../../gitlab-basics/start-using-git.md).
- `reference`: A collection of information used as a reference to use a feature
- or a functionality. [Example page](../../ci/yaml/README.md).
+ or a functionality. [Example page](../../ci/yaml/index.md).
### Redirection metadata
@@ -395,7 +395,7 @@ This is preferred over static paths, as the helper also works on instances insta
### GitLab `/help` tests
Several [RSpec tests](https://gitlab.com/gitlab-org/gitlab/-/blob/master/spec/features/help_pages_spec.rb)
-are run to ensure GitLab documentation renders and works correctly. In particular, that [main docs landing page](../../README.md) works correctly from `/help`.
+are run to ensure GitLab documentation renders and works correctly. In particular, that [main docs landing page](../../index.md) works correctly from `/help`.
For example, [GitLab.com's `/help`](https://gitlab.com/help).
## Docs site architecture
@@ -475,12 +475,12 @@ If you want to know the in-depth details, here's what's really happening:
The following GitLab features are used among others:
-- [Manual actions](../../ci/yaml/README.md#whenmanual)
-- [Multi project pipelines](../../ci/multi_project_pipelines.md)
+- [Manual actions](../../ci/yaml/index.md#whenmanual)
+- [Multi project pipelines](../../ci/pipelines/multi_project_pipelines.md)
- [Review Apps](../../ci/review_apps/index.md)
-- [Artifacts](../../ci/yaml/README.md#artifacts)
+- [Artifacts](../../ci/yaml/index.md#artifacts)
- [Specific runner](../../ci/runners/runners_scope.md#prevent-a-specific-runner-from-being-enabled-for-other-projects)
-- [Pipelines for merge requests](../../ci/merge_request_pipelines/index.md)
+- [Pipelines for merge requests](../../ci/pipelines/merge_request_pipelines.md)
## Testing
@@ -556,6 +556,3 @@ padding. The padding is added around the element, enlarging the screenshot area.
#### Live example
Please use `spec/docs_screenshots/container_registry_docs.rb` as a guide and as an example to create your own scripts.
-
-<!-- This redirect file can be deleted after February 1, 2021. -->
-<!-- Before deletion, see: https://docs.gitlab.com/ee/development/documentation/#move-or-rename-a-page -->
diff --git a/doc/development/documentation/site_architecture/global_nav.md b/doc/development/documentation/site_architecture/global_nav.md
index aeaf12e23d1..3845586ce60 100644
--- a/doc/development/documentation/site_architecture/global_nav.md
+++ b/doc/development/documentation/site_architecture/global_nav.md
@@ -12,21 +12,40 @@ description: "Learn how GitLab docs' global navigation works and how to add new
> - [Per-project](https://gitlab.com/gitlab-org/gitlab-docs/-/merge_requests/498) navigation added in GitLab 12.2.
> - [Unified global navigation](https://gitlab.com/gitlab-org/gitlab-docs/-/merge_requests/1482) added in GitLab 13.11.
-Global navigation (the left-most pane in our three pane documentation) provides:
+Global navigation is the left-most pane in the documentation. You can use the
+"global nav" to browse the content.
-- A high-level grouped view of product features.
-- The ability to discover new features by browsing the menu structure.
-- A way to allow the reader to focus on product areas.
-- The ability to refine landing pages, so they don't have to do all the work of surfacing
- every page contained within the documentation.
+Research shows that people use Google to search for GitLab product documentation. When they land on a result,
+we want them to find topics nearby that are related to the content they're reading. The global nav provides this information.
-## Adding new items
+At the highest level, our global nav is workflow-based. Navigation needs to help users build a mental model of how to use GitLab.
+The levels under each of the higher workflow-based topics are the names of features.
+For example:
+
+**Use GitLab** (_workflow_) **> Build your application** (_workflow_) **> CI/CD** (_feature_) **> Pipelines** (_feature)
+
+## Choose the right words for your navigation entry
+
+Before you add an item to the left nav, choose the parts of speech you want to use.
+
+The nav entry should match the page title. However, if the title is too long,
+when you shorten the phrase, use either:
+
+- A noun, like **Merge requests**.
+- An active verb, like **Install GitLab** or **Get started with runners**.
+
+Use a phrase that clearly indicates what the page is for. For example, **Get started** is not
+as helpful as **Get started with runners**.
+
+## Add a navigation entry
+
+All topics should be included in the left nav.
To add a topic to the global nav, edit
[`navigation.yaml`](https://gitlab.com/gitlab-org/gitlab-docs/blob/main/content/_data/navigation.yaml)
and add your item.
-All new pages need a new navigation item. Without a navigation, the page becomes "orphaned". That
+All new pages need a navigation item. Without a navigation, the page becomes "orphaned." That
is:
- The navigation shuts when the page is opened, and the reader loses their place.
@@ -93,7 +112,7 @@ for clarity.
To see the improvements planned, check the
[global nav epic](https://gitlab.com/groups/gitlab-org/-/epics/1599).
-**Do not** [add items](#adding-new-items) to the global nav without
+**Do not** [add items](#add-a-navigation-entry) to the global nav without
the consent of one of the technical writers.
## Composition
diff --git a/doc/development/documentation/site_architecture/index.md b/doc/development/documentation/site_architecture/index.md
index d410d77a1a0..a1e08a9c19b 100644
--- a/doc/development/documentation/site_architecture/index.md
+++ b/doc/development/documentation/site_architecture/index.md
@@ -8,7 +8,7 @@ info: To determine the technical writer assigned to the Stage/Group associated w
The [`gitlab-docs`](https://gitlab.com/gitlab-org/gitlab-docs) project hosts
the repository which is used to generate the GitLab documentation website and
-is deployed to <https://docs.gitlab.com>. It uses the [Nanoc](https://nanoc.ws/)
+is deployed to <https://docs.gitlab.com>. It uses the [Nanoc](https://nanoc.app/)
static site generator.
## Architecture
@@ -146,7 +146,7 @@ Read more about the [deployment process](deployment_process.md).
The easiest way to achieve something similar to
[Jekyll's data files](https://jekyllrb.com/docs/datafiles/) in Nanoc is by
-using the [`@items`](https://nanoc.ws/doc/reference/variables/#items-and-layouts)
+using the [`@items`](https://nanoc.app/doc/reference/variables/#items-and-layouts)
variable.
The data file must be placed inside the `content/` directory and then it can
diff --git a/doc/development/documentation/structure.md b/doc/development/documentation/structure.md
index 871fb26ce08..ac934673ee2 100644
--- a/doc/development/documentation/structure.md
+++ b/doc/development/documentation/structure.md
@@ -7,61 +7,40 @@ description: What to include in GitLab documentation pages.
# Documentation topic types
-At GitLab, we have not traditionally used topic types. However, we are starting to
-move in this direction, and we now use four topic types:
+At GitLab, we have not traditionally used types for our content. However, we are starting to
+move in this direction, and we now use four primary topic types:
- [Concept](#concept)
- [Task](#task)
- [Reference](#reference)
- [Troubleshooting](#troubleshooting)
-Each page contains multiple topic types. For example,
-a page with the title `Pipelines`, which is generated from a file called `index.md`,
-can include a concept and multiple task and reference topics.
+In general, each page in our docset contains multiple topics. (Each heading indicates a new topic.)
+Each topic on a page should be a specific topic type. For example,
+a page with the title `Pipelines` can include topics that are concepts and tasks.
-GitLab also uses high-level landing pages.
-
-## Landing pages
-
-Landing pages are topics that group other topics and help a user to navigate a section.
-
-Users who are using the in-product help do not have a left nav,
-and need these topics to navigate the documentation.
-
-These topics can also help other users find the most important topics
-in a section.
-
-Landing page topics should be in this format:
-
-```markdown
-# Title (a noun, like "CI/CD or "Analytics")
-
-Brief introduction to the concept or product area.
-Include the reason why someone would use this thing.
-
-- Bulleted list of important related topics.
-- These links are needed because users of in-product help do not have left navigation.
-```
+A page might also contain only one type of information. These pages are generally one of our
+[other content types](#other-types-of-content).
## Concept
-A concept topic introduces a single feature or concept.
+A concept introduces a single feature or concept.
A concept should answer the questions:
- What is this?
- Why would I use it?
-Think of everything someone might want to know if they've never heard of this topic before.
+Think of everything someone might want to know if they've never heard of this concept before.
Don't tell them **how** to do this thing. Tell them **what it is**.
-If you start describing another topic, start a new concept and link to it.
+If you start describing another concept, start a new concept and link to it.
-Also, do not use "Overview" or "Introduction" for the topic title. Instead,
+Also, do not use **Overview** or **Introduction** for the title. Instead,
use a noun or phrase that someone would search for.
-Concept topics should be in this format:
+Concepts should be in this format:
```markdown
# Title (a noun, like "Widgets")
@@ -71,14 +50,14 @@ A paragraph that explains what this thing is.
Another paragraph that explains what this thing is.
Remember, if you start to describe about another concept, stop yourself.
-Each concept topic should be about one concept only.
+Each concept should be about one concept only.
```
## Task
-A task topic gives instructions for how to complete a procedure.
+A task gives instructions for how to complete a procedure.
-Task topics should be in this format:
+Tasks should be in this format:
```markdown
# Title (starts with an active verb, like "Create a widget" or "Delete a widget")
@@ -113,20 +92,21 @@ Prerequisites:
To create an issue:
-1. Go to **Issues > List**.
-1. In the top right, select **New issue**.
-1. Complete the fields. (If you have a reference topic that lists each field, link to it here.)
+1. On the top bar, select **Menu > Projects** and find your project.
+1. On the left sidebar, select **Issues > List**.
+1. In the top right corner, select **New issue**.
+1. Complete the fields. (If you have reference content that lists each field, link to it here.)
1. Select **Create issue**.
The issue is created. You can view it by going to **Issues > List**.
```
-If you have several tasks on a page that share prerequisites, you can make a
-reference topic with the title **Prerequisites**, and link to it.
+If you have several tasks on a page that share prerequisites, you can use the title
+**Prerequisites**, and link to it.
## Reference
-A reference topic provides information in an easily-scannable format,
+Reference information should be in an easily-scannable format,
like a table or list. It's similar to a dictionary or encyclopedia entry.
```markdown
@@ -139,18 +119,18 @@ Introductory sentence.
| **Name** | Descriptive sentence about the setting. |
```
-If a feature or concept has its own prerequisites, you can use the reference
-topic type to create a **Prerequisites** header for the information.
+If a feature or concept has its own prerequisites, you can use reference
+content to create a **Prerequisites** header for the information.
## Troubleshooting
-Troubleshooting topics can be one of two categories:
+Troubleshooting can be one of two categories:
-- **Troubleshooting task.** This topic is written the same as a [standard task topic](#task).
+- **Troubleshooting task.** This information is written the same way as a [standard task](#task).
For example, "Run debug tools" or "Verify syntax."
-- **Troubleshooting reference.** This topic has a specific format.
+- **Troubleshooting reference.** This information has a specific format.
-Troubleshooting reference topics should be in this format:
+Troubleshooting reference information should be in this format:
```markdown
# Title (the error message or a description of it)
@@ -162,25 +142,125 @@ This issue occurs when...
The workaround is...
```
-For the topic title:
+For the heading:
-- Consider including at least a partial error message in the title.
+- Consider including at least a partial error message.
- Use fewer than 70 characters.
-Remember to include the complete error message in the topics content if it is
-not complete in the title.
+If you do not put the full error in the title, include it in the body text.
+
+## Other types of content
+
+There are other types of content in the GitLab documentation that don't
+classify as one of the four primary [topic types](#documentation-topic-types).
+These include:
+
+- [Tutorials](#tutorials)
+- [Get started pages](#get-started)
+- [Topics and resources pages](#topics-and-resources-pages)
+
+In most cases, these pages are standalone.
+
+### Tutorials
+
+A tutorial is an end-to-end walkthrough of a complex workflow or scenario.
+In general, you might consider using a tutorial when:
+
+- The workflow requires a number of sequential steps where each step consists
+ of sub-steps.
+- The steps cover a variety of GitLab features or third-party tools.
+
+Tutorials are learning aids that complement our core documentation.
+They do not introduce new features.
+Always use the primary [topic types](#documentation-topic-types) to document new features.
+
+Tutorials should be in this format:
+
+```markdown
+# Title (starts with "Tutorial:" followed by an active verb, like "Tutorial: Create a website")
+
+A paragraph that explains what the tutorial does, and the expected outcome.
+
+To create a website:
+
+- [Step 1: Do the first task](#do-the-first-task)
+- [Step 2: Do the second task](#do-the-second-task)
+
+Prerequisites (optional):
+
+- Thing 1
+- Thing 2
+- Thing 3
+
+## Do the first task
+
+To do step 1:
+
+1. First step.
+2. Another step.
+3. Another step.
+
+## Do the second task
+
+Before you begin, make sure you have [done the first task](#do-the-first-task).
+
+To do step 2:
+
+1. First step.
+2. Another step.
+3. Another step.
+```
+
+### Get started
+
+A get started page is a set of steps to help a user get set up
+quickly to use a single GitLab feature or tool.
+It might consist of more than one task.
+
+Get started pages should be in this format:
+
+```markdown
+# Title ("Get started with <feature>")
+
+Complete the following steps to ... .
+
+1. First step.
+1. Another step.
+1. Another step.
+
+If you need to add more than one task,
+consider using subsections for each distinct task.
+```
-## Other information on a topic
+### Topics and resources pages
-Topics include other information.
+This is a page with a list of links that point to important sections
+of documentation for a specific GitLab feature or tool.
-For example:
+We do not encourage the use of these types of pages.
+Lists like this can get out of date quickly and offer little value to users.
+We've included this type here because:
-- Each topic must have a [tier badge](styleguide/index.md#product-tier-badges).
-- New topics must have information about the
- [GitLab version where the feature was introduced](styleguide/index.md#where-to-put-version-text).
+- There are existing pages in the documentation that follow this format,
+ and they should be standardized.
+- They can sometimes help navigate a complex section of the documentation.
+
+If you come across a page like this
+or you have to create one, use this format:
+
+```markdown
+# Title ("Topics and resources for <feature>")
+
+Brief sentence to describe the feature.
+
+Refer to these resources for more information about <this feature>:
+
+- Link 1
+- Link 2
+- Link 3
+```
-### Help and feedback section
+## Help and feedback section
This section ([introduced](https://gitlab.com/gitlab-org/gitlab-docs/-/merge_requests/319) in GitLab 11.4)
is displayed at the end of each document and can be omitted by adding a key into
@@ -195,7 +275,7 @@ feedback: false
The default is to leave it there. If you want to omit it from a document, you
must check with a technical writer before doing so.
-#### Disqus
+### Disqus
We also have integrated the docs site with Disqus (introduced by
[!151](https://gitlab.com/gitlab-org/gitlab-docs/-/merge_requests/151)),
@@ -210,7 +290,7 @@ comments: false
---
```
-We're hiding comments only in main index pages, such as [the main documentation index](../../README.md),
+We're hiding comments only in main index pages, such as [the main documentation index](../../index.md),
since its content is too broad to comment on. Before omitting Disqus, you must
check with a technical writer.
@@ -221,7 +301,7 @@ The click events in the feedback section are tracked with Google Tag Manager.
The conversions can be viewed on Google Analytics by navigating to
**Behavior > Events > Top events > docs**.
-### Guidelines for good practices
+## Guidelines for good practices
> [Introduced](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/36576/) in GitLab 13.2 as GitLab Development documentation.
diff --git a/doc/development/documentation/styleguide/index.md b/doc/development/documentation/styleguide/index.md
index 7787366dbf4..a5345f3b52d 100644
--- a/doc/development/documentation/styleguide/index.md
+++ b/doc/development/documentation/styleguide/index.md
@@ -193,7 +193,7 @@ included in backticks. For example:
We include concept and task topic types in the same larger topic.
-In general, we have one topic that's a [landing page](../structure.md#landing-pages).
+In general, we have one topic that's a landing page.
Below that topic in the left nav are individual topics. Each of these include a concept
and multiple related tasks, reference, and troubleshooting topics.
@@ -304,7 +304,6 @@ GitLab documentation should be clear and easy to understand. Avoid unnecessary w
- Be clear, concise, and stick to the goal of the topic.
- Write in US English with US grammar. (Tested in [`British.yml`](https://gitlab.com/gitlab-org/gitlab/-/blob/master/doc/.vale/gitlab/British.yml).)
-- Use [inclusive language](#inclusive-language).
- Rewrite to avoid wordiness:
- there is
- there are
@@ -385,80 +384,6 @@ references to user interface elements. For example:
- To sign in to product X, enter your credentials, and then select **Log in**.
-### Inclusive language
-
-We strive to create documentation that's inclusive. This section includes
-guidance and examples for these categories:
-
-- [Gender-specific wording](#avoid-gender-specific-wording).
- (Tested in [`InclusionGender.yml`](https://gitlab.com/gitlab-org/gitlab/-/blob/master/doc/.vale/gitlab/InclusionGender.yml).)
-- [Ableist language](#avoid-ableist-language).
- (Tested in [`InclusionAbleism.yml`](https://gitlab.com/gitlab-org/gitlab/-/blob/master/doc/.vale/gitlab/InclusionAbleism.yml).)
-- [Cultural sensitivity](#culturally-sensitive-language).
- (Tested in [`InclusionCultural.yml`](https://gitlab.com/gitlab-org/gitlab/-/blob/master/doc/.vale/gitlab/InclusionCultural.yml).)
-
-We write our developer documentation with inclusivity and diversity in mind. This
-page is not an exhaustive reference, but describes some general guidelines and
-examples that illustrate some best practices to follow.
-
-#### Avoid gender-specific wording
-
-When possible, use gender-neutral pronouns. For example, you can use a singular
-[they](https://developers.google.com/style/pronouns#gender-neutral-pronouns) as
-a gender-neutral pronoun.
-
-Avoid the use of gender-specific pronouns, unless referring to a specific person.
-
-<!-- vale gitlab.InclusionGender = NO -->
-
-| Use | Avoid |
-|-----------------------------------|---------------------------------|
-| People, humanity | Mankind |
-| GitLab Team Members | Manpower |
-| You can install; They can install | He can install; She can install |
-
-<!-- vale gitlab.InclusionGender = YES -->
-
-If you need to set up [Fake user information](#fake-user-information), use
-diverse or non-gendered names with common surnames.
-
-#### Avoid ableist language
-
-Avoid terms that are also used in negative stereotypes for different groups.
-
-<!-- vale gitlab.InclusionAbleism = NO -->
-
-| Use | Avoid |
-|------------------------|----------------------|
-| Check for completeness | Sanity check |
-| Uncertain outliers | Crazy outliers |
-| Slows the service | Cripples the service |
-| Placeholder variable | Dummy variable |
-| Active/Inactive | Enabled/Disabled |
-| On/Off | Enabled/Disabled |
-
-<!-- vale gitlab.InclusionAbleism = YES -->
-
-Credit: [Avoid ableist language](https://developers.google.com/style/inclusive-documentation#ableist-language)
-in the Google Developer Style Guide.
-
-#### Culturally sensitive language
-
-Avoid terms that reflect negative cultural stereotypes and history. In most
-cases, you can replace terms such as `master` and `slave` with terms that are
-more precise and functional, such as `primary` and `secondary`.
-
-<!-- vale gitlab.InclusionCultural = NO -->
-
-| Use | Avoid |
-|----------------------|-----------------------|
-| Primary / secondary | Master / slave |
-| Allowlist / denylist | Blacklist / whitelist |
-
-<!-- vale gitlab.InclusionCultural = YES -->
-
-For more information see the [Internet Draft specification](https://tools.ietf.org/html/draft-knodel-terminology-02).
-
### Fake user information
You may need to include user information in entries such as a REST call or user profile.
@@ -574,7 +499,7 @@ Follow these guidelines for punctuation:
| Do not use tabs for indentation. Use spaces instead. You can configure your code editor to output spaces instead of tabs when pressing the tab key. | --- |
| Use serial commas (_Oxford commas_) before the final _and_ or _or_ in a list of three or more items. (Tested in [`OxfordComma.yml`](https://gitlab.com/gitlab-org/gitlab/-/blob/master/doc/.vale/gitlab/OxfordComma.yml).) | _You can create new issues, merge requests, and milestones._ |
| Always add a space before and after dashes when using it in a sentence (for replacing a comma, for example). | _You should try this - or not._ |
-| Always use lowercase after a colon. | Linked issues: a way to create a relationship between issues._ |
+| When a colon is part of a sentence, always use lowercase after the colon. | _Linked issues: a way to create a relationship between issues._ |
<!-- vale gitlab.Repetition = YES -->
@@ -812,6 +737,35 @@ page), use these phrases:
| No | `**{dotted-circle}** No` | **{dotted-circle}** No |
| Yes | `**{check-circle}** Yes` | **{check-circle}** Yes |
+### Footnotes
+
+To indicate a footnote, use the HTML tag `<sup>` with a number.
+Put the tag at the end of the sentence or term.
+
+For the footnotes below the table, use a bold number followed by a sentence.
+
+For example:
+
+```markdown
+| App name | Description |
+|:---------|:---------------------------------|
+| App A | Description text. <sup>1</sup> |
+| App B | Description text. <sup>2</sup> |
+
+1. This is the footnote.
+1. This is the other footnote.
+```
+
+This text renders this output:
+
+| App name | Description |
+|:---------|:---------------------------------|
+| App A | Description text. <sup>1</sup> |
+| App B | Description text. <sup>2</sup> |
+
+1. This is the footnote.
+1. This is the other footnote.
+
## Quotes
Valid for Markdown content only, not for front matter entries:
@@ -1093,21 +1047,23 @@ elements:
To be consistent, use this format when you write about UI navigation.
-1. On the top bar, select **Menu > Project** and find your project.
+1. On the top bar, select **Menu > Projects** and find your project.
1. On the left sidebar, select **Settings > CI/CD**.
1. Expand **General pipelines**.
Another example:
-1. On the top bar, select **Menu > Group** and find your group.
+1. On the top bar, select **Menu > Groups** and find your group.
1. On the left sidebar, select **Settings > CI/CD**.
1. Expand **General pipelines**.
An Admin Area example:
-`1. On the top bar, select **Menu >** **{admin}** **Admin**.`
+```markdown
+1. On the top bar, select **Menu >** **{admin}** **Admin**.
+```
-This text generates this HTML:
+This text renders this output:
1. On the top bar, select **Menu >** **{admin}** **Admin**.
@@ -1510,25 +1466,6 @@ It renders on the GitLab documentation site as:
To maintain consistency through GitLab documentation, use these styles and terms.
-### Merge requests (MRs)
-
-Merge requests allow you to exchange changes you made to source code and
-collaborate with other people on the same project.
-
-- Use lowercase _merge requests_ regardless of whether referring to the feature
- or individual merge requests.
-
-As noted in the GitLab [Writing Style Guidelines](https://about.gitlab.com/handbook/communication/#writing-style-guidelines),
-if you use the _MR_ acronym, expand it at least once per document page.
-Typically, the first use would be phrased as _merge request (MR)_ with subsequent
-instances being _MR_.
-
-Examples:
-
-- "We prefer GitLab merge requests".
-- "Open a merge request to fix a broken link".
-- "After you open a merge request (MR), submit your MR for review and approval".
-
### Describe UI elements
Follow these styles when you're describing user interface elements in an
@@ -1558,7 +1495,7 @@ elements:
## GitLab versions
-GitLab product documentation pages (not including [Contributor and Development](../../README.md)
+GitLab product documentation pages (not including [Contributor and Development](../../index.md)
pages in the `/development` directory) can include version information to help
users be aware of recent improvements or additions.
@@ -1594,7 +1531,8 @@ the section. The version information must:
- Be surrounded by blank lines.
- Start with `>`. If there are multiple bullets, each line must start with `> -`.
- The string must include these words in this order (capitalization doesn't matter):
- - `introduced`, `deprecated`, `moved`
+ - `introduced`, `deprecated`, `changed`, `moved`, `recommended` (as in the
+ [feature flag documentation](../feature_flags.md)), `removed`, or `renamed`
- `in` or `to`
- `GitLab`
- Whenever possible, include a link to the completed issue, merge request, or epic
@@ -1757,7 +1695,7 @@ badges and tooltips (`<span class="badge-trigger free">`).
| _Only_ GitLab Ultimate SaaS (no self-managed instances) | `**(ULTIMATE SAAS)**` |
Topics that mention the `gitlab.rb` file are referring to
-self-managed instances of GitLab. To prevent confusion, include the relevant `TIER ONLY`
+self-managed instances of GitLab. To prevent confusion, include the relevant `TIER SELF`
tier badge on the highest applicable heading level on
the page.
diff --git a/doc/development/documentation/styleguide/word_list.md b/doc/development/documentation/styleguide/word_list.md
index fd8766bbfb6..3fba9078bab 100644
--- a/doc/development/documentation/styleguide/word_list.md
+++ b/doc/development/documentation/styleguide/word_list.md
@@ -9,6 +9,11 @@ description: 'Writing styles, markup, formatting, and other standards for GitLab
To help ensure consistency in the documentation, follow this guidance.
+For guidance not on this page, we defer to these style guides:
+
+- [Microsoft Style Guide](https://docs.microsoft.com/en-us/style-guide/welcome/)
+- [Google Developer Documentation Style Guide](https://developers.google.com/style)
+
<!-- vale off -->
<!-- markdownlint-disable -->
@@ -22,7 +27,13 @@ Use **administration**, **administrator**, **administer**, or **Admin Area** ins
## allow, enable
-Try to avoid, unless you are talking about security-related features. For example, instead of "This feature allows you to create a pipeline," use "Use this feature to create a pipeline." This phrasing is more active and is from the user perspective, rather than the person who implemented the feature. [View details](https://docs.microsoft.com/en-us/style-guide/a-z-word-list-term-collections/a/allow-allows).
+Try to avoid, unless you are talking about security-related features. For example:
+
+- Avoid: This feature allows you to create a pipeline.
+- Use instead: Use this feature to create a pipeline.
+
+This phrasing is more active and is from the user perspective, rather than the person who implemented the feature.
+[View details in the Microsoft style guide](https://docs.microsoft.com/en-us/style-guide/a-z-word-list-term-collections/a/allow-allows).
## and/or
@@ -32,25 +43,49 @@ Instead of **and/or**, use or or rewrite the sentence to spell out both options.
Try to avoid extra words when referring to an example or table in a documentation page, but if required, use **following** instead.
+## blacklist
+
+Do not use. Another option is **denylist**. ([Vale](../testing.md#vale) rule: [`InclusionCultural.yml`](https://gitlab.com/gitlab-org/gitlab/-/blob/master/doc/.vale/gitlab/InclusionCultural.yml))
+
## currently
Do not use when talking about the product or its features. The documentation describes the product as it is today. ([Vale](../testing.md#vale) rule: [`CurrentStatus.yml`](https://gitlab.com/gitlab-org/gitlab/-/blob/master/doc/.vale/gitlab/CurrentStatus.yml))
## Developer
-When writing about the Developer role, use a capital "D." Do not use the phrase, "if you are a developer"
-to mean someone who is assigned the Developer role. Instead, write it out. "If you are assigned the Developer role..."
+When writing about the Developer role:
-Do not use "Developer permissions." A user who is assigned the Developer role has a set of associated permissions.
+- Use a capital **D**.
+- Do not use the phrase, **if you are a developer** to mean someone who is assigned the Developer
+ role. Instead, write it out. For example, **if you are assigned the Developer role**.
+- To describe a situation where the Developer role is the minimum required:
+ - Avoid: **the Developer role or higher**
+ - Use instead: **at least the Developer role**
+
+Do not use **Developer permissions**. A user who is assigned the Developer role has a set of associated permissions.
+
+## disable
+
+See [the Microsoft style guide](https://docs.microsoft.com/en-us/style-guide/a-z-word-list-term-collections/d/disable-disabled) for guidance.
+Use **inactive** or **off** instead. ([Vale](../testing.md#vale) rule: [`InclusionAbleism.yml`](https://gitlab.com/gitlab-org/gitlab/-/blob/master/doc/.vale/gitlab/InclusionAbleism.yml))
## easily
-Do not use. If the user doesn't find the process to be these things, we lose their trust.
+Do not use. If the user doesn't find the process to be easy, we lose their trust.
## e.g.
Do not use Latin abbreviations. Use **for example**, **such as**, **for instance**, or **like** instead. ([Vale](../testing.md#vale) rule: [`LatinTerms.yml`](https://gitlab.com/gitlab-org/gitlab/-/blob/master/doc/.vale/gitlab/LatinTerms.yml))
+## email
+
+Do not use **e-mail** with a hyphen. When plural, use **emails** or **email messages**.
+
+## enable
+
+See [the Microsoft style guide](https://docs.microsoft.com/en-us/style-guide/a-z-word-list-term-collections/e/enable-enables) for guidance.
+Use **active** or **on** instead. ([Vale](../testing.md#vale) rule: [`InclusionAbleism.yml`](https://gitlab.com/gitlab-org/gitlab/-/blob/master/doc/.vale/gitlab/InclusionAbleism.yml))
+
## future tense
When possible, use present tense instead. For example, use `after you execute this command, GitLab displays the result` instead of `after you execute this command, GitLab will display the result`. ([Vale](../testing.md#vale) rule: [`FutureTense.yml`](https://gitlab.com/gitlab-org/gitlab/-/blob/master/doc/.vale/gitlab/FutureTense.yml))
@@ -59,16 +94,35 @@ When possible, use present tense instead. For example, use `after you execute th
Do not make possessive (GitLab's). This guidance follows [GitLab Brand Guidelines](https://about.gitlab.com/handbook/marketing/corporate-marketing/brand-activation/brand-guidelines/#trademark).
+### GitLab.com
+
+Refers to the GitLab instance managed by GitLab itself.
+
+### GitLab SaaS
+
+Refers to the product license that provides access to GitLab.com. Does not refer to the
+GitLab instance managed by GitLab itself.
+
+### GitLab self-managed
+
+Refers to the product license for GitLab instances managed by customers themselves.
+
## Guest
-When writing about the Guest role, use a capital "G." Do not use the phrase, "if you are a guest"
-to mean someone who is assigned the Guest role. Instead, write it out. "If you are assigned the Guest role..."
+When writing about the Guest role:
+
+- Use a capital **G**.
+- Do not use the phrase, **if you are a guest** to mean someone who is assigned the Guest
+ role. Instead, write it out. For example, **if you are assigned the Guest role**.
+- To describe a situation where the Guest role is the minimum required:
+ - Avoid: **the Guest role or higher**
+ - Use instead: **at least the Guest role**
-Do not use "Guest permissions." A user who is assigned the Guest role has a set of associated permissions.
+Do not use **Guest permissions**. A user who is assigned the Guest role has a set of associated permissions.
## handy
-Do not use. If the user doesn't find the process to be these things, we lose their trust.
+Do not use. If the user doesn't find the feature or process to be handy, we lose their trust.
## high availability, HA
@@ -84,10 +138,28 @@ Do not use Latin abbreviations. Use **that is** instead. ([Vale](../testing.md#v
## Maintainer
-When writing about the Maintainer role, use a capital "M." Do not use the phrase, "if you are a maintainer"
-to mean someone who is assigned the Maintainer role. Instead, write it out. "If you are assigned the Maintainer role..."
+When writing about the Maintainer role:
+
+- Use a capital **M**.
+- Do not use the phrase, **if you are a maintainer** to mean someone who is assigned the Maintainer
+ role. Instead, write it out. For example, **if you are assigned the Maintainer role**.
+- To describe a situation where the Maintainer role is the minimum required:
+ - Avoid: **the Maintainer role or higher**
+ - Use instead: **at least the Maintainer role**
+
+Do not use **Maintainer permissions**. A user who is assigned the Maintainer role has a set of associated permissions.
+
+## mankind
+
+Do not use. Use **people** or **humanity** instead. ([Vale](../testing.md#vale) rule: [`InclusionGender.yml`](https://gitlab.com/gitlab-org/gitlab/-/blob/master/doc/.vale/gitlab/InclusionGender.yml))
-Do not use "Maintainer permissions." A user who is assigned the Maintainer role has a set of associated permissions.
+## manpower
+
+Do not use. Use words like **workforce** or **GitLab team members**. ([Vale](../testing.md#vale) rule: [`InclusionGender.yml`](https://gitlab.com/gitlab-org/gitlab/-/blob/master/doc/.vale/gitlab/InclusionGender.yml))
+
+## master
+
+Do not use. Options are **primary** or **main**. ([Vale](../testing.md#vale) rule: [`InclusionCultural.yml`](https://gitlab.com/gitlab-org/gitlab/-/blob/master/doc/.vale/gitlab/InclusionCultural.yml))
## may, might
@@ -97,12 +169,19 @@ Do not use "Maintainer permissions." A user who is assigned the Maintainer role
Do not use first-person singular. Use **you**, **we**, or **us** instead. ([Vale](../testing.md#vale) rule: [`FirstPerson.yml`](https://gitlab.com/gitlab-org/gitlab/-/blob/master/doc/.vale/gitlab/FirstPerson.yml))
+## merge requests
+
+Lowercase. If you use **MR** as the acronym, spell it out on first use.
+
## Owner
-When writing about the Owner role, use a capital "M." Do not use the phrase, "if you are an owner"
-to mean someone who is assigned the Owner role. Instead, write it out. "If you are assigned the Owner role..."
+When writing about the Owner role:
+
+- Use a capital **O**.
+- Do not use the phrase, **if you are an owner** to mean someone who is assigned the Owner
+ role. Instead, write it out. For example, **if you are assigned the Owner role**.
-Do not use "Owner permissions." A user who is assigned the Owner role has a set of associated permissions.
+Do not use **Owner permissions**. A user who is assigned the Owner role has a set of associated permissions.
## permissions
@@ -118,38 +197,68 @@ Do not use. Doing so may negatively affect other users and contributors, which i
## Reporter
-When writing about the Reporter role, use a capital "R." Do not use the phrase, "if you are a reporter"
-to mean someone who is assigned the Reporter role. Instead, write it out. "If you are assigned the Reporter role..."
+When writing about the Reporter role:
-Do not use "Reporter permissions." A user who is assigned the Reporter role has a set of associated permissions.
+- Use a capital **R**.
+- Do not use the phrase, **if you are a reporter** to mean someone who is assigned the Reporter
+ role. Instead, write it out. For example, **if you are assigned the Reporter role**.
+- To describe a situation where the Reporter role is the minimum required:
+ - Avoid: **the Reporter role or higher**
+ - Use instead: **at least the Reporter role**
+
+Do not use **Reporter permissions**. A user who is assigned the Reporter role has a set of associated permissions.
## roles
Do not use roles and permissions interchangeably. Each user is assigned a role. Each role includes a set of permissions.
+## sanity check
+
+Do not use. Use **check for completeness** instead. ([Vale](../testing.md#vale) rule: [`InclusionAbleism.yml`](https://gitlab.com/gitlab-org/gitlab/-/blob/master/doc/.vale/gitlab/InclusionAbleism.yml))
+
## scalability
Do not use when talking about increasing GitLab performance for additional users. The words scale or scaling are sometimes acceptable, but references to increasing GitLab performance for additional users should direct readers to the GitLab [reference architectures](../../../administration/reference_architectures/index.md) page.
-## simply
+## setup, set up
+
+Use **setup** as a noun, and **set up** as a verb. For example:
+
+- Your remote office setup is amazing.
+- To set up your remote office correctly, consider the ergonomics of your work area.
+
+## simply, simple
-Do not use. If the user doesn't find the process to be these things, we lose their trust.
+Do not use. If the user doesn't find the process to be simple, we lose their trust.
## slashes
-Instead of **and/or**, use **or** or another sensible construction. This rule also applies to other slashes, like **follow/unfollow**. Some exceptions (like **CI/CD**) are allowed.
+Instead of **and/or**, use **or** or re-write the sentence. This rule also applies to other slashes, like **follow/unfollow**. Some exceptions (like **CI/CD**) are allowed.
+
+## slave
+
+Do not use. Another option is **secondary**. ([Vale](../testing.md#vale) rule: [`InclusionCultural.yml`](https://gitlab.com/gitlab-org/gitlab/-/blob/master/doc/.vale/gitlab/InclusionCultural.yml))
## subgroup
-Use instead of `sub-group`.
+Use instead of **sub-group**.
## that
-Do not use. Example: `the file that you save` can be `the file you save`.
+Do not use. For example:
+
+- Avoid: The file that you save...
+- Use instead: The file you save...
+
+## they
+
+Avoid the use of gender-specific pronouns, unless referring to a specific person.
+Use a singular [they](https://developers.google.com/style/pronouns#gender-neutral-pronouns) as
+a gender-neutral pronoun.
## useful
-Do not use. If the user doesn't find the process to be these things, we lose their trust.
+Do not use. If the user doesn't find the process to be useful, we lose their trust.
## utilize
@@ -159,5 +268,18 @@ Do not use. Use **use** instead. It's more succinct and easier for non-native En
Do not use Latin abbreviations. Use **with**, **through**, or **by using** instead. ([Vale](../testing.md#vale) rule: [`LatinTerms.yml`](https://gitlab.com/gitlab-org/gitlab/-/blob/master/doc/.vale/gitlab/LatinTerms.yml))
+## we
+
+Try to avoid **we** and focus instead on how the user can accomplish something in GitLab.
+
+- Avoid: We created a feature for you to add widgets.
+- Instead, use: Use widgets when you have work you want to organize.
+
+One exception: You can use **we recommend** instead of **it is recommended** or **GitLab recommends**.
+
+## whitelist
+
+Do not use. Another option is **allowlist**. ([Vale](../testing.md#vale) rule: [`InclusionCultural.yml`](https://gitlab.com/gitlab-org/gitlab/-/blob/master/doc/.vale/gitlab/InclusionCultural.yml))
+
<!-- vale on -->
<!-- markdownlint-enable -->
diff --git a/doc/development/documentation/testing.md b/doc/development/documentation/testing.md
index b634e2b93db..ddd44801ae9 100644
--- a/doc/development/documentation/testing.md
+++ b/doc/development/documentation/testing.md
@@ -210,6 +210,20 @@ Vale returns three types of results: `suggestion`, `warning`, and `error`:
of how to resolve the error. Errors break CI and are displayed in CI job output. See a list of
[error-level rules](https://gitlab.com/search?utf8=✓&snippets=false&scope=&repository_ref=master&search=path%3Adoc%2F.vale%2Fgitlab+Error%3A&group_id=9970&project_id=278964).
+#### Vale spelling test
+
+When Vale flags a valid word as a spelling mistake, you can fix it following these
+guidelines:
+
+| Flagged word | Guideline |
+|------------------------------------------------------|-----------|
+| jargon | Rewrite the sentence to avoid it. |
+| *correctly-capitalized* name of a product or service | Add the word to the [vale spelling exceptions list](https://gitlab.com/gitlab-org/gitlab/-/blob/master/doc/.vale/gitlab/spelling-exceptions.txt). |
+| name of a person | Remove the name if it's not needed, or [add the vale exception code in-line](#disable-vale-tests). |
+| a command, variable, code, or similar | Put it in backticks or a code block. For example: ``The git clone command can be used with the CI_COMMIT_BRANCH variable.`` -> ``The `git clone` command can be used with the `CI_COMMIT_BRANCH` variable.`` |
+| UI text from GitLab | Verify it correctly matches the UI, then: If it does not match the UI, update it. If it matches the UI, but the UI seems incorrect, create an issue to see if the UI needs to be fixed. If it matches the UI and seems correct, add it to the [vale spelling exceptions list](https://gitlab.com/gitlab-org/gitlab/-/blob/master/doc/.vale/gitlab/spelling-exceptions.txt). |
+| UI text from a third-party product | Rewrite the sentence to avoid it, or [add the vale exception code in-line](#disable-vale-tests). |
+
### Install linters
At a minimum, install [markdownlint](#markdownlint) and [Vale](#vale) to match the checks run in
diff --git a/doc/development/documentation/workflow.md b/doc/development/documentation/workflow.md
index f035b4d0888..31c38bc1446 100644
--- a/doc/development/documentation/workflow.md
+++ b/doc/development/documentation/workflow.md
@@ -63,7 +63,7 @@ To update GitLab documentation:
1. Follow the [Merge Request Guidelines](../contributing/merge_request_workflow.md#merge-request-guidelines).
NOTE:
-Work in a fork if you do not have Developer access to the GitLab project.
+Work in a fork if you do not have the Developer role in the GitLab project.
### Ask for help
diff --git a/doc/development/emails.md b/doc/development/emails.md
index 3e651a6efb8..c1054077f9e 100644
--- a/doc/development/emails.md
+++ b/doc/development/emails.md
@@ -141,4 +141,4 @@ Please note that `path/to/project` is used in GitLab as the handler for the Serv
---
-[Return to Development documentation](README.md)
+[Return to Development documentation](index.md)
diff --git a/doc/development/experiment_guide/gitlab_experiment.md b/doc/development/experiment_guide/gitlab_experiment.md
index 820d1da0080..33222b0492c 100644
--- a/doc/development/experiment_guide/gitlab_experiment.md
+++ b/doc/development/experiment_guide/gitlab_experiment.md
@@ -513,6 +513,11 @@ expect(experiment(:example)).to track(:my_event, value: 1, property: '_property_
experiment(:example, :variant_name, foo: :bar).track(:my_event, value: 1, property: '_property_')
```
+### Recording and assignment tracking
+
+To test assignment tracking and the `record!` method, you can use or adopt the following
+shared example: [tracks assignment and records the subject](https://gitlab.com/gitlab-org/gitlab/blob/master/spec/support/shared_examples/lib/gitlab/experimentation_shared_examples.rb).
+
## Experiments in the client layer
This is in flux as of GitLab 13.10, and can't be documented just yet.
@@ -588,7 +593,7 @@ When there is no experiment data in the `window.gon.experiment` object for the g
NOTE:
We use the terms "enabled" and "disabled" here, even though it's against our
-[documentation style guide recommendations](../documentation/styleguide/index.md#avoid-ableist-language)
+[documentation style guide recommendations](../documentation/styleguide/word_list.md#enable)
because these are the terms that the feature flag documentation uses.
You may already be familiar with the concept of feature flags in GitLab, but using
diff --git a/doc/development/fe_guide/accessibility.md b/doc/development/fe_guide/accessibility.md
index 15818941b24..0cd7cf58b58 100644
--- a/doc/development/fe_guide/accessibility.md
+++ b/doc/development/fe_guide/accessibility.md
@@ -510,7 +510,7 @@ Proper research and testing should be done to ensure compliance with [WCAG](http
### Viewing the browser accessibility tree
- [Firefox DevTools guide](https://developer.mozilla.org/en-US/docs/Tools/Accessibility_inspector#accessing_the_accessibility_inspector)
-- [Chrome DevTools guide](https://developers.google.com/web/tools/chrome-devtools/accessibility/reference#pane)
+- [Chrome DevTools guide](https://developer.chrome.com/docs/devtools/accessibility/reference#pane)
### Browser extensions
diff --git a/doc/development/fe_guide/content_editor.md b/doc/development/fe_guide/content_editor.md
index f6329f39636..6cf4076bf83 100644
--- a/doc/development/fe_guide/content_editor.md
+++ b/doc/development/fe_guide/content_editor.md
@@ -54,7 +54,7 @@ the status of the ongoing development for CommonMark and GitLab Flavored Markdow
To include the Content Editor in your feature, import the `createContentEditor` factory
function and the `ContentEditor` Vue component. `createContentEditor` sets up an instance
-of [tiptap's Editor class](https://www.tiptap.dev/api/editor) with all the necessary
+of [tiptap's Editor class](https://www.tiptap.dev/api/editor/) with all the necessary
extensions to support editing GitLab Flavored Markdown content. It also creates
a Markdown serializer that allows exporting tiptap's document format to Markdown.
@@ -90,7 +90,9 @@ export default {
try {
await this.contentEditor.setSerializedContent(this.content);
} catch (e) {
- createFlash(__('There was an error loading content in the editor'), e);
+ createFlash({
+ message: __('There was an error loading content in the editor'), error: e
+ });
}
},
methods: {
diff --git a/doc/development/fe_guide/editor_lite.md b/doc/development/fe_guide/editor_lite.md
index f28588c23e9..5020bf9eeeb 100644
--- a/doc/development/fe_guide/editor_lite.md
+++ b/doc/development/fe_guide/editor_lite.md
@@ -1,264 +1,9 @@
---
-stage: Create
-group: Editor
-info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://about.gitlab.com/handbook/engineering/ux/technical-writing/#assignments
+redirect_to: 'source_editor.md'
+remove_date: '2021-09-19'
---
-# Editor Lite **(FREE)**
+This document was moved to [another location](source_editor.md).
-**Editor Lite** provides the editing experience at GitLab. This thin wrapper around
-[the Monaco editor](https://microsoft.github.io/monaco-editor/) provides necessary
-helpers and abstractions, and extends Monaco [using extensions](#extensions). Multiple
-GitLab features use it, including:
-
-- [Web IDE](../../user/project/web_ide/index.md)
-- [CI Linter](../../ci/lint.md)
-- [Snippets](../../user/snippets.md)
-- [Web Editor](../../user/project/repository/web_editor.md)
-- [Security Policies](../../user/application_security/threat_monitoring/index.md)
-
-## How to use Editor Lite
-
-Editor Lite is framework-agnostic and can be used in any application, including both
-Rails and Vue. To help with integration, we have the dedicated `<editor-lite>`
-Vue component, but the integration of Editor Lite is generally straightforward:
-
-1. Import Editor Lite:
-
- ```javascript
- import EditorLite from '~/editor/editor_lite';
- ```
-
-1. Initialize global editor for the view:
-
- ```javascript
- const editor = new EditorLite({
- // Editor Options.
- // The list of all accepted options can be found at
- // https://microsoft.github.io/monaco-editor/api/enums/monaco.editor.editoroption.html
- });
- ```
-
-1. Create an editor's instance:
-
- ```javascript
- editor.createInstance({
- // Editor Lite configuration options.
- })
- ```
-
-An instance of Editor Lite accepts the following configuration options:
-
-| Option | Required? | Description |
-| -------------- | ------- | ---- |
-| `el` | `true` | `HTML Node`: The element on which to render the editor. |
-| `blobPath` | `false` | `String`: The name of a file to render in the editor, used to identify the correct syntax highlighter to use with that file, or another file type. Can accept wildcards like `*.js` when the actual filename isn't known or doesn't play any role. |
-| `blobContent` | `false` | `String`: The initial content to render in the editor. |
-| `extensions` | `false` | `Array`: Extensions to use in this instance. |
-| `blobGlobalId` | `false` | `String`: An auto-generated property.<br>**Note:** This property may go away in the future. Do not pass `blobGlobalId` unless you know what you're doing.|
-| Editor Options | `false` | `Object(s)`: Any property outside of the list above is treated as an Editor Option for this particular instance. Use this field to override global Editor Options on the instance level. A full [index of Editor Options](https://microsoft.github.io/monaco-editor/api/enums/monaco.editor.editoroption.html) is available. |
-
-## API
-
-The editor uses the same public API as
-[provided by Monaco editor](https://microsoft.github.io/monaco-editor/api/interfaces/monaco.editor.istandalonecodeeditor.html)
-with additional functions on the instance level:
-
-| Function | Arguments | Description
-| --------------------- | ----- | ----- |
-| `updateModelLanguage` | `path`: String | Updates the instance's syntax highlighting to follow the extension of the passed `path`. Available only on the instance level.|
-| `use` | Array of objects | Array of extensions to apply to the instance. Accepts only the array of _objects_. You must fetch the extensions' ES6 modules must be fetched and resolved in your views or components before they are passed to `use`. This property is available on _instance_ (applies extension to this particular instance) and _global editor_ (applies the same extension to all instances) levels. |
-| Monaco Editor options | See [documentation](https://microsoft.github.io/monaco-editor/api/interfaces/monaco.editor.istandalonecodeeditor.html) | Default Monaco editor options |
-
-## Tips
-
-1. Editor's loading state.
-
- The loading state is built in to Editor Lite, making spinners and loaders
- rarely needed in HTML. To benefit the built-in loading state, set the `data-editor-loading`
- property on the HTML element that should contain the editor. When bootstrapping,
- Editor Lite shows the loader automatically.
-
- ![Editor Lite: loading state](img/editor_lite_loading.png)
-
-1. Update syntax highlighting if the filename changes.
-
- ```javascript
- // fileNameEl here is the HTML input element that contains the file name
- fileNameEl.addEventListener('change', () => {
- this.editor.updateModelLanguage(fileNameEl.value);
- });
- ```
-
-1. Get the editor's content.
-
- We may set up listeners on the editor for every change, but it rapidly can become
- an expensive operation. Instead, get the editor's content when it's needed.
- For example, on a form's submission:
-
- ```javascript
- form.addEventListener('submit', () => {
- my_content_variable = this.editor.getValue();
- });
- ```
-
-1. Performance
-
- Even though Editor Lite itself is extremely slim, it still depends on Monaco editor,
- which adds weight. Every time you add Editor Lite to a view, the JavaScript bundle's
- size significantly increases, affecting your view's loading performance. We recommend
- you import the editor on demand if either:
-
- - You're uncertain if the view needs the editor.
- - The editor is a secondary element of the view.
-
- Loading Editor Lite on demand is handled like loading any other module:
-
- ```javascript
- someActionFunction() {
- import(/* webpackChunkName: 'EditorLite' */ '~/editor/editor_lite').
- then(({ default: EditorLite }) => {
- const editor = new EditorLite();
- ...
- });
- ...
- }
- ```
-
-## Extensions
-
-Editor Lite provides a universal, extensible editing tool to the whole product,
-and doesn't depend on any particular group. Even though the Editor Lite's core is owned by
-[Create::Editor FE Team](https://about.gitlab.com/handbook/engineering/development/dev/create-editor/),
-any group can own the extensions—the main functional elements. The goal of
-Editor Lite extensions is to keep the editor's core slim and stable. Any
-needed features can be added as extensions to this core. Any group can
-build and own new editing features without worrying about changes to Editor Lite
-breaking or overriding them.
-
-You can depend on other modules in your extensions. This organization helps keep
-the size of Editor Lite's core at bay by importing dependencies only when needed.
-
-Structurally, the complete implementation of Editor Lite can be presented as this diagram:
-
-```mermaid
-graph TD;
- B[Extension 1]---A[Editor Lite]
- C[Extension 2]---A[Editor Lite]
- D[Extension 3]---A[Editor Lite]
- E[...]---A[Editor Lite]
- F[Extension N]---A[Editor Lite]
- A[Editor Lite]---Z[Monaco]
-```
-
-An extension is an ES6 module that exports a JavaScript object:
-
-```javascript
-import { Position } from 'monaco-editor';
-
-export default {
- navigateFileStart() {
- this.setPosition(new Position(1, 1));
- },
-};
-
-```
-
-In the extension's functions, `this` refers to the current Editor Lite instance.
-Using `this`, you get access to the complete instance's API, such as the
-`setPosition()` method in this particular case.
-
-### Using an existing extension
-
-Adding an extension to Editor Lite's instance requires the following steps:
-
-```javascript
-import EditorLite from '~/editor/editor_lite';
-import MyExtension from '~/my_extension';
-
-const editor = new EditorLite().createInstance({
- ...
-});
-editor.use(MyExtension);
-```
-
-### Creating an extension
-
-Let's create our first Editor Lite extension. Extensions are
-[ES6 modules](https://hacks.mozilla.org/2015/08/es6-in-depth-modules/) exporting a
-basic `Object`, used to extend Editor Lite's features. As a test, let's
-create an extension that extends Editor Lite with a new function that, when called,
-outputs the editor's content in `alert`.
-
-`~/my_folder/my_fancy_extension.js:`
-
-```javascript
-export default {
- throwContentAtMe() {
- alert(this.getValue());
- },
-};
-```
-
-In the code example, `this` refers to the instance. By referring to the instance,
-we can access the complete underlying
-[Monaco editor API](https://microsoft.github.io/monaco-editor/api/interfaces/monaco.editor.istandalonecodeeditor.html),
-which includes functions like `getValue()`.
-
-Now let's use our extension:
-
-`~/my_folder/component_bundle.js`:
-
-```javascript
-import EditorLite from '~/editor/editor_lite';
-import MyFancyExtension from './my_fancy_extension';
-
-const editor = new EditorLite().createInstance({
- ...
-});
-editor.use(MyFancyExtension);
-...
-someButton.addEventListener('click', () => {
- editor.throwContentAtMe();
-});
-```
-
-First of all, we import Editor Lite and our new extension. Then we create the
-editor and its instance. By default Editor Lite has no `throwContentAtMe` method.
-But the `editor.use(MyFancyExtension)` line brings that method to our instance.
-After that, we can use it any time we need it. In this case, we call it when some
-theoretical button has been clicked.
-
-This script would result in an alert containing the editor's content when `someButton` is clicked.
-
-![Editor Lite new extension's result](img/editor_lite_create_ext.png)
-
-### Tips
-
-1. Performance
-
- Just like Editor Lite itself, any extension can be loaded on demand to not harm
- loading performance of the views:
-
- ```javascript
- const EditorPromise = import(
- /* webpackChunkName: 'EditorLite' */ '~/editor/editor_lite'
- );
- const MarkdownExtensionPromise = import('~/editor/editor_markdown_ext');
-
- Promise.all([EditorPromise, MarkdownExtensionPromise])
- .then(([{ default: EditorLite }, { default: MarkdownExtension }]) => {
- const editor = new EditorLite().createInstance({
- ...
- });
- editor.use(MarkdownExtension);
- });
- ```
-
-1. Using multiple extensions
-
- Just pass the array of extensions to your `use` method:
-
- ```javascript
- editor.use([FileTemplateExtension, MyFancyExtension]);
- ```
+<!-- This redirect file can be deleted after <2021-09-19>. -->
+<!-- Before deletion, see: https://docs.gitlab.com/ee/development/documentation/#move-or-rename-a-page -->
diff --git a/doc/development/fe_guide/frontend_faq.md b/doc/development/fe_guide/frontend_faq.md
index 6b9d5ace4e6..1e8f7f5fb81 100644
--- a/doc/development/fe_guide/frontend_faq.md
+++ b/doc/development/fe_guide/frontend_faq.md
@@ -157,7 +157,7 @@ export const fetchFoos = ({ state }) => {
Sometimes it's necessary to test locally what the frontend production build would produce, to do so the steps are:
1. Stop webpack: `gdk stop webpack`.
-1. Open `gitlab.yaml` located in your `gitlab` installation folder, scroll down to the `webpack` section and change `dev_server` to `enabled: false`.
+1. Open `gitlab.yaml` located in `gitlab/config` folder, scroll down to the `webpack` section, and change `dev_server` to `enabled: false`.
1. Run `yarn webpack-prod && gdk restart rails-web`.
The production build takes a few minutes to be completed. Any code changes at this point are
diff --git a/doc/development/fe_guide/graphql.md b/doc/development/fe_guide/graphql.md
index 844ef2156d9..7fa9e957f56 100644
--- a/doc/development/fe_guide/graphql.md
+++ b/doc/development/fe_guide/graphql.md
@@ -906,6 +906,35 @@ apollo: {
},
```
+### Best Practices
+
+#### When to use (and not use) `update` hook in mutations
+
+Apollo Client's [`.mutate()`](https://www.apollographql.com/docs/react/api/core/ApolloClient/#ApolloClient.mutate)
+method exposes an `update` hook that is invoked twice during the mutation lifecycle:
+
+- Once at the beginning. That is, before the mutation has completed.
+- Once after the mutation has completed.
+
+You should use this hook only if you're adding or removing an item from the store
+(that is, ApolloCache). If you're _updating_ an existing item, it is usually represented by
+a global `id`.
+
+In that case, presence of this `id` in your mutation query definition makes the store update
+automatically. Here's an example of a typical mutation query with `id` present in it:
+
+```graphql
+mutation issueSetWeight($input: IssueSetWeightInput!) {
+ issuableSetWeight: issueSetWeight(input: $input) {
+ issuable: issue {
+ id
+ weight
+ }
+ errors
+ }
+}
+```
+
### Testing
#### Generating the GraphQL schema
diff --git a/doc/development/fe_guide/index.md b/doc/development/fe_guide/index.md
index 00f0d72571a..325310ad05c 100644
--- a/doc/development/fe_guide/index.md
+++ b/doc/development/fe_guide/index.md
@@ -95,7 +95,7 @@ How we implement [keyboard shortcuts](keyboard_shortcuts.md) that can be customi
## Editors
-GitLab text editing experiences are provided by the [Source Editor](editor_lite.md) and
+GitLab text editing experiences are provided by the [Source Editor](source_editor.md) and
the [Content Editor](content_editor.md).
## Frontend FAQ
diff --git a/doc/development/fe_guide/performance.md b/doc/development/fe_guide/performance.md
index dd3945ae324..e7f347554d7 100644
--- a/doc/development/fe_guide/performance.md
+++ b/doc/development/fe_guide/performance.md
@@ -255,18 +255,18 @@ We support two types of prefetching for the chunks:
- The [`prefetch` link type](https://developer.mozilla.org/en-US/docs/Web/HTML/Link_types/prefetch)
is used to prefetch a chunk for the future navigation
-- The [`preload` link type](https://developer.mozilla.org/en-US/docs/Web/HTML/Link_types/preloadh)
- is used to prefetch a chunk that is crucial for the current navigation but is not
+- The [`preload` link type](https://developer.mozilla.org/en-US/docs/Web/HTML/Link_types/preload)
+ is used to prefetch a chunk that is crucial for the current navigation but is not
discovered until later in the rendering process
-Both `prefetch` and `preload` links bring the loading performance benefit to the pages. Both are
+Both `prefetch` and `preload` links bring the loading performance benefit to the pages. Both are
fetched asynchronously, but contrary to [deferring the loading](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/script#attr-defer)
of the assets which is used for other JavaScript resources in the product by default, `prefetch` and
-`preload` neither parse nor execute the fetched script unless explicitly imported in any JavaScript
-module. This allows to cache the fetched resources without blocking the execution of the
+`preload` neither parse nor execute the fetched script unless explicitly imported in any JavaScript
+module. This allows to cache the fetched resources without blocking the execution of the
remaining page resources.
-To prefetch a JavaScript chunk in a HAML view, `:prefetch_asset_tags` with the combination of
+To prefetch a JavaScript chunk in a HAML view, `:prefetch_asset_tags` with the combination of
the `webpack_preload_asset_tag` helper is provided:
```javascript
@@ -280,8 +280,8 @@ This snippet will add a new `<link rel="preload">` element into the resulting HT
<link rel="preload" href="/assets/webpack/monaco.chunk.js" as="script" type="text/javascript">
```
-By default, `webpack_preload_asset_tag` will `preload` the chunk. You don't need to worry about
-`as` and `type` attributes for preloading the JavaScript chunks. However, when a chunk is not
+By default, `webpack_preload_asset_tag` will `preload` the chunk. You don't need to worry about
+`as` and `type` attributes for preloading the JavaScript chunks. However, when a chunk is not
critical, for the current navigation, one has to explicitly request `prefetch`:
```javascript
@@ -454,5 +454,5 @@ General tips:
- [WebPage Test](https://www.webpagetest.org) for testing site loading time and size.
- [Google PageSpeed Insights](https://developers.google.com/speed/pagespeed/insights/) grades web pages and provides feedback to improve the page.
-- [Profiling with Chrome DevTools](https://developers.google.com/web/tools/chrome-devtools/)
+- [Profiling with Chrome DevTools](https://developer.chrome.com/docs/devtools/)
- [Browser Diet](https://browserdiet.com/) is a community-built guide that catalogues practical tips for improving web page performance.
diff --git a/doc/development/fe_guide/source_editor.md b/doc/development/fe_guide/source_editor.md
new file mode 100644
index 00000000000..fc128c0ecb1
--- /dev/null
+++ b/doc/development/fe_guide/source_editor.md
@@ -0,0 +1,264 @@
+---
+stage: Create
+group: Editor
+info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://about.gitlab.com/handbook/engineering/ux/technical-writing/#assignments
+---
+
+# Source Editor **(FREE)**
+
+**Source Editor** provides the editing experience at GitLab. This thin wrapper around
+[the Monaco editor](https://microsoft.github.io/monaco-editor/) provides necessary
+helpers and abstractions, and extends Monaco [using extensions](#extensions). Multiple
+GitLab features use it, including:
+
+- [Web IDE](../../user/project/web_ide/index.md)
+- [CI Linter](../../ci/lint.md)
+- [Snippets](../../user/snippets.md)
+- [Web Editor](../../user/project/repository/web_editor.md)
+- [Security Policies](../../user/application_security/threat_monitoring/index.md)
+
+## How to use Source Editor
+
+Source Editor is framework-agnostic and can be used in any application, including both
+Rails and Vue. To help with integration, we have the dedicated `<source-editor>`
+Vue component, but the integration of Source Editor is generally straightforward:
+
+1. Import Source Editor:
+
+ ```javascript
+ import SourceEditor from '~/editor/source_editor';
+ ```
+
+1. Initialize global editor for the view:
+
+ ```javascript
+ const editor = new SourceEditor({
+ // Editor Options.
+ // The list of all accepted options can be found at
+ // https://microsoft.github.io/monaco-editor/api/enums/monaco.editor.editoroption.html
+ });
+ ```
+
+1. Create an editor's instance:
+
+ ```javascript
+ editor.createInstance({
+ // Source Editor configuration options.
+ })
+ ```
+
+An instance of Source Editor accepts the following configuration options:
+
+| Option | Required? | Description |
+| -------------- | ------- | ---- |
+| `el` | `true` | `HTML Node`: The element on which to render the editor. |
+| `blobPath` | `false` | `String`: The name of a file to render in the editor, used to identify the correct syntax highlighter to use with that file, or another file type. Can accept wildcards like `*.js` when the actual filename isn't known or doesn't play any role. |
+| `blobContent` | `false` | `String`: The initial content to render in the editor. |
+| `extensions` | `false` | `Array`: Extensions to use in this instance. |
+| `blobGlobalId` | `false` | `String`: An auto-generated property.<br>**Note:** This property may go away in the future. Do not pass `blobGlobalId` unless you know what you're doing.|
+| Editor Options | `false` | `Object(s)`: Any property outside of the list above is treated as an Editor Option for this particular instance. Use this field to override global Editor Options on the instance level. A full [index of Editor Options](https://microsoft.github.io/monaco-editor/api/enums/monaco.editor.editoroption.html) is available. |
+
+## API
+
+The editor uses the same public API as
+[provided by Monaco editor](https://microsoft.github.io/monaco-editor/api/interfaces/monaco.editor.istandalonecodeeditor.html)
+with additional functions on the instance level:
+
+| Function | Arguments | Description
+| --------------------- | ----- | ----- |
+| `updateModelLanguage` | `path`: String | Updates the instance's syntax highlighting to follow the extension of the passed `path`. Available only on the instance level.|
+| `use` | Array of objects | Array of extensions to apply to the instance. Accepts only the array of _objects_. You must fetch the extensions' ES6 modules must be fetched and resolved in your views or components before they are passed to `use`. This property is available on _instance_ (applies extension to this particular instance) and _global editor_ (applies the same extension to all instances) levels. |
+| Monaco Editor options | See [documentation](https://microsoft.github.io/monaco-editor/api/interfaces/monaco.editor.istandalonecodeeditor.html) | Default Monaco editor options |
+
+## Tips
+
+1. Editor's loading state.
+
+ The loading state is built in to Source Editor, making spinners and loaders
+ rarely needed in HTML. To benefit the built-in loading state, set the `data-editor-loading`
+ property on the HTML element that should contain the editor. When bootstrapping,
+ Source Editor shows the loader automatically.
+
+ ![Source Editor: loading state](img/editor_lite_loading.png)
+
+1. Update syntax highlighting if the filename changes.
+
+ ```javascript
+ // fileNameEl here is the HTML input element that contains the file name
+ fileNameEl.addEventListener('change', () => {
+ this.editor.updateModelLanguage(fileNameEl.value);
+ });
+ ```
+
+1. Get the editor's content.
+
+ We may set up listeners on the editor for every change, but it rapidly can become
+ an expensive operation. Instead, get the editor's content when it's needed.
+ For example, on a form's submission:
+
+ ```javascript
+ form.addEventListener('submit', () => {
+ my_content_variable = this.editor.getValue();
+ });
+ ```
+
+1. Performance
+
+ Even though Source Editor itself is extremely slim, it still depends on Monaco editor,
+ which adds weight. Every time you add Source Editor to a view, the JavaScript bundle's
+ size significantly increases, affecting your view's loading performance. We recommend
+ you import the editor on demand if either:
+
+ - You're uncertain if the view needs the editor.
+ - The editor is a secondary element of the view.
+
+ Loading Source Editor on demand is handled like loading any other module:
+
+ ```javascript
+ someActionFunction() {
+ import(/* webpackChunkName: 'SourceEditor' */ '~/editor/source_editor').
+ then(({ default: SourceEditor }) => {
+ const editor = new SourceEditor();
+ ...
+ });
+ ...
+ }
+ ```
+
+## Extensions
+
+Source Editor provides a universal, extensible editing tool to the whole product,
+and doesn't depend on any particular group. Even though the Source Editor's core is owned by
+[Create::Editor FE Team](https://about.gitlab.com/handbook/engineering/development/dev/create-editor/),
+any group can own the extensions—the main functional elements. The goal of
+Source Editor extensions is to keep the editor's core slim and stable. Any
+needed features can be added as extensions to this core. Any group can
+build and own new editing features without worrying about changes to Source Editor
+breaking or overriding them.
+
+You can depend on other modules in your extensions. This organization helps keep
+the size of Source Editor's core at bay by importing dependencies only when needed.
+
+Structurally, the complete implementation of Source Editor can be presented as this diagram:
+
+```mermaid
+graph TD;
+ B[Extension 1]---A[Source Editor]
+ C[Extension 2]---A[Source Editor]
+ D[Extension 3]---A[Source Editor]
+ E[...]---A[Source Editor]
+ F[Extension N]---A[Source Editor]
+ A[Source Editor]---Z[Monaco]
+```
+
+An extension is an ES6 module that exports a JavaScript object:
+
+```javascript
+import { Position } from 'monaco-editor';
+
+export default {
+ navigateFileStart() {
+ this.setPosition(new Position(1, 1));
+ },
+};
+
+```
+
+In the extension's functions, `this` refers to the current Source Editor instance.
+Using `this`, you get access to the complete instance's API, such as the
+`setPosition()` method in this particular case.
+
+### Using an existing extension
+
+Adding an extension to Source Editor's instance requires the following steps:
+
+```javascript
+import SourceEditor from '~/editor/source_editor';
+import MyExtension from '~/my_extension';
+
+const editor = new SourceEditor().createInstance({
+ ...
+});
+editor.use(MyExtension);
+```
+
+### Creating an extension
+
+Let's create our first Source Editor extension. Extensions are
+[ES6 modules](https://hacks.mozilla.org/2015/08/es6-in-depth-modules/) exporting a
+basic `Object`, used to extend Source Editor's features. As a test, let's
+create an extension that extends Source Editor with a new function that, when called,
+outputs the editor's content in `alert`.
+
+`~/my_folder/my_fancy_extension.js:`
+
+```javascript
+export default {
+ throwContentAtMe() {
+ alert(this.getValue());
+ },
+};
+```
+
+In the code example, `this` refers to the instance. By referring to the instance,
+we can access the complete underlying
+[Monaco editor API](https://microsoft.github.io/monaco-editor/api/interfaces/monaco.editor.istandalonecodeeditor.html),
+which includes functions like `getValue()`.
+
+Now let's use our extension:
+
+`~/my_folder/component_bundle.js`:
+
+```javascript
+import SourceEditor from '~/editor/source_editor';
+import MyFancyExtension from './my_fancy_extension';
+
+const editor = new SourceEditor().createInstance({
+ ...
+});
+editor.use(MyFancyExtension);
+...
+someButton.addEventListener('click', () => {
+ editor.throwContentAtMe();
+});
+```
+
+First of all, we import Source Editor and our new extension. Then we create the
+editor and its instance. By default Source Editor has no `throwContentAtMe` method.
+But the `editor.use(MyFancyExtension)` line brings that method to our instance.
+After that, we can use it any time we need it. In this case, we call it when some
+theoretical button has been clicked.
+
+This script would result in an alert containing the editor's content when `someButton` is clicked.
+
+![Source Editor new extension's result](img/editor_lite_create_ext.png)
+
+### Tips
+
+1. Performance
+
+ Just like Source Editor itself, any extension can be loaded on demand to not harm
+ loading performance of the views:
+
+ ```javascript
+ const EditorPromise = import(
+ /* webpackChunkName: 'SourceEditor' */ '~/editor/source_editor'
+ );
+ const MarkdownExtensionPromise = import('~/editor/source_editor_markdown_ext');
+
+ Promise.all([EditorPromise, MarkdownExtensionPromise])
+ .then(([{ default: SourceEditor }, { default: MarkdownExtension }]) => {
+ const editor = new SourceEditor().createInstance({
+ ...
+ });
+ editor.use(MarkdownExtension);
+ });
+ ```
+
+1. Using multiple extensions
+
+ Just pass the array of extensions to your `use` method:
+
+ ```javascript
+ editor.use([FileTemplateExtension, MyFancyExtension]);
+ ```
diff --git a/doc/development/fe_guide/storybook.md b/doc/development/fe_guide/storybook.md
new file mode 100644
index 00000000000..15225cc1deb
--- /dev/null
+++ b/doc/development/fe_guide/storybook.md
@@ -0,0 +1,51 @@
+---
+stage: none
+group: unassigned
+info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://about.gitlab.com/handbook/engineering/ux/technical-writing/#assignments
+---
+
+# Storybook
+
+The Storybook for the `gitlab-org/gitlab` project is available on our [GitLab Pages site](https://gitlab-org.gitlab.io/gitlab/storybook).
+
+## Storybook in local development
+
+Storybook dependencies and configuration are located under the `storybook/` directory.
+
+To build and launch Storybook locally, in the root directory of the `gitlab` project:
+
+1. Install Storybook dependencies:
+
+ ```shell
+ yarn storybook:install
+ ```
+
+1. Build the Storybook site:
+
+ ```shell
+ yarn storybook:start
+ ```
+
+## Adding components to Storybook
+
+Stories can be added for any Vue component in the `gitlab` repository.
+
+To add a story:
+
+1. Create a new `.stories.js` file in the same directory as the Vue component.
+ The file name should have the same prefix as the Vue component.
+
+ ```txt
+ vue_shared/
+ ├─ components/
+ │ ├─ sidebar
+ │ │ ├─ todo_button.vue
+ │ │ ├─ todo_button.stories.js
+ ```
+
+1. Write the story as per the [official Storybook instructions](https://storybook.js.org/docs/vue/writing-stories/introduction/)
+
+ Notes:
+ - Specify the `title` field of the story as the component's file path from the `javascripts/` directory,
+ e.g. if the component is located at `app/assets/javascripts/vue_shared/components/sidebar/todo_toggle/todo_button.vue`, specify the `title` as
+ `vue_shared/components/To-do Button`. This will ensure the Storybook navigation maps closely to our internal directory structure.
diff --git a/doc/development/fe_guide/style/html.md b/doc/development/fe_guide/style/html.md
index 18f72a9655c..72492d56ee4 100644
--- a/doc/development/fe_guide/style/html.md
+++ b/doc/development/fe_guide/style/html.md
@@ -62,7 +62,7 @@ Avoid forcing links to open in a new window as this reduces the control the user
However, it might be a good idea to use a blank target when replacing the current page with
the link makes the user lose content or progress.
-Use `rel="noopener noreferrer"` whenever your links open in a new window, i.e. `target="_blank"`. This prevents a security vulnerability [documented by JitBit](https://www.jitbit.com/alexblog/256-targetblank---the-most-underestimated-vulnerability-ever/).
+Use `rel="noopener noreferrer"` whenever your links open in a new window, that is, `target="_blank"`. This prevents a security vulnerability [documented by JitBit](https://www.jitbit.com/alexblog/256-targetblank---the-most-underestimated-vulnerability-ever/).
When using `gl-link`, using `target="_blank"` is sufficient as it automatically adds `rel="noopener noreferrer"` to the link.
diff --git a/doc/development/fe_guide/style/scss.md b/doc/development/fe_guide/style/scss.md
index c0817626360..4a9446f2949 100644
--- a/doc/development/fe_guide/style/scss.md
+++ b/doc/development/fe_guide/style/scss.md
@@ -51,7 +51,7 @@ We recommend a "utility-first" approach.
1. Start with utility classes.
1. If composing utility classes into a component class removes code duplication and encapsulates a clear responsibility, do it.
-This encourages an organic growth of component classes and prevents the creation of one-off non-reusable classes. Also, the kind of classes that emerge from "utility-first" tend to be design-centered (e.g. `.button`, `.alert`, `.card`) rather than domain-centered (e.g. `.security-report-widget`, `.commit-header-icon`).
+This encourages an organic growth of component classes and prevents the creation of one-off non-reusable classes. Also, the kind of classes that emerge from "utility-first" tend to be design-centered (for example, `.button`, `.alert`, `.card`) rather than domain-centered (for example, `.security-report-widget`, `.commit-header-icon`).
Inspiration:
@@ -139,7 +139,7 @@ To check if any warnings are produced by your changes, run `yarn lint:stylelint`
catch any warnings.
If the Rake task is throwing warnings you don't understand, SCSS Lint's
-documentation includes [a full list of their rules](https://stylelint.io/user-guide/rules/list).
+documentation includes [a full list of their rules](https://stylelint.io/user-guide/rules/list/).
### Fixing issues
diff --git a/doc/development/fe_guide/vue3_migration.md b/doc/development/fe_guide/vue3_migration.md
index d06e93da0f3..7da462a5f89 100644
--- a/doc/development/fe_guide/vue3_migration.md
+++ b/doc/development/fe_guide/vue3_migration.md
@@ -8,7 +8,10 @@ info: To determine the technical writer assigned to the Stage/Group associated w
Preparations for a Vue 3 migration are tracked in epic [&3174](https://gitlab.com/groups/gitlab-org/-/epics/3174)
-In order to prepare for the eventual migration to Vue 3.x, we should be wary about adding the following features to the codebase:
+In order to prepare for the eventual migration to Vue 3.x, we should not use the following deprecated features in the codebase:
+
+NOTE:
+Our linting rules block the use of these deprecated features.
## Vue filters
@@ -132,3 +135,47 @@ shallowMount(MyAwesomeComponent, {
}
})
```
+
+## Props default function `this` access
+
+**Why?**
+
+In Vue 3, props default value factory functions no longer have access to `this`
+(the component instance).
+
+**What to use instead**
+
+Write a computed prop that resolves the desired value from other props. This
+will work in both Vue 2 and 3.
+
+```html
+<script>
+export default {
+ props: {
+ metric: {
+ type: String,
+ required: true,
+ },
+ title: {
+ type: String,
+ required: false,
+ default: null,
+ },
+ },
+ computed: {
+ actualTitle() {
+ return this.title ?? this.metric;
+ },
+ },
+}
+
+</script>
+
+<template>
+ <div>{{ actualTitle }}</div>
+</template>
+```
+
+[In Vue 3](https://v3.vuejs.org/guide/migration/props-default-this.html#props-default-function-this-access),
+the props default value factory is passed the raw props as an argument, and can
+also access injections.
diff --git a/doc/development/fe_guide/vuex.md b/doc/development/fe_guide/vuex.md
index 3d0044928f1..064f01c8195 100644
--- a/doc/development/fe_guide/vuex.md
+++ b/doc/development/fe_guide/vuex.md
@@ -106,7 +106,7 @@ In this file, we write the actions that call mutations for handling a list of us
.then(({ data }) => commit(types.RECEIVE_USERS_SUCCESS, data))
.catch((error) => {
commit(types.RECEIVE_USERS_ERROR, error)
- createFlash('There was an error')
+ createFlash({ message: 'There was an error' })
});
}
@@ -540,11 +540,11 @@ export default {
foo: ''
},
actions: {
- updateBar() {...}
- updateAll() {...}
+ updateBar() {...},
+ updateAll() {...},
},
getters: {
- getFoo() {...}
+ getFoo() {...},
}
}
```
@@ -559,13 +559,13 @@ export default {
* @param {string} list[].getter - the name of the getter, leave it empty to not use a getter
* @param {string} list[].updateFn - the name of the action, leave it empty to use the default action
* @param {string} defaultUpdateFn - the default function to dispatch
- * @param {string} root - optional key of the state where to search fo they keys described in list
+ * @param {string|function} root - optional key of the state where to search for they keys described in list
* @returns {Object} a dictionary with all the computed properties generated
*/
...mapComputed(
[
'baz',
- { key: 'bar', updateFn: 'updateBar' }
+ { key: 'bar', updateFn: 'updateBar' },
{ key: 'foo', getter: 'getFoo' },
],
'updateAll',
@@ -575,3 +575,48 @@ export default {
```
`mapComputed` then generates the appropriate computed properties that get the data from the store and dispatch the correct action when updated.
+
+In the event that the `root` of the key is more than one-level deep you can use a function to retrieve the relevant state object.
+
+For instance, with a store like:
+
+```javascript
+// this store is non-functional and only used to give context to the example
+export default {
+ state: {
+ foo: {
+ qux: {
+ baz: '',
+ bar: '',
+ foo: '',
+ },
+ },
+ },
+ actions: {
+ updateBar() {...},
+ updateAll() {...},
+ },
+ getters: {
+ getFoo() {...},
+ }
+}
+```
+
+The `root` could be:
+
+```javascript
+import { mapComputed } from '~/vuex_shared/bindings'
+export default {
+ computed: {
+ ...mapComputed(
+ [
+ 'baz',
+ { key: 'bar', updateFn: 'updateBar' },
+ { key: 'foo', getter: 'getFoo' },
+ ],
+ 'updateAll',
+ (state) => state.foo.qux,
+ ),
+ }
+}
+```
diff --git a/doc/development/feature_flags/controls.md b/doc/development/feature_flags/controls.md
index a9ebcfc9fba..c69a698149e 100644
--- a/doc/development/feature_flags/controls.md
+++ b/doc/development/feature_flags/controls.md
@@ -221,7 +221,7 @@ you should fully roll out the feature by enabling the flag **globally** by runni
```
This changes the feature flag state to be **enabled** always, which overrides the
-existing gates (e.g. `--group=gitlab-org`) in the above processes.
+existing gates (for example, `--group=gitlab-org`) in the above processes.
Note, that if an actor based feature gate is present, switching the
`default_enabled` attribute of the YAML definition from `false` to `true`
@@ -265,6 +265,8 @@ To disable a feature flag that has been enabled for a specific project you can r
You cannot selectively disable feature flags for a specific project/group/user without applying a [specific method of implementing](index.md#selectively-disable-by-actor) the feature flags.
+If a feature flag is disabled via chatops, that will take precedence over the `default_enabled` value in the YML. In other words, you could have a feature enabled for on-premise installations but not for GitLab.com.
+
### Feature flag change logging
#### ChatOps level
diff --git a/doc/development/feature_flags/development.md b/doc/development/feature_flags/development.md
deleted file mode 100644
index d7807c6f586..00000000000
--- a/doc/development/feature_flags/development.md
+++ /dev/null
@@ -1,9 +0,0 @@
----
-redirect_to: 'index.md'
-remove_date: '2021-06-01'
----
-
-This document was moved to [another location](index.md).
-
-<!-- This redirect file can be deleted after 2021-06-01. -->
-<!-- Before deletion, see: https://docs.gitlab.com/ee/development/documentation/#move-or-rename-a-page --> \ No newline at end of file
diff --git a/doc/development/feature_flags/index.md b/doc/development/feature_flags/index.md
index 79a100e44a5..1962d5262ce 100644
--- a/doc/development/feature_flags/index.md
+++ b/doc/development/feature_flags/index.md
@@ -5,15 +5,15 @@ group: Development
info: "See the Technical Writers assigned to Development Guidelines: https://about.gitlab.com/handbook/engineering/ux/technical-writing/#assignments-to-development-guidelines"
---
-# Developing with feature flags
+# Feature flags in the development of GitLab
**NOTE**:
The documentation below covers feature flags used by GitLab to deploy its own features, which **is not** the same
as the [feature flags offered as part of the product](../../operations/feature_flags.md).
This document provides guidelines on how to use feature flags
-in the GitLab codebase to conditionally enable features
-and test them.
+for the development of GitLab to conditionally and/or incrementally enable features
+and test them in production/staging.
WARNING:
All newly-introduced feature flags should be [disabled by default](https://about.gitlab.com/handbook/product-development-flow/feature-flag-lifecycle/#feature-flags-in-gitlab-development).
@@ -21,23 +21,29 @@ All newly-introduced feature flags should be [disabled by default](https://about
NOTE:
This document is the subject of continued work as part of an epic to [improve internal usage of Feature Flags](https://gitlab.com/groups/gitlab-org/-/epics/3551). Raise any suggestions as new issues and attach them to the epic.
+For an [overview of the feature flag lifecycle](https://about.gitlab.com/handbook/product-development-flow/feature-flag-lifecycle/#feature-flag-lifecycle), or if you need help deciding [if you should use a feature flag](https://about.gitlab.com/handbook/product-development-flow/feature-flag-lifecycle/#when-to-use-feature-flags) or not, please see the [feature flag lifecycle](https://about.gitlab.com/handbook/product-development-flow/feature-flag-lifecycle) handbook page.
+
+## When to use feature flags
+
+Moved to the ["When to use feature flags"](https://about.gitlab.com/handbook/product-development-flow/feature-flag-lifecycle/#when-to-use-feature-flags) section in the handbook.
+
## Feature flags in GitLab development
The following highlights should be considered when deciding if feature flags
should be leveraged:
-- By default, the feature flags should be **off**.
+- The feature flag must be **disabled by default**.
- Feature flags should remain in the codebase for as short period as possible
to reduce the need for feature flag accounting.
-- The person operating with feature flags is responsible for clearly communicating
- the status of a feature behind the feature flag with responsible stakeholders. The
+- The person operating the feature flag is responsible for clearly communicating
+ the status of a feature behind the feature flag in the documentation and with other stakeholders. The
issue description should be updated with the feature flag name and whether it is
defaulted on or off as soon it is evident that a feature flag is needed.
-- Merge requests that make changes hidden behind a feature flag, or remove an
+- Merge requests that introduce a feature flag, update its state, or remove them
existing feature flag because a feature is deemed stable must have the
~"feature flag" label assigned.
-- When development of a feature will be spread across multiple merge
- requests, you can use the following workflow:
+
+When the feature implementation is delivered among multiple merge requests:
1. [Create a new feature flag](#create-a-new-feature-flag)
which is **off** by default, in the first merge request which uses the flag.
@@ -55,7 +61,7 @@ should be leveraged:
One might be tempted to think that feature flags will delay the release of a
feature by at least one month (= one release). This is not the case. A feature
flag does not have to stick around for a specific amount of time
-(e.g. at least one release), instead they should stick around until the feature
+(for example, at least one release), instead they should stick around until the feature
is deemed stable. Stable means it works on GitLab.com without causing any
problems, such as outages.
@@ -72,24 +78,51 @@ Choose a feature flag type that matches the expected usage.
### `development` type
`development` feature flags are short-lived feature flags,
-used so that unfinished code can be deployed in production.
+used for deploying unfinished code to production. Most feature flags used at
+GitLab are the `development` type.
-A `development` feature flag should have a rollout issue,
-ideally created using the [Feature Flag Roll Out template](https://gitlab.com/gitlab-org/gitlab/-/blob/master/.gitlab/issue_templates/Feature%20Flag%20Roll%20Out.md).
+A `development` feature flag must have a rollout issue
+created from the [Feature Flag Roll Out template](https://gitlab.com/gitlab-org/gitlab/-/blob/master/.gitlab/issue_templates/Feature%20Flag%20Roll%20Out.md).
+
+The format for `development` feature flags is `Feature.<state>(:<dev_flag_name>)`.
+To enable and disable them, run on the GitLab Rails console:
+
+```ruby
+# To enable it for the instance:
+Feature.enable(:<dev_flag_name>)
-This is the default type used when calling `Feature.enabled?`.
+# To disable it for the instance:
+Feature.disable(:<dev_flag_name>)
+
+# To enable for a specific project:
+Feature.enable(:<dev_flag_name>, Project.find(<project id>))
+
+# To disable for a specific project:
+Feature.disable(:<dev_flag_name>, Project.find(<project id>))
+```
+
+To check a `development` feature flag's state:
+
+```ruby
+# Check if the feature flag is enabled
+Feature.enabled?(:dev_flag_name)
+
+# Check if the feature flag is disabled
+Feature.disabled?(:dev_flag_name)
+```
+
+For `development` feature flags, the type doesn't need to be specified (they're the default type).
### `ops` type
`ops` feature flags are long-lived feature flags that control operational aspects
of GitLab product behavior. For example, feature flags that disable features that might
-have a performance impact, like special Sidekiq worker behavior.
+have a performance impact such as Sidekiq worker behavior.
`ops` feature flags likely do not have rollout issues, as it is hard to
predict when they are enabled or disabled.
-To use `ops` feature flags, you must append `type: :ops` to `Feature.enabled?`
-invocations:
+To invoke `ops` feature flags, you must append `type: :ops`:
```ruby
# Check if feature flag is enabled
@@ -108,7 +141,7 @@ push_frontend_feature_flag(:my_ops_flag, project, type: :ops)
An `experiment` feature flag should conform to the same standards as a `development` feature flag,
although the interface has some differences. An experiment feature flag should have a rollout issue,
-ideally created using the [Experiment Tracking template](https://gitlab.com/gitlab-org/gitlab/-/blob/master/.gitlab/issue_templates/experiment_tracking_template.md). More information can be found in the [experiment guide](../experiment_guide/index.md).
+created using the [Experiment Tracking template](https://gitlab.com/gitlab-org/gitlab/-/blob/master/.gitlab/issue_templates/experiment_tracking_template.md). More information can be found in the [experiment guide](../experiment_guide/index.md).
## Feature flag definition and validation
@@ -175,9 +208,24 @@ type: development
default_enabled: false
```
+All newly-introduced feature flags must be [**disabled by default**](https://about.gitlab.com/handbook/product-development-flow/feature-flag-lifecycle/#feature-flags-in-gitlab-development).
+
+Features that are developed and merged behind a feature flag
+should not include a changelog entry. The entry should be added either in the merge
+request removing the feature flag or the merge request where the default value of
+the feature flag is set to enabled. If the feature contains any database migrations, it
+*should* include a changelog entry for the database changes.
+
NOTE:
To create a feature flag that is only used in EE, add the `--ee` flag: `bin/feature-flag --ee`
+### Risk of a broken master (main) branch
+
+WARNING:
+Feature flags **must** be used in the MR that introduces them. Not doing so causes a
+[broken master](https://about.gitlab.com/handbook/engineering/workflow/#broken-master) scenario due
+to the `rspec:feature-flags` job that only runs on the `master` branch.
+
## Delete a feature flag
See [cleaning up feature flags](controls.md#cleaning-up) for more information about
@@ -286,8 +334,11 @@ end
### Frontend
-Use the `push_frontend_feature_flag` method which is available to all controllers that inherit from `ApplicationController`. You can use
-this method to expose the state of a feature flag, for example:
+When using a feature flag for UI elements, make sure to _also_ use a feature
+flag for the underlying backend code, if there is any. This ensures there is
+absolutely no way to use the feature until it is enabled.
+
+Use the `push_frontend_feature_flag` method which is available to all controllers that inherit from `ApplicationController`. You can use this method to expose the state of a feature flag, for example:
```ruby
before_action do
@@ -364,6 +415,8 @@ Feature.enabled?(:feature_flag, group)
Feature.enabled?(:feature_flag, user)
```
+Please see [Feature flag controls](controls.md#process) for more details on working with feature flags.
+
#### Selectively disable by actor
By default you cannot selectively disable a feature flag by actor.
@@ -461,7 +514,7 @@ Feature.remove(:feature_flag_name)
- **Exception:** database migrations **should** have a changelog entry.
- Any change related to a feature flag itself (flag removal, default-on setting) **should** have a changelog entry.
Use the flowchart to determine the changelog entry type.
-
+
```mermaid
graph LR
A[flag: default off] -->|'added' / 'changed'| B(flag: default on)
@@ -470,7 +523,7 @@ Feature.remove(:feature_flag_name)
A -->|'added' / 'changed'| C
A -->|no changelog| D
```
-
+
- Any change behind a feature flag that is **enabled** by default **should** have a changelog entry.
## Feature flags in tests
diff --git a/doc/development/feature_flags/process.md b/doc/development/feature_flags/process.md
index 0e962218ab9..3fbb207a12b 100644
--- a/doc/development/feature_flags/process.md
+++ b/doc/development/feature_flags/process.md
@@ -1,9 +1,9 @@
---
redirect_to: 'https://about.gitlab.com/handbook/product-development-flow/feature-flag-lifecycle/'
-remove_date: '2021-06-01'
+remove_date: '2022-03-01'
---
This document was moved to [another location](https://about.gitlab.com/handbook/product-development-flow/feature-flag-lifecycle/).
-<!-- This redirect file can be deleted after 2021-06-01. -->
-<!-- Before deletion, see: https://docs.gitlab.com/ee/development/documentation/#move-or-rename-a-page --> \ No newline at end of file
+<!-- This redirect file can be deleted after 2022-03-01. -->
+<!-- Before deletion, see: https://docs.gitlab.com/ee/development/documentation/#move-or-rename-a-page -->
diff --git a/doc/development/features_inside_dot_gitlab.md b/doc/development/features_inside_dot_gitlab.md
index 36b9064bbc4..4631ab3a471 100644
--- a/doc/development/features_inside_dot_gitlab.md
+++ b/doc/development/features_inside_dot_gitlab.md
@@ -13,7 +13,7 @@ When implementing new features, please refer to these existing features to avoid
- [Issue Templates](../user/project/description_templates.md#create-an-issue-template): `.gitlab/issue_templates/`.
- [Merge Request Templates](../user/project/description_templates.md#create-a-merge-request-template): `.gitlab/merge_request_templates/`.
- [GitLab Kubernetes Agents](https://gitlab.com/gitlab-org/cluster-integration/gitlab-agent/-/blob/master/doc/configuration_repository.md#layout): `.gitlab/agents/`.
-- [CODEOWNERS](../user/project/code_owners.md#how-to-set-up-code-owners): `.gitlab/CODEOWNERS`.
+- [CODEOWNERS](../user/project/code_owners.md#set-up-code-owners): `.gitlab/CODEOWNERS`.
- [Route Maps](../ci/review_apps/#route-maps): `.gitlab/route-map.yml`.
- [Customize Auto DevOps Helm Values](../topics/autodevops/customize.md#customize-values-for-helm-chart): `.gitlab/auto-deploy-values.yaml`.
- [GitLab managed apps CI/CD](../user/clusters/applications.md#usage): `.gitlab/managed-apps/config.yaml`.
diff --git a/doc/development/foreign_keys.md b/doc/development/foreign_keys.md
index abe191ace5e..a9edbc68a2e 100644
--- a/doc/development/foreign_keys.md
+++ b/doc/development/foreign_keys.md
@@ -17,7 +17,7 @@ end
Here you will need to add a foreign key on column `posts.user_id`. This ensures
that data consistency is enforced on database level. Foreign keys also mean that
-the database can very quickly remove associated data (e.g. when removing a
+the database can very quickly remove associated data (for example, when removing a
user), instead of Rails having to do this.
## Adding Foreign Keys In Migrations
@@ -28,7 +28,8 @@ Guide](migration_style_guide.md) for more information.
Keep in mind that you can only safely add foreign keys to existing tables after
you have removed any orphaned rows. The method `add_concurrent_foreign_key`
-does not take care of this so you'll need to do so manually.
+does not take care of this so you'll need to do so manually. See
+[adding foreign key constraint to an existing column](database/add_foreign_key_to_existing_column.md).
## Cascading Deletes
diff --git a/doc/development/geo.md b/doc/development/geo.md
index 8017bd21126..38245e5f4e5 100644
--- a/doc/development/geo.md
+++ b/doc/development/geo.md
@@ -56,7 +56,7 @@ Geo uses [streaming replication](#streaming-replication) to replicate
the database from the **primary** to the **secondary** nodes. This
replication gives the **secondary** nodes access to all the data saved
in the database. So users can log in on the **secondary** and read all
-the issues, merge requests, etc. on the **secondary** node.
+the issues, merge requests, and so on, on the **secondary** node.
### Repository replication
@@ -127,7 +127,7 @@ periodically to sync all uploads that aren't synced to the Geo
Files are copied via HTTP(s) and initiated via the
`/api/v4/geo/transfers/:type/:id` endpoint,
-e.g. `/api/v4/geo/transfers/lfs/123`.
+for example, `/api/v4/geo/transfers/lfs/123`.
## Authentication
@@ -219,7 +219,7 @@ bundle exec rake geo:db:migrate
Geo uses [Finders](https://gitlab.com/gitlab-org/gitlab/-/tree/master/app/finders),
which are classes take care of the heavy lifting of looking up
-projects/attachments/etc. in the tracking database and main database.
+projects/attachments/ and so on, in the tracking database and main database.
## Redis
@@ -228,7 +228,7 @@ node. It is used for caching, storing sessions, and other persistent
data.
Redis data replication between **primary** and **secondary** node is
-not used, so sessions etc. aren't shared between nodes.
+not used, so sessions and so on, aren't shared between nodes.
## Object Storage
@@ -396,11 +396,6 @@ that need to be taken care of:
- Health Check. If we can perform some pre-cheсks and make node unhealthy if something is wrong, we should do that.
The `rake gitlab:geo:check` command has to be updated too.
-### Geo self-service framework (alpha)
-
-We started developing a new [Geo self-service framework (alpha)](geo/framework.md)
-which makes it a lot easier to add a new data type.
-
## History of communication channel
The communication channel has changed since first iteration, you can
diff --git a/doc/development/git_object_deduplication.md b/doc/development/git_object_deduplication.md
index 1607f3e7a12..3ac24b19fc2 100644
--- a/doc/development/git_object_deduplication.md
+++ b/doc/development/git_object_deduplication.md
@@ -163,7 +163,7 @@ repository and a pool.
### Pool existence
-If GitLab thinks a pool repository exists (i.e. it exists according to
+If GitLab thinks a pool repository exists (that is, it exists according to
SQL), but it does not on the Gitaly server, then it is created on
the fly by Gitaly.
diff --git a/doc/development/gitaly.md b/doc/development/gitaly.md
index 2e814a9c41b..0a17bfedc0f 100644
--- a/doc/development/gitaly.md
+++ b/doc/development/gitaly.md
@@ -213,7 +213,7 @@ GITALY_REPO_URL=https://gitlab+deploy-token-1000:token-here@gitlab.com/nick.thom
To use a custom Gitaly repository in CI/CD, for instance if you want your
GitLab fork to always use your own Gitaly fork, set `GITALY_REPO_URL`
-as a [CI/CD variable](../ci/variables/README.md).
+as a [CI/CD variable](../ci/variables/index.md).
### Use a locally modified version of Gitaly RPC client
@@ -235,7 +235,7 @@ changes to embed a new SHA in the `Gemfile.lock` file.
---
-[Return to Development documentation](README.md)
+[Return to Development documentation](index.md)
## Wrapping RPCs in Feature Flags
diff --git a/doc/development/github_importer.md b/doc/development/github_importer.md
index cc289496301..a733d6881fa 100644
--- a/doc/development/github_importer.md
+++ b/doc/development/github_importer.md
@@ -145,7 +145,7 @@ long we're still performing work.
GitHub has a rate limit of 5,000 API calls per hour. The number of requests
necessary to import a project is largely dominated by the number of unique users
-involved in a project (e.g. issue authors). Other data such as issue pages
+involved in a project (for example, issue authors). Other data such as issue pages
and comments typically only requires a few dozen requests to import. This is
because we need the Email address of users in order to map them to GitLab users.
@@ -213,3 +213,41 @@ The code for this resides in:
- `lib/gitlab/github_import/label_finder.rb`
- `lib/gitlab/github_import/milestone_finder.rb`
- `lib/gitlab/github_import/caching.rb`
+
+## Logs
+
+> - [Introduced](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/48512/diffs) in GitLab 13.7.
+> - Number of imported objects [introduced](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/64256) in GitLab 14.1.
+
+The import progress can be checked in the `logs/importer.log` file. Each relevant import is logged
+with `"import_source": "github"` and the `"project_id"`.
+
+The last log entry reports the number of objects fetched and imported:
+
+```json
+{
+ "message": "GitHub project import finished",
+ "duration_s": 347.25,
+ "objects_imported": {
+ "fetched": {
+ "diff_note": 93,
+ "issue": 321,
+ "note": 794,
+ "pull_request": 108,
+ "pull_request_merged_by": 92,
+ "pull_request_review": 81
+ },
+ "imported": {
+ "diff_note": 93,
+ "issue": 321,
+ "note": 794,
+ "pull_request": 108,
+ "pull_request_merged_by": 92,
+ "pull_request_review": 81
+ }
+ },
+ "import_source": "github",
+ "project_id": 47,
+ "import_stage": "Gitlab::GithubImport::Stage::FinishImportWorker"
+}
+```
diff --git a/doc/development/go_guide/index.md b/doc/development/go_guide/index.md
index ad24353fde8..224d8a0a0f5 100644
--- a/doc/development/go_guide/index.md
+++ b/doc/development/go_guide/index.md
@@ -14,7 +14,7 @@ projects using the [Go language](https://golang.org).
GitLab is built on top of [Ruby on Rails](https://rubyonrails.org/), but we're
also using Go for projects where it makes sense. Go is a very powerful
language, with many advantages, and is best suited for projects with a lot of
-IO (disk/network access), HTTP requests, parallel processing, etc. Since we
+IO (disk/network access), HTTP requests, parallel processing, and so on. Since we
have both Ruby on Rails and Go at GitLab, we should evaluate carefully which of
the two is best for the job.
@@ -390,7 +390,7 @@ consistent across Workhorse, Gitaly, and, in future, other Go servers. For
example, in the case of `gitlab.com/gitlab-org/labkit/tracing` we can switch
from using `Opentracing` directly to using `Zipkin` or Gokit's own tracing wrapper
without changes to the application code, while still keeping the same
-consistent configuration mechanism (i.e. the `GITLAB_TRACING` environment
+consistent configuration mechanism (that is, the `GITLAB_TRACING` environment
variable).
### Context
@@ -436,8 +436,8 @@ and the version being used for [CNG](https://gitlab.com/gitlab-org/build/cng/blo
### Updating Go version
-We should always use a [supported version](https://golang.org/doc/devel/release.html#policy)
-of Go, i.e., one of the three most recent minor releases, and should always use
+We should always use a [supported version](https://golang.org/doc/devel/release#policy)
+of Go, that is, one of the three most recent minor releases, and should always use
the most recent patch-level for that version, as it may contain security fixes.
Changing the version affects every project being compiled, so it's important to
@@ -507,4 +507,4 @@ If the scanner report is small, less than 35 lines, then feel free to [inline th
---
-[Return to Development documentation](../README.md).
+[Return to Development documentation](../index.md).
diff --git a/doc/development/i18n/externalization.md b/doc/development/i18n/externalization.md
index 7ea8378b6db..796a1f44ccd 100644
--- a/doc/development/i18n/externalization.md
+++ b/doc/development/i18n/externalization.md
@@ -363,7 +363,7 @@ use `%{created_at}` in Ruby but `%{createdAt}` in JavaScript. Make sure to
// => When x == 2: 'Last 2 days'
```
-The `n_` method should only be used to fetch pluralized translations of the same
+The `n_` and `n__` methods should only be used to fetch pluralized translations of the same
string, not to control the logic of showing different strings for different
quantities. Some languages have different quantities of target plural forms.
For example, Chinese (simplified) has only one target plural form in our
@@ -376,7 +376,7 @@ For example, use this:
if selected_projects.one?
selected_projects.first.name
else
- n__("Project selected", "%d projects selected", selected_projects.count)
+ n_("Project selected", "%d projects selected", selected_projects.count)
end
```
diff --git a/doc/development/i18n/merging_translations.md b/doc/development/i18n/merging_translations.md
index e3211f5a8fc..f89190fc316 100644
--- a/doc/development/i18n/merging_translations.md
+++ b/doc/development/i18n/merging_translations.md
@@ -21,7 +21,7 @@ message. This avoids an excessive number of pipelines from running.
Before merging translations, make sure to trigger a pipeline to validate
translations. Static analysis validates things CrowdIn doesn't do. Create
a new pipeline at [`https://gitlab.com/gitlab-org/gitlab/pipelines/new`](https://gitlab.com/gitlab-org/gitlab/pipelines/new)
-(need developer permissions) for the `master-i18n` branch.
+(requires the Developer role) for the `master-i18n` branch.
If there are validation errors, the easiest solution is to disapprove
the offending string in CrowdIn, leaving a comment with what is
diff --git a/doc/development/i18n/proofreader.md b/doc/development/i18n/proofreader.md
index fc19ab93ecd..6e3b32e18df 100644
--- a/doc/development/i18n/proofreader.md
+++ b/doc/development/i18n/proofreader.md
@@ -93,6 +93,7 @@ are very appreciative of the work done by translators and proofreaders!
- Portuguese, Brazilian
- Paulo George Gomes Bezerra - [GitLab](https://gitlab.com/paulobezerra), [CrowdIn](https://crowdin.com/profile/paulogomes.rep)
- André Gama - [GitLab](https://gitlab.com/andregamma), [CrowdIn](https://crowdin.com/profile/ToeOficial)
+ - Eduardo Addad de Oliveira - [GitLab](https://gitlab.com/eduardoaddad), [CrowdIn](https://crowdin.com/profile/eduardoaddad)
- Romanian
- Proofreaders needed.
- Russian
diff --git a/doc/development/img/stage_group_dashboards_error_attribution.png b/doc/development/img/stage_group_dashboards_error_attribution.png
new file mode 100644
index 00000000000..bac778b7450
--- /dev/null
+++ b/doc/development/img/stage_group_dashboards_error_attribution.png
Binary files differ
diff --git a/doc/development/img/stage_group_dashboards_service_sli_detail.png b/doc/development/img/stage_group_dashboards_service_sli_detail.png
new file mode 100644
index 00000000000..5372b10074a
--- /dev/null
+++ b/doc/development/img/stage_group_dashboards_service_sli_detail.png
Binary files differ
diff --git a/doc/development/index.md b/doc/development/index.md
new file mode 100644
index 00000000000..711fc009d23
--- /dev/null
+++ b/doc/development/index.md
@@ -0,0 +1,340 @@
+---
+comments: false
+type: index, dev
+stage: none
+group: Development
+info: "See the Technical Writers assigned to Development Guidelines: https://about.gitlab.com/handbook/engineering/ux/technical-writing/#assignments-to-development-guidelines"
+description: "Development Guidelines: learn how to contribute to GitLab."
+---
+
+# Contributor and Development Docs
+
+Learn the processes and technical information needed for contributing to GitLab.
+
+This content is intended for members of the GitLab Team as well as community
+contributors. Content specific to the GitLab Team should instead be included in
+the [Handbook](https://about.gitlab.com/handbook/).
+
+For information on using GitLab to work on your own software projects, see the
+[GitLab user documentation](../user/index.md).
+
+For information on working with the GitLab APIs, see the [API documentation](../api/README.md).
+
+For information about how to install, configure, update, and upgrade your own
+GitLab instance, see the [administration documentation](../administration/index.md).
+
+## Get started
+
+- Set up the GitLab development environment with the
+ [GitLab Development Kit (GDK)](https://gitlab.com/gitlab-org/gitlab-development-kit/-/blob/main/README.md)
+- [GitLab contributing guide](contributing/index.md)
+ - [Issues workflow](contributing/issue_workflow.md) for more information about:
+ - Issue tracker guidelines.
+ - Triaging.
+ - Labels.
+ - Feature proposals.
+ - Issue weight.
+ - Regression issues.
+ - Technical or UX debt.
+ - [Merge requests workflow](contributing/merge_request_workflow.md) for more
+ information about:
+ - Merge request guidelines.
+ - Contribution acceptance criteria.
+ - Definition of done.
+ - Dependencies.
+ - [Style guides](contributing/style_guides.md)
+ - [Implement design & UI elements](contributing/design.md)
+- [GitLab Architecture Overview](architecture.md)
+- [Rake tasks](rake_tasks.md) for development
+
+## Processes
+
+**Must-reads:**
+
+- [Guide on adapting existing and introducing new components](architecture.md#adapting-existing-and-introducing-new-components)
+- [Code review guidelines](code_review.md) for reviewing code and having code
+ reviewed
+- [Database review guidelines](database_review.md) for reviewing
+ database-related changes and complex SQL queries, and having them reviewed
+- [Secure coding guidelines](secure_coding_guidelines.md)
+- [Pipelines for the GitLab project](pipelines.md)
+
+Complementary reads:
+
+- [GitLab core team & GitLab Inc. contribution process](https://gitlab.com/gitlab-org/gitlab/-/blob/master/PROCESS.md)
+- [Security process for developers](https://gitlab.com/gitlab-org/release/docs/blob/master/general/security/developer.md#security-releases-critical-non-critical-as-a-developer)
+- [Guidelines for implementing Enterprise Edition features](ee_features.md)
+- [Danger bot](dangerbot.md)
+- [Guidelines for changelogs](changelog.md)
+- [Requesting access to ChatOps on GitLab.com](chatops_on_gitlabcom.md#requesting-access) (for GitLab team members)
+- [Patch release process for developers](https://gitlab.com/gitlab-org/release/docs/blob/master/general/patch/process.md#process-for-developers)
+- [Adding a new service component to GitLab](adding_service_component.md)
+
+### Development guidelines review
+
+When you submit a change to the GitLab development guidelines, who
+you ask for reviews depends on the level of change.
+
+#### Wording, style, or link changes
+
+Not all changes require extensive review. For example, MRs that don't change the
+content's meaning or function can be reviewed, approved, and merged by any
+maintainer or Technical Writer. These can include:
+
+- Typo fixes.
+- Clarifying links, such as to external programming language documentation.
+- Changes to comply with the [Documentation Style Guide](documentation/index.md)
+ that don't change the intent of the documentation page.
+
+#### Specific changes
+
+If the MR proposes changes that are limited to a particular stage, group, or team,
+request a review and approval from an experienced GitLab Team Member in that
+group. For example, if you're documenting a new internal API used exclusively by
+a given group, request an engineering review from one of the group's members.
+
+After the engineering review is complete, assign the MR to the
+[Technical Writer associated with the stage and group](https://about.gitlab.com/handbook/engineering/ux/technical-writing/#assignments)
+in the modified documentation page's metadata.
+
+If you have questions or need further input, request a review from the
+Technical Writer assigned to the [Development Guidelines](https://about.gitlab.com/handbook/engineering/ux/technical-writing/#assignments-to-development-guidelines).
+
+#### Broader changes
+
+Some changes affect more than one group. For example:
+
+- Changes to [code review guidelines](code_review.md).
+- Changes to [commit message guidelines](contributing/merge_request_workflow.md#commit-messages-guidelines).
+- Changes to guidelines in [feature flags in development of GitLab](feature_flags/).
+- Changes to [feature flags documentation guidelines](documentation/feature_flags.md).
+
+In these cases, use the following workflow:
+
+1. Request a peer review from a member of your team.
+1. Request a review and approval of an Engineering Manager (EM)
+ or Staff Engineer who's responsible for the area in question:
+
+ - [Frontend](https://about.gitlab.com/handbook/engineering/frontend/)
+ - [Backend](https://about.gitlab.com/handbook/engineering/)
+ - [Database](https://about.gitlab.com/handbook/engineering/development/database/)
+ - [User Experience (UX)](https://about.gitlab.com/handbook/engineering/ux/)
+ - [Security](https://about.gitlab.com/handbook/engineering/security/)
+ - [Quality](https://about.gitlab.com/handbook/engineering/quality/)
+ - [Engineering Productivity](https://about.gitlab.com/handbook/engineering/quality/engineering-productivity-team/)
+ - [Infrastructure](https://about.gitlab.com/handbook/engineering/infrastructure/)
+ - [Technical Writing](https://about.gitlab.com/handbook/engineering/ux/technical-writing/)
+
+ You can skip this step for MRs authored by EMs or Staff Engineers responsible
+ for their area.
+
+ If there are several affected groups, you may need approvals at the
+ EM/Staff Engineer level from each affected area.
+
+1. After completing the reviews, consult with the EM/Staff Engineer
+ author / approver of the MR.
+
+ If this is a significant change across multiple areas, request final review
+ and approval from the VP of Development, the DRI for Development Guidelines,
+ @clefelhocz1.
+
+1. After all approvals are complete, assign the merge request to the
+ Technical Writer for [Development Guidelines](https://about.gitlab.com/handbook/engineering/ux/technical-writing/#assignments-to-development-guidelines)
+ for final content review and merge. The Technical Writer may ask for
+ additional approvals as previously suggested before merging the MR.
+
+### Reviewer values
+
+> [Introduced](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/57293) in GitLab 14.1.
+
+As a reviewer or as a reviewee, make sure to familiarize yourself with
+the [reviewer values](https://about.gitlab.com/handbook/engineering/workflow/reviewer-values/) we strive for at GitLab.
+
+## UX and Frontend guides
+
+- [GitLab Design System](https://design.gitlab.com/), for building GitLab with
+ existing CSS styles and elements
+- [Frontend guidelines](fe_guide/index.md)
+- [Emoji guide](fe_guide/emojis.md)
+
+## Backend guides
+
+### General
+
+- [Directory structure](directory_structure.md)
+- [GitLab utilities](utilities.md)
+- [Newlines style guide](newlines_styleguide.md)
+- [Logging](logging.md)
+- [Dealing with email/mailers](emails.md)
+- [Kubernetes integration guidelines](kubernetes.md)
+- [Permissions](permissions.md)
+- [Code comments](code_comments.md)
+- [Windows Development on GCP](windows.md)
+- [FIPS compliance](fips_compliance.md)
+- [`Gemfile` guidelines](gemfile.md)
+
+### Things to be aware of
+
+- [Gotchas](gotchas.md) to avoid
+- [Avoid modules with instance variables](module_with_instance_variables.md), if
+ possible
+- [Guidelines for reusing abstractions](reusing_abstractions.md)
+
+### Rails Framework related
+
+- [Routing](routing.md)
+- [Rails initializers](rails_initializers.md)
+- [Mass Inserting Models](mass_insert.md)
+- [Issuable-like Rails models](issuable-like-models.md)
+- [Issue types vs first-class types](issue_types.md)
+- [DeclarativePolicy framework](policies.md)
+
+### Debugging
+
+- [Pry debugging](pry_debugging.md)
+- [Sidekiq debugging](../administration/troubleshooting/sidekiq.md)
+
+### Git specifics
+
+- [How Git object deduplication works in GitLab](git_object_deduplication.md)
+- [Git LFS](lfs.md)
+
+### API
+
+- [API style guide](api_styleguide.md) for contributing to the API
+- [GraphQL API style guide](api_graphql_styleguide.md) for contributing to the
+ [GraphQL API](../api/graphql/index.md)
+
+### GitLab components and features
+
+- [Developing against interacting components or features](interacting_components.md)
+- [Manage feature flags](feature_flags/index.md)
+- [Licensed feature availability](licensed_feature_availability.md)
+- [Accessing session data](session.md)
+- [How to dump production data to staging](db_dump.md)
+- [Geo development](geo.md)
+- [Redis guidelines](redis.md)
+- [Sidekiq guidelines](sidekiq_style_guide.md) for working with Sidekiq workers
+- [Working with Gitaly](gitaly.md)
+- [Elasticsearch integration docs](elasticsearch.md)
+- [Working with Merge Request diffs](diffs.md)
+- [Approval Rules](approval_rules.md)
+- [Repository mirroring](repository_mirroring.md)
+- [File uploads](uploads.md)
+- [Auto DevOps development guide](auto_devops.md)
+- [Renaming features](renaming_features.md)
+- [Code Intelligence](code_intelligence/index.md)
+- [Feature categorization](feature_categorization/index.md)
+- [Wikis development guide](wikis.md)
+- [Image scaling guide](image_scaling.md)
+- [Cascading Settings](cascading_settings.md)
+- [Shell commands](shell_commands.md) in the GitLab codebase
+- [Value Stream Analytics development guide](value_stream_analytics.md)
+- [Application limits](application_limits.md)
+
+### Import/Export
+
+- [Working with the GitHub importer](github_importer.md)
+- [Import/Export development documentation](import_export.md)
+- [Test Import Project](import_project.md)
+- [Group migration](bulk_import.md)
+- [Export to CSV](export_csv.md)
+
+## Language-specific guides
+
+### Go guides
+
+- [Go Guidelines](go_guide/index.md)
+
+### Shell Scripting guides
+
+- [Shell scripting standards and style guidelines](shell_scripting_guide/index.md)
+
+## Performance guides
+
+- [Instrumentation](instrumentation.md) for Ruby code running in production
+ environments.
+- [Performance guidelines](performance.md) for writing code, benchmarks, and
+ certain patterns to avoid.
+- [Merge request performance guidelines](merge_request_performance_guidelines.md)
+ for ensuring merge requests do not negatively impact GitLab performance
+- [Profiling](profiling.md) a URL, measuring performance using Sherlock, or
+ tracking down N+1 queries using Bullet.
+- [Cached queries guidelines](cached_queries.md), for tracking down N+1 queries
+ masked by query caching, memory profiling and why should we avoid cached
+ queries.
+
+## Database guides
+
+See [database guidelines](database/index.md).
+
+## Integration guides
+
+- [Jira Connect app](integrations/jira_connect.md)
+- [Security Scanners](integrations/secure.md)
+- [Secure Partner Integration](integrations/secure_partner_integration.md)
+- [How to run Jenkins in development environment](integrations/jenkins.md)
+- [How to run local `Codesandbox` integration for Web IDE Live Preview](integrations/codesandbox.md)
+
+## Testing guides
+
+- [Testing standards and style guidelines](testing_guide/index.md)
+- [Frontend testing standards and style guidelines](testing_guide/frontend_testing.md)
+
+## Refactoring guides
+
+- [Refactoring guidelines](refactoring_guide/index.md)
+
+## Deprecation guides
+
+- [Deprecation guidelines](deprecation_guidelines/index.md)
+
+## Documentation guides
+
+- [Writing documentation](documentation/index.md)
+- [Documentation style guide](documentation/styleguide/index.md)
+- [Markdown](../user/markdown.md)
+
+## Internationalization (i18n) guides
+
+- [Introduction](i18n/index.md)
+- [Externalization](i18n/externalization.md)
+- [Translation](i18n/translation.md)
+
+## Product Intelligence guides
+
+- [Product Intelligence guide](https://about.gitlab.com/handbook/product/product-intelligence-guide/)
+- [Service Ping guide](service_ping/index.md)
+- [Snowplow guide](snowplow/index.md)
+
+## Experiment guide
+
+- [Introduction](experiment_guide/index.md)
+
+## Build guides
+
+- [Building a package for testing purposes](build_test_package.md)
+
+## Compliance
+
+- [Licensing](licensing.md) for ensuring license compliance
+
+## Domain-specific guides
+
+- [CI/CD development documentation](cicd/index.md)
+- [AppSec development documentation](appsec/index.md)
+
+## Other Development guides
+
+- [Defining relations between files using projections](projections.md)
+- [Reference processing](reference_processing.md)
+- [Compatibility with multiple versions of the application running at the same time](multi_version_compatibility.md)
+- [Features inside `.gitlab/`](features_inside_dot_gitlab.md)
+- [Dashboards for stage groups](stage_group_dashboards.md)
+- [Preventing transient bugs](transient/prevention-patterns.md)
+
+## Other GitLab Development Kit (GDK) guides
+
+- [Run full Auto DevOps cycle in a GDK instance](https://gitlab.com/gitlab-org/gitlab-development-kit/blob/main/doc/howto/auto_devops.md)
+- [Using GitLab Runner with the GDK](https://gitlab.com/gitlab-org/gitlab-development-kit/blob/main/doc/howto/runner.md)
+- [Using the Web IDE terminal with the GDK](https://gitlab.com/gitlab-org/gitlab-development-kit/-/blob/main/doc/howto/web_ide_terminal_gdk_setup.md)
diff --git a/doc/development/integrations/secure.md b/doc/development/integrations/secure.md
index c4d8dfd3b95..07f7ac6a2ac 100644
--- a/doc/development/integrations/secure.md
+++ b/doc/development/integrations/secure.md
@@ -7,7 +7,7 @@ info: To determine the technical writer assigned to the Stage/Group associated w
# Security scanner integration
Integrating a security scanner into GitLab consists of providing end users
-with a [CI job definition](../../ci/yaml/README.md)
+with a [CI job definition](../../ci/yaml/index.md)
they can add to their CI configuration files to scan their GitLab projects.
This CI job should then output its results in a GitLab-specified format. These results are then
automatically presented in various places in GitLab, such as the Pipeline view, Merge Request
@@ -23,53 +23,67 @@ scanner, as well as requirements and guidelines for the Docker image.
This section describes several important fields to add to the security scanner's job
definition file. Full documentation on these and other available fields can be viewed
-in the [CI documentation](../../ci/yaml/README.md#image).
+in the [CI documentation](../../ci/yaml/index.md#image).
### Name
For consistency, scanning jobs should be named after the scanner, in lower case.
The job name is suffixed after the type of scanning:
-`_dependency_scanning`, `_container_scanning`, `_dast`, and `_sast`.
+
+- `_dependency_scanning`
+- `_cluster_image_scanning`
+- `_container_scanning`
+- `_dast`
+- `_sast`
+
For instance, the dependency scanning job based on the "MySec" scanner would be named `mysec_dependency_scanning`.
### Image
-The [`image`](../../ci/yaml/README.md#image) keyword is used to specify
+The [`image`](../../ci/yaml/index.md#image) keyword is used to specify
the [Docker image](../../ci/docker/using_docker_images.md#what-is-an-image)
containing the security scanner.
### Script
-The [`script`](../../ci/yaml/README.md#script) keyword
+The [`script`](../../ci/yaml/index.md#script) keyword
is used to specify the commands to run the scanner.
Because the `script` entry can't be left empty, it must be set to the command that performs the scan.
It is not possible to rely on the predefined `ENTRYPOINT` and `CMD` of the Docker image
to perform the scan automatically, without passing any command.
-The [`before_script`](../../ci/yaml/README.md#before_script)
+The [`before_script`](../../ci/yaml/index.md#before_script)
should not be used in the job definition because users may rely on this to prepare their projects before performing the scan.
For instance, it is common practice to use `before_script` to install system libraries
a particular project needs before performing SAST or Dependency Scanning.
-Similarly, [`after_script`](../../ci/yaml/README.md#after_script)
+Similarly, [`after_script`](../../ci/yaml/index.md#after_script)
should not be used in the job definition, because it may be overridden by users.
### Stage
For consistency, scanning jobs should belong to the `test` stage when possible.
-The [`stage`](../../ci/yaml/README.md#stage) keyword can be omitted because `test` is the default value.
+The [`stage`](../../ci/yaml/index.md#stage) keyword can be omitted because `test` is the default value.
### Fail-safe
To be aligned with the [GitLab Security paradigm](https://about.gitlab.com/direction/secure/#security-paradigm),
scanning jobs should not block the pipeline when they fail,
-so the [`allow_failure`](../../ci/yaml/README.md#allow_failure) parameter should be set to `true`.
+so the [`allow_failure`](../../ci/yaml/index.md#allow_failure) parameter should be set to `true`.
### Artifacts
Scanning jobs must declare a report that corresponds to the type of scanning they perform,
-using the [`artifacts:reports`](../../ci/yaml/README.md#artifactsreports) keyword.
-Valid reports are: `dependency_scanning`, `container_scanning`, `dast`, `api_fuzzing`, `coverage_fuzzing`, and `sast`.
+using the [`artifacts:reports`](../../ci/yaml/index.md#artifactsreports) keyword.
+Valid reports are:
+
+- `dependency_scanning`
+- `container_scanning`
+- `cluster_image_scanning`
+- `dast`
+- `api_fuzzing`
+- `coverage_fuzzing`
+- `sast`
For example, here is the definition of a SAST job that generates a file named `gl-sast-report.json`,
and uploads it as a SAST report:
@@ -90,9 +104,15 @@ it's declared under the `reports:sast` key in the job definition, not because of
Certain GitLab workflows, such as [AutoDevOps](../../topics/autodevops/customize.md#disable-jobs),
define CI/CD variables to indicate that given scans should be disabled. You can check for this by looking
-for variables such as `DEPENDENCY_SCANNING_DISABLED`, `CONTAINER_SCANNING_DISABLED`,
-`SAST_DISABLED`, and `DAST_DISABLED`. If appropriate based on the scanner type, you should then
-disable running the custom scanner.
+for variables such as:
+
+- `DEPENDENCY_SCANNING_DISABLED`
+- `CONTAINER_SCANNING_DISABLED`
+- `CLUSTER_IMAGE_SCANNING_DISABLED`
+- `SAST_DISABLED`
+- `DAST_DISABLED`
+
+If appropriate based on the scanner type, you should then disable running the custom scanner.
GitLab also defines a `CI_PROJECT_REPOSITORY_LANGUAGES` variable, which provides the list of
languages in the repository. Depending on this value, your scanner may or may not do something different.
@@ -171,7 +191,7 @@ It also generates text output on the standard output and standard error streams,
### Variables
All CI/CD variables are passed to the scanner as environment variables.
-The scanned project is described by the [predefined CI/CD variables](../../ci/variables/README.md).
+The scanned project is described by the [predefined CI/CD variables](../../ci/variables/index.md).
#### SAST and Dependency Scanning
@@ -194,6 +214,19 @@ using the variables `DOCKER_USER` and `DOCKER_PASSWORD`.
If these are not defined, then the scanner should use
`CI_REGISTRY_USER` and `CI_REGISTRY_PASSWORD` as default values.
+#### Cluster Image Scanning
+
+To be consistent with the official `cluster_image_scanning` for GitLab, scanners must scan the
+Kubernetes cluster whose configuration is given by `KUBECONFIG`.
+
+If you use the `CIS_KUBECONFIG` CI/CD variable, then the
+`KUBECONFIG` variable is ignored and the cluster specified in the
+`CIS_KUBECONFIG` variable is scanned instead. If you don't provide
+the `CIS_KUBECONFIG` CI/CD variable, the value defaults to the value of
+`$KUBECONFIG`. `$KUBECONFIG` is a predefined CI/CD variable configured when the project is assigned to a
+Kubernetes cluster. When multiple contexts are provided in the `KUBECONFIG` variable, the context
+selected as `current-context` will be used to fetch vulnerabilities.
+
#### Configuration files
While scanners may use `CI_PROJECT_DIR` to load specific configuration files,
@@ -209,7 +242,7 @@ It is recommended to name the output file after the type of scanning, and to use
Since all Secure reports are JSON files, it is recommended to use `.json` as a file extension.
For instance, a suggested filename for a Dependency Scanning report is `gl-dependency-scanning.json`.
-The [`artifacts:reports`](../../ci/yaml/README.md#artifactsreports) keyword
+The [`artifacts:reports`](../../ci/yaml/index.md#artifactsreports) keyword
of the job definition must be consistent with the file path where the Security report is written.
For instance, if a Dependency Scanning analyzer writes its report to the CI project directory,
and if this report filename is `depscan.json`,
@@ -282,7 +315,8 @@ The format is extensively described in the documentation of
[SAST](../../user/application_security/sast/index.md#reports-json-format),
[DAST](../../user/application_security/dast/#reports),
[Dependency Scanning](../../user/application_security/dependency_scanning/index.md#reports-json-format),
-and [Container Scanning](../../user/application_security/container_scanning/index.md#reports-json-format).
+[Container Scanning](../../user/application_security/container_scanning/index.md#reports-json-format),
+and [Cluster Image Scanning](../../user/application_security/cluster_image_scanning/index.md#reports-json-format).
You can find the schemas for these scanners here:
@@ -310,7 +344,12 @@ We recommend that you generate a UUID and use it as the `id` field's value.
#### Category
The value of the `category` field matches the report type:
-`dependency_scanning`, `container_scanning`, `sast`, and `dast`.
+
+- `dependency_scanning`
+- `cluster_image_scanning`
+- `container_scanning`
+- `sast`
+- `dast`
#### Scanner
@@ -415,6 +454,10 @@ which is used to track vulnerabilities
as new commits are pushed to the repository.
The attributes used to generate the location fingerprint also depend on the type of scanning.
+### Details
+
+The `details` field is an object that supports many different content elements that are displayed when viewing vulnerability information. An example of the various data elements can be seen in the [security-reports repository](https://gitlab.com/gitlab-examples/security/security-reports/-/tree/master/samples/details-example).
+
#### Dependency Scanning
The `location` of a Dependency Scanning vulnerability is composed of a `dependency` and a `file`.
@@ -476,6 +519,31 @@ so these attributes are mandatory.
The `image` is also mandatory.
All other attributes are optional.
+#### Cluster Image Scanning
+
+The `location` of a `cluster_image_scanning` vulnerability has a `dependency` field. It also has
+an `operating_system` field. For example, here is the `location` object for a vulnerability
+affecting version `2.50.3-2+deb9u1` of Debian package `glib2.0`:
+
+```json
+{
+ "dependency": {
+ "package": {
+ "name": "glib2.0"
+ },
+ },
+ "version": "2.50.3-2+deb9u1",
+ "operating_system": "debian:9",
+ "image": "index.docker.io/library/nginx:1.18"
+}
+```
+
+The affected package is found when scanning the image of the pod `index.docker.io/library/nginx:1.18`.
+
+The location fingerprint of a Cluster Image Scanning vulnerability combines the
+`operating_system` and the package `name`, so these attributes are mandatory. The `image` is also
+mandatory. All other attributes are optional.
+
#### SAST
The `location` of a SAST vulnerability must have a `file` and a `start_line` field,
diff --git a/doc/development/integrations/secure_partner_integration.md b/doc/development/integrations/secure_partner_integration.md
index e6048bed152..34e0aaedfaf 100644
--- a/doc/development/integrations/secure_partner_integration.md
+++ b/doc/development/integrations/secure_partner_integration.md
@@ -83,13 +83,14 @@ and complete an integration with the Secure stage.
1. Ensure your pipeline jobs create a report artifact that GitLab can process
to successfully display your own product's results with the rest of GitLab.
- See detailed [technical directions](secure.md) for this step.
- - Read more about [job report artifacts](../../ci/yaml/README.md#artifactsreports).
+ - Read more about [job report artifacts](../../ci/yaml/index.md#artifactsreports).
- Read about [job artifacts](../../ci/pipelines/job_artifacts.md).
- Your report artifact must be in one of our currently supported formats.
For more information, see the [documentation on reports](secure.md#report).
- Documentation for [SAST reports](../../user/application_security/sast/index.md#reports-json-format).
- Documentation for [Dependency Scanning reports](../../user/application_security/dependency_scanning/index.md#reports-json-format).
- Documentation for [Container Scanning reports](../../user/application_security/container_scanning/index.md#reports-json-format).
+ - Documentation for [`cluster_image_scanning` reports](../../user/application_security/cluster_image_scanning/index.md#reports-json-format).
- See this [example secure job definition that also defines the artifact created](https://gitlab.com/gitlab-org/gitlab/-/blob/master/lib/gitlab/ci/templates/Security/Container-Scanning.gitlab-ci.yml).
- If you need a new kind of scan or report, [create an issue](https://gitlab.com/gitlab-org/gitlab/-/issues/new#)
and add the label `devops::secure`.
diff --git a/doc/development/internal_api.md b/doc/development/internal_api.md
index 95139f731e1..4614db96263 100644
--- a/doc/development/internal_api.md
+++ b/doc/development/internal_api.md
@@ -445,7 +445,7 @@ agent to be authorized is [not yet implemented](https://gitlab.com/gitlab-org/gi
| Attribute | Type | Required | Description |
|:----------|:-------|:---------|:------------|
-| `id` | integer/string | yes | The ID or [URL-encoded path of the project](../api/README.md#namespaced-path-encoding) |
+| `id` | integer/string | yes | The ID or [URL-encoded path of the project](../api/index.md#namespaced-path-encoding) |
```plaintext
GET /internal/kubernetes/project_info
@@ -529,7 +529,7 @@ POST /namespaces/:id/gitlab_subscription
Example request:
```shell
-curl --request POST --header "TOKEN: <admin_access_token>" "https://gitlab.com/api/v4/namespaces/1234/gitlab_subscription?start_date="2020-07-15"&plan="silver"&seats=10"
+curl --request POST --header "TOKEN: <admin_access_token>" "https://gitlab.com/api/v4/namespaces/1234/gitlab_subscription?start_date="2020-07-15"&plan="premium"&seats=10"
```
Example response:
@@ -537,8 +537,8 @@ Example response:
```json
{
"plan": {
- "code":"silver",
- "name":"Silver",
+ "code":"premium",
+ "name":"premium",
"trial":false,
"auto_renew":null,
"upgradable":false
@@ -588,8 +588,8 @@ Example response:
```json
{
"plan": {
- "code":"silver",
- "name":"Silver",
+ "code":"premium",
+ "name":"premium",
"trial":false,
"auto_renew":null,
"upgradable":false
@@ -627,8 +627,8 @@ Example response:
```json
{
"plan": {
- "code":"silver",
- "name":"Silver",
+ "code":"premium",
+ "name":"premium",
"trial":false,
"auto_renew":null,
"upgradable":false
@@ -650,3 +650,122 @@ Example response:
### Known consumers
- CustomersDot
+
+## CI minute provisioning
+
+The CI Minute endpoints are used by [CustomersDot](https://gitlab.com/gitlab-org/customers-gitlab-com) (`customers.gitlab.com`)
+to apply additional packs of CI minutes, for personal namespaces or top-level groups within GitLab.com.
+
+### Creating an additional pack
+
+Use a POST to create an additional pack.
+
+```plaintext
+POST /namespaces/:id/minutes
+```
+
+| Attribute | Type | Required | Description |
+|:------------|:--------|:---------|:------------|
+| `expires_at` | date | yes | Expiry date of the purchased pack|
+| `number_of_minutes` | integer | yes | Number of additional minutes |
+| `purchase_xid` | string | yes | The unique ID of the purchase |
+
+Example request:
+
+```shell
+curl --request POST \
+ --url http://localhost:3000/api/v4/namespaces/123/minutes \
+ --header 'Content-Type: application/json' \
+ --header 'PRIVATE-TOKEN: <admin access token>' \
+ --data '{
+ "number_of_minutes": 10000,
+ "expires_at": "2022-01-01",
+ "purchase_xid": "46952fe69bebc1a4de10b2b4ff439d0c" }'
+```
+
+Example response:
+
+```json
+{
+ "namespace_id": 123,
+ "expires_at": "2022-01-01",
+ "number_of_minutes": 10000,
+ "purchase_xid": "46952fe69bebc1a4de10b2b4ff439d0c"
+}
+```
+
+### Moving additional packs
+
+Use a PATCH to move additional packs from one namespace to another.
+
+```plaintext
+PATCH /namespaces/:id/minutes/move/:target_id
+```
+
+| Attribute | Type | Required | Description |
+|:------------|:--------|:---------|:------------|
+| `id` | string | yes | The ID of the namespace to transfer packs from |
+| `target_id` | string | yes | The ID of the target namespace to transfer the packs to |
+
+Example request:
+
+```shell
+curl --request PATCH \
+ --url http://localhost:3000/api/v4/namespaces/123/minutes/move/321 \
+ --header 'PRIVATE-TOKEN: <admin access token>'
+```
+
+Example response:
+
+```json
+{
+ "message": "202 Accepted"
+}
+```
+
+### Known consumers
+
+- CustomersDot
+
+## Upcoming reconciliations
+
+The `upcoming_reconciliations` endpoint is used by [CustomersDot](https://gitlab.com/gitlab-org/customers-gitlab-com) (`customers.gitlab.com`)
+to update upcoming reconciliations for namespaces.
+
+### Updating `upcoming_reconciliations`
+
+Use a PUT command to update `upcoming_reconciliations`.
+
+```plaintext
+PUT /internal/upcoming_reconciliations
+```
+
+| Attribute | Type | Required | Description |
+|:-------------------|:-----------|:---------|:------------|
+| `upcoming_reconciliations` | array | yes | Array of upcoming reconciliations |
+
+Each array element contains:
+
+| Attribute | Type | Required | Description |
+|:-------------------|:-----------|:---------|:------------|
+| `namespace_id` | integer | yes | ID of the namespace to be reconciled |
+| `next_reconciliation_date` | date | yes | Date when next reconciliation will happen |
+| `display_alert_from` | date | yes | Start date to display alert of upcoming reconciliation |
+
+Example request:
+
+```shell
+curl --request PUT --header "PRIVATE-TOKEN: <admin_access_token>" --header "Content-Type: application/json" \
+ --data '{"upcoming_reconciliations": [{"namespace_id": 127, "next_reconciliation_date": "13 Jun 2021", "display_alert_from": "06 Jun 2021"}, {"namespace_id": 129, "next_reconciliation_date": "12 Jun 2021", "display_alert_from": "05 Jun 2021"}]}' \
+ "https://gitlab.com/api/v4/internal/upcoming_reconciliations"
+```
+
+Example response:
+
+```plaintext
+200
+```
+
+### Known consumers
+
+- CustomersDot
diff --git a/doc/development/iterating_tables_in_batches.md b/doc/development/iterating_tables_in_batches.md
index bae55bccf7c..3f2b467fec9 100644
--- a/doc/development/iterating_tables_in_batches.md
+++ b/doc/development/iterating_tables_in_batches.md
@@ -4,7 +4,7 @@ group: Database
info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://about.gitlab.com/handbook/engineering/ux/technical-writing/#assignments
---
-# Iterating Tables In Batches
+# Iterating tables in batches
Rails provides a method called `in_batches` that can be used to iterate over
rows in batches. For example:
@@ -15,7 +15,7 @@ User.in_batches(of: 10) do |relation|
end
```
-Unfortunately this method is implemented in a way that is not very efficient,
+Unfortunately, this method is implemented in a way that is not very efficient,
both query and memory usage wise.
To work around this you can include the `EachBatch` module into your models,
@@ -44,17 +44,18 @@ all of the arguments that `in_batches` supports. You should always use
## Avoid iterating over non-unique columns
-One should proceed with extra caution, and possibly avoid iterating over a column that can contain duplicate values.
-When you iterate over an attribute that is not unique, even with the applied max batch size, there is no guarantee that the resulting batches will not surpass it.
-The following snippet demonstrates this situation, when one attempt to select `Ci::Build` entries for users with `id` between `1` and `10,s000`, database returns `1 215 178`
-matching rows
+One should proceed with extra caution, and possibly avoid iterating over a column that can contain
+duplicate values. When you iterate over an attribute that is not unique, even with the applied max
+batch size, there is no guarantee that the resulting batches will not surpass it. The following
+snippet demonstrates this situation when one attempt to select `Ci::Build` entries for users with
+`id` between `1` and `10,000`, the database returns `1 215 178` matching rows.
```ruby
[ gstg ] production> Ci::Build.where(user_id: (1..10_000)).size
=> 1215178
```
-This happens because built relation is translated into following query
+This happens because built relation is translated into the following query
```ruby
[ gstg ] production> puts Ci::Build.where(user_id: (1..10_000)).to_sql
@@ -62,12 +63,16 @@ SELECT "ci_builds".* FROM "ci_builds" WHERE "ci_builds"."type" = 'Ci::Build' AND
=> nil
```
-And queries which filters non-unique column by range `WHERE "ci_builds"."user_id" BETWEEN ? AND ?`, even though the range size is limited to certain threshold (`10,000` in previous example) this threshold does not translates to the size of returned dataset. That happens because when taking `n` possible values of attributes,
-one can't tell for sure that the number of records that contains them will be less than `n`.
+`And` queries which filter non-unique column by range `WHERE "ci_builds"."user_id" BETWEEN ? AND ?`,
+even though the range size is limited to a certain threshold (`10,000` in the previous example) this
+threshold does not translate to the size of the returned dataset. That happens because when taking
+`n` possible values of attributes, one can't tell for sure that the number of records that contains
+them will be less than `n`.
## Column definition
-`EachBatch` uses the primary key of the model by default for the iteration. This works most of the cases, however in some cases, you might want to use a different column for the iteration.
+`EachBatch` uses the primary key of the model by default for the iteration. This works most of the
+cases, however in some cases, you might want to use a different column for the iteration.
```ruby
Project.distinct.each_batch(column: :creator_id, of: 10) do |relation|
@@ -78,27 +83,38 @@ end
The query above iterates over the project creators and prints them out without duplications.
NOTE:
-In case the column is not unique (no unique index definition), calling the `distinct` method on the relation is necessary. Using not unique column without `distinct` may result in `each_batch` falling into endless loop as described at following [issue](https://gitlab.com/gitlab-org/gitlab/-/issues/285097)
+In case the column is not unique (no unique index definition), calling the `distinct` method on
+the relation is necessary. Using not unique column without `distinct` may result in `each_batch`
+falling into an endless loop as described in following
+[issue](https://gitlab.com/gitlab-org/gitlab/-/issues/285097).
## `EachBatch` in data migrations
-When dealing with data migrations the preferred way to iterate over large volume of data is using `EachBatch`.
+When dealing with data migrations the preferred way to iterate over a large volume of data is using
+`EachBatch`.
A special case of data migration is a [background migration](background_migrations.md#scheduling)
-where the actual data modification is executed in a background job. The migration code that determines
-the data ranges (slices) and schedules the background jobs uses `each_batch`.
+where the actual data modification is executed in a background job. The migration code that
+determines the data ranges (slices) and schedules the background jobs uses `each_batch`.
## Efficient usage of `each_batch`
-`EachBatch` helps iterating over large tables. It's important to highlight that `EachBatch` is not going to magically solve all iteration related performance problems and it might not help at all in some scenarios. From the database point of view, correctly configured database indexes are also necessary to make `EachBatch` perform well.
+`EachBatch` helps to iterate over large tables. It's important to highlight that `EachBatch` is
+not going to magically solve all iteration related performance problems and it might not help at
+all in some scenarios. From the database point of view, correctly configured database indexes are
+also necessary to make `EachBatch` perform well.
### Example 1: Simple iteration
-Let's consider that we want to iterate over the `users` table and print the `User` records to the standard output. The `users` table contains millions of records, thus running one query to fetch the users will likely time out.
+Let's consider that we want to iterate over the `users` table and print the `User` records to the
+standard output. The `users` table contains millions of records, thus running one query to fetch
+the users will likely time out.
![Users table overview](img/each_batch_users_table_v13_7.png)
-This is a simplified version of the `users` table which contains several rows. We have a few smaller gaps in the `id` column to make the example a bit more realistic (a few records were already deleted). Currently we have one index on the `id` field.
+This is a simplified version of the `users` table which contains several rows. We have a few
+smaller gaps in the `id` column to make the example a bit more realistic (a few records were
+already deleted). Currently, we have one index on the `id` field.
Loading all users into memory (avoid):
@@ -117,9 +133,10 @@ User.each_batch(of: 5) do |relation|
end
```
-#### How does `each_batch` work?
+#### How `each_batch` works
-As the first step, it finds the lowest `id` (start `id`) in the table by executing the following database query:
+As the first step, it finds the lowest `id` (start `id`) in the table by executing the following
+database query:
```sql
SELECT "users"."id" FROM "users" ORDER BY "users"."id" ASC LIMIT 1
@@ -127,9 +144,12 @@ SELECT "users"."id" FROM "users" ORDER BY "users"."id" ASC LIMIT 1
![Reading the start id value](img/each_batch_users_table_iteration_1_v13_7.png)
-Notice that the query only reads data from the index (`INDEX ONLY SCAN`), the table is not accessed. Database indexes are sorted so taking out the first item is a very cheap operation.
+Notice that the query only reads data from the index (`INDEX ONLY SCAN`), the table is not
+accessed. Database indexes are sorted so taking out the first item is a very cheap operation.
-The next step is to find the next `id` (end `id`) which should respect the batch size configuration. In this example we used batch size of 5. `EachBatch` uses the `OFFSET` clause to get a "shifted" `id` value.
+The next step is to find the next `id` (end `id`) which should respect the batch size
+configuration. In this example we used a batch size of 5. `EachBatch` uses the `OFFSET` clause
+to get a "shifted" `id` value.
```sql
SELECT "users"."id" FROM "users" WHERE "users"."id" >= 1 ORDER BY "users"."id" ASC LIMIT 1 OFFSET 5
@@ -137,19 +157,25 @@ SELECT "users"."id" FROM "users" WHERE "users"."id" >= 1 ORDER BY "users"."id" A
![Reading the end id value](img/each_batch_users_table_iteration_2_v13_7.png)
-Again, the query only looks into the index. The `OFFSET 5` takes out the sixth `id` value: this query reads a maximum of six items from the index regardless of the table size or the iteration count.
+Again, the query only looks into the index. The `OFFSET 5` takes out the sixth `id` value: this
+query reads a maximum of six items from the index regardless of the table size or the iteration
+count.
-At this point we know the `id` range for the first batch. Now it's time to construct the query for the `relation` block.
+At this point, we know the `id` range for the first batch. Now it's time to construct the query
+for the `relation` block.
```sql
SELECT "users".* FROM "users" WHERE "users"."id" >= 1 AND "users"."id" < 302
```
-![Reading the rows from the users table](img/each_batch_users_table_iteration_3_v13_7.png)
+![Reading the rows from the `users` table](img/each_batch_users_table_iteration_3_v13_7.png)
-Notice the `<` sign. Previously six items were read from the index and in this query the last value is "excluded". The query will look at the index to get the location of the five `user` rows on the disk and read the rows from the table. The returned array is processed in Ruby.
+Notice the `<` sign. Previously six items were read from the index and in this query, the last
+value is "excluded". The query will look at the index to get the location of the five `user`
+rows on the disk and read the rows from the table. The returned array is processed in Ruby.
-The first iteration is done. For the next iteration, the last `id` value is reused from the previous iteration in order to find out the next end `id` value.
+The first iteration is done. For the next iteration, the last `id` value is reused from the
+previous iteration in order to find out the next end `id` value.
```sql
SELECT "users"."id" FROM "users" WHERE "users"."id" >= 302 ORDER BY "users"."id" ASC LIMIT 1 OFFSET 5
@@ -167,7 +193,8 @@ SELECT "users".* FROM "users" WHERE "users"."id" >= 302 AND "users"."id" < 353
### Example 2: Iteration with filters
-Building on top of the previous example, we want to print users with zero sign-in count. We keep track of the number of sign-ins in the `sign_in_count` column so we write the following code:
+Building on top of the previous example, we want to print users with zero sign-in count. We keep
+track of the number of sign-ins in the `sign_in_count` column so we write the following code:
```ruby
users = User.where(sign_in_count: 0)
@@ -183,7 +210,10 @@ end
SELECT "users"."id" FROM "users" WHERE "users"."sign_in_count" = 0 ORDER BY "users"."id" ASC LIMIT 1
```
-Selecting only the `id` column and ordering by `id` is going to "force" the database to use the index on the `id` (primary key index) column, however we also have an extra condition on the `sign_in_count` column. The column is not part of the index, so the database needs to look into the actual table to find the first matching row.
+Selecting only the `id` column and ordering by `id` is going to "force" the database to use the
+index on the `id` (primary key index) column however, we also have an extra condition on the
+`sign_in_count` column. The column is not part of the index, so the database needs to look into
+the actual table to find the first matching row.
![Reading the index with extra filter](img/each_batch_users_table_filter_v13_7.png)
@@ -193,7 +223,11 @@ The number of scanned rows depends on the data distribution in the table.
- Best case scenario: the first user was never logged in. The database reads only one row.
- Worst case scenario: all users were logged in at least once. The database reads all rows.
-In this particular example the database had to read 10 rows (regardless of our batch size setting) to determine the first `id` value. In a "real-world" application it's hard to predict whether the filtering is going to cause problems or not. In case of GitLab, verifying the data on a production replica is a good start, but keep in mind that data distribution on GitLab.com can be different from self-managed instances.
+In this particular example, the database had to read 10 rows (regardless of our batch size setting)
+to determine the first `id` value. In a "real-world" application it's hard to predict whether the
+filtering is going to cause problems or not. In the case of GitLab, verifying the data on a
+production replica is a good start, but keep in mind that data distribution on GitLab.com can be
+different from self-managed instances.
#### Improve filtering with `each_batch`
@@ -207,21 +241,26 @@ This is how our table and the newly created index looks like:
![Reading the specialized index](img/each_batch_users_table_filtered_index_v13_7.png)
-This index definition covers the conditions on the `id` and `sign_in_count` columns thus makes the `each_batch` queries very effective (similar to the simple iteration example).
+This index definition covers the conditions on the `id` and `sign_in_count` columns thus makes the
+`each_batch` queries very effective (similar to the simple iteration example).
-It's rare when a user was never signed in so we anticipate small index size. Including only the `id` in the index definition also helps keeping the index size small.
+It's rare when a user was never signed in so we a anticipate small index size. Including only the
+`id` in the index definition also helps to keep the index size small.
##### Index on columns
-Later on we might want to iterate over the table filtering for different `sign_in_count` values, in those cases we cannot use the previously suggested conditional index because the `WHERE` condition does not match with our new filter (`sign_in_count > 10`).
+Later on, we might want to iterate over the table filtering for different `sign_in_count` values, in
+those cases we cannot use the previously suggested conditional index because the `WHERE` condition
+does not match with our new filter (`sign_in_count > 10`).
To address this problem, we have two options:
- Create another, conditional index to cover the new query.
-- Replace the index with more generalized configuration.
+- Replace the index with a more generalized configuration.
NOTE:
-Having multiple indexes on the same table and on the same columns could be a performance bottleneck when writing data.
+Having multiple indexes on the same table and on the same columns could be a performance bottleneck
+when writing data.
Let's consider the following index (avoid):
@@ -229,15 +268,18 @@ Let's consider the following index (avoid):
CREATE INDEX index_on_users_never_logged_in ON users (id, sign_in_count)
```
-The index definition starts with the `id` column which makes the index very inefficient from data selectivity point of view.
+The index definition starts with the `id` column which makes the index very inefficient from data
+selectivity point of view.
```sql
SELECT "users"."id" FROM "users" WHERE "users"."sign_in_count" = 0 ORDER BY "users"."id" ASC LIMIT 1
```
-Executing the query above results in an `INDEX ONLY SCAN`. However, the query still needs to iterate over unknown number of entries in the index, and then find the first item where the `sign_in_count` is `0`.
+Executing the query above results in an `INDEX ONLY SCAN`. However, the query still needs to
+iterate over an unknown number of entries in the index, and then find the first item where the
+`sign_in_count` is `0`.
-![Reading the an ineffective index](img/each_batch_users_table_bad_index_v13_7.png)
+![Reading an ineffective index](img/each_batch_users_table_bad_index_v13_7.png)
We can improve the query significantly by swapping the columns in the index definition (prefer).
@@ -253,11 +295,14 @@ The following index definition is not going to work well with `each_batch` (avoi
CREATE INDEX index_on_users_never_logged_in ON users (sign_in_count)
```
-Since `each_batch` builds range queries based on the `id` column, this index cannot be used efficiently. The DB reads the rows from the table or uses a bitmap search where the primary key index is also read.
+Since `each_batch` builds range queries based on the `id` column, this index cannot be used
+efficiently. The DB reads the rows from the table or uses a bitmap search where the primary
+key index is also read.
##### "Slow" iteration
-Slow iteration means that we use a good index configuration to iterate over the table and apply filtering on the yielded relation.
+Slow iteration means that we use a good index configuration to iterate over the table and
+apply filtering on the yielded relation.
```ruby
User.each_batch(of: 5) do |relation|
@@ -266,7 +311,8 @@ end
```
The iteration uses the primary key index (on the `id` column) which makes it safe from statement
-timeouts. The filter (`sign_in_count: 0`) is applied on the `relation` where the `id` is already constrained (range). The number of rows are limited.
+timeouts. The filter (`sign_in_count: 0`) is applied on the `relation` where the `id` is already
+constrained (range). The number of rows is limited.
Slow iteration generally takes more time to finish. The iteration count is higher and
one iteration could yield fewer records than the batch size. Iterations may even yield
@@ -285,18 +331,19 @@ projects.each_batch do |relation|
end
```
-The iteration uses the `id` column of the `projects` table. The batching does not affect the subquery.
-This means for each iteration, the subquery is executed by the database. This adds a constant "load"
-on the query which often ends up in statement timeouts. We have an unknown number of confidential
-issues, the execution time and the accessed database rows depends on the data distribution in the
-`issues` table.
+The iteration uses the `id` column of the `projects` table. The batching does not affect the
+subquery. This means for each iteration, the subquery is executed by the database. This adds a
+constant "load" on the query which often ends up in statement timeouts. We have an unknown number
+of confidential issues, the execution time and the accessed database rows depend on the data
+distribution in the `issues` table.
NOTE:
Using subqueries works only when the subquery returns a small number of rows.
#### Improving Subqueries
-When dealing with subqueries, a slow iteration approach could work: the filter on `creator_id` can be part of the generated `relation` object.
+When dealing with subqueries, a slow iteration approach could work: the filter on `creator_id`
+can be part of the generated `relation` object.
```ruby
projects = Project.all
@@ -306,7 +353,8 @@ projects.each_batch do |relation|
end
```
-If the query on the `issues` table itself is not performant enough, a nested loop could be constructed. Try to avoid it when possible.
+If the query on the `issues` table itself is not performant enough, a nested loop could be
+constructed. Try to avoid it when possible.
```ruby
projects = Project.all
@@ -320,7 +368,8 @@ projects.each_batch do |relation|
end
```
-If we know that the `issues` table has many more rows than `projects`, it would make sense to flip the queries, where the `issues` table is batched first.
+If we know that the `issues` table has many more rows than `projects`, it would make sense to flip
+the queries, where the `issues` table is batched first.
### Using `JOIN` and `EXISTS`
@@ -331,7 +380,8 @@ When to use `JOINS`:
- `projects` - `project_settings`
- `users` - `user_details`
- `users` - `user_statuses`
-- `LEFT JOIN` works well in this case. Conditions on the joined table need to go to the yielded relation so the iteration is not affected by the data distribution in the joined table.
+- `LEFT JOIN` works well in this case. Conditions on the joined table need to go to the yielded
+relation so the iteration is not affected by the data distribution in the joined table.
Example:
@@ -353,7 +403,8 @@ end
### Complex queries on the relation object
-When the `relation` object has several extra conditions, the execution plans might become "unstable".
+When the `relation` object has several extra conditions, the execution plans might become
+"unstable".
Example:
@@ -370,10 +421,11 @@ end
Here, we expect that the `relation` query reads the `BATCH_SIZE` of user records and then
filters down the results according to the provided queries. The planner might decide that
using a bitmap index lookup with the index on the `confidential` column is a better way to
-execute the query. This can cause unexpectedly high amount of rows to be read and the query
-could time out.
+execute the query. This can cause an unexpectedly high amount of rows to be read and the
+query could time out.
-Problem: we know for sure that the relation is returning maximum `BATCH_SIZE` of records, however the planner does not know this.
+Problem: we know for sure that the relation is returning maximum `BATCH_SIZE` of records
+however, the planner does not know this.
Common table expression (CTE) trick to force the range query to execute first:
@@ -394,4 +446,132 @@ end
### `EachBatch` vs `BatchCount`
-When adding new counters for usage ping, the preferred way to count records is using the `Gitlab::Database::BatchCount` class. The iteration logic implemented in `BatchCount` has similar performance characteristics like `EachBatch`. Most of the tips and suggestions for improving `BatchCount` mentioned above applies to `BatchCount` as well.
+When adding new counters for Service Ping, the preferred way to count records is using the
+`Gitlab::Database::BatchCount` class. The iteration logic implemented in `BatchCount`
+has similar performance characteristics like `EachBatch`. Most of the tips and suggestions
+for improving `BatchCount` mentioned above applies to `BatchCount` as well.
+
+## Iterate with keyset pagination
+
+There are a few special cases where iterating with `EachBatch` does not work. `EachBatch`
+requires one distinct column (usually the primary key), which makes the iteration impossible
+for timestamp columns and tables with composite primary keys.
+
+Where `EachBatch` does not work, you can use
+[keyset pagination](database/pagination_guidelines.md#keyset-pagination) to iterate over the
+table or a range of rows. The scaling and performance characteristics are very similar to
+`EachBatch`.
+
+Examples:
+
+- Iterate over the table in a specific order (timestamp columns) in combination with a tie-breaker
+if column user to sort by does not contain unique values.
+- Iterate over the table with composite primary keys.
+
+### Iterate over the issues in a project by creation date
+
+You can use keyset pagination to iterate over any database column in a specific order (for example,
+`created_at DESC`). To ensure consistent order of the returned records with the same values for
+`created_at`, use a tie-breaker column with unique values (for example, `id`).
+
+Assume you have the following index in the `issues` table:
+
+```sql
+idx_issues_on_project_id_and_created_at_and_id" btree (project_id, created_at, id)
+```
+
+### Fetching records for further processing
+
+The following snippet iterates over issue records within the project using the specified order
+(`created_at, id`).
+
+```ruby
+scope = Issue.where(project_id: 278964).order(:created_at, :id) # id is the tie-breaker
+
+iterator = Gitlab::Pagination::Keyset::Iterator.new(scope: scope)
+
+iterator.each_batch(of: 100) do |records|
+ puts records.map(&:id)
+end
+```
+
+You can add extra filters to the query. This example only lists the issue IDs created in the last
+30 days:
+
+```ruby
+scope = Issue.where(project_id: 278964).where('created_at > ?', 30.days.ago).order(:created_at, :id) # id is the tie-breaker
+
+iterator = Gitlab::Pagination::Keyset::Iterator.new(scope: scope)
+
+iterator.each_batch(of: 100) do |records|
+ puts records.map(&:id)
+end
+```
+
+### Updating records in the batch
+
+For complex `ActiveRecord` queries, the `.update_all` method does not work well, because it
+generates an incorrect `UPDATE` statement.
+You can use raw SQL for updating records in batches:
+
+```ruby
+scope = Issue.where(project_id: 278964).order(:created_at, :id) # id is the tie-breaker
+
+iterator = Gitlab::Pagination::Keyset::Iterator.new(scope: scope)
+
+iterator.each_batch(of: 100) do |records|
+ ApplicationRecord.connection.execute("UPDATE issues SET updated_at=NOW() WHERE issues.id in (#{records.dup.reselect(:id).to_sql})")
+end
+```
+
+NOTE:
+To keep the iteration stable and predictable, avoid updating the columns in the `ORDER BY` clause.
+
+### Iterate over the `merge_request_diff_commits` table
+
+The `merge_request_diff_commits` table uses a composite primary key (`merge_request_diff_id,
+relative_order`), which makes `EachBatch` impossible to use efficiently.
+
+To paginate over the `merge_request_diff_commits` table, you can use the following snippet:
+
+```ruby
+# Custom order object configuration:
+order = Gitlab::Pagination::Keyset::Order.build([
+ Gitlab::Pagination::Keyset::ColumnOrderDefinition.new(
+ attribute_name: 'merge_request_diff_id',
+ order_expression: MergeRequestDiffCommit.arel_table[:merge_request_diff_id].asc,
+ nullable: :not_nullable,
+ distinct: false,
+ ),
+ Gitlab::Pagination::Keyset::ColumnOrderDefinition.new(
+ attribute_name: 'relative_order',
+ order_expression: MergeRequestDiffCommit.arel_table[:relative_order].asc,
+ nullable: :not_nullable,
+ distinct: false,
+ )
+])
+MergeRequestDiffCommit.include(FromUnion) # keyset pagination generates UNION queries
+
+scope = MergeRequestDiffCommit.order(order)
+
+iterator = Gitlab::Pagination::Keyset::Iterator.new(scope: scope)
+
+iterator.each_batch(of: 100) do |records|
+ puts records.map { |record| [record.merge_request_diff_id, record.relative_order] }.inspect
+end
+```
+
+### Order object configuration
+
+Keyset pagination works well with simple `ActiveRecord` `order` scopes
+([first example](iterating_tables_in_batches.md#iterate-over-the-issues-in-a-project-by-creation-date).
+However, in special cases, you need to describe the columns in the `ORDER BY` clause (second example)
+for the underlying keyset pagination library. When the `ORDER BY` configuration cannot be
+automatically determined by the keyset pagination library, an error is raised.
+
+The code comments of the
+[`Gitlab::Pagination::Keyset::Order`](https://gitlab.com/gitlab-org/gitlab/-/blob/master/lib/gitlab/pagination/keyset/order.rb)
+and [`Gitlab::Pagination::Keyset::ColumnOrderDefinition`](https://gitlab.com/gitlab-org/gitlab/-/blob/master/lib/gitlab/pagination/keyset/column_order_definition.rb)
+classes give an overview of the possible options for configuring the `ORDER BY` clause. You can
+also find a few code examples in the
+[keyset pagination](database/keyset_pagination.md#complex-order-configuration) documentation.
diff --git a/doc/development/jh_features_review.md b/doc/development/jh_features_review.md
index b139a380344..cb0f8ddbd13 100644
--- a/doc/development/jh_features_review.md
+++ b/doc/development/jh_features_review.md
@@ -29,11 +29,14 @@ See the [merge request process](https://about.gitlab.com/handbook/ceo/chief-of-s
on the JiHu Support handbook.
This page is the single source of truth for JiHu-related processes.
-## Act as EE when `jh/` does not exist
+## Act as EE when `jh/` does not exist or when `EE_ONLY=1`
- In the case of EE repository, `jh/` does not exist so it should just act like EE (or CE when the license is absent)
- In the case of JH repository, `jh/` does exist but `EE_ONLY` environment variable can be set to force it run under EE mode.
-- In the case of JH repository, `jh/` does exist but `FOSS_ONLY` environment variable can be set to force it run under CE mode.
+
+## Act as FOSS when `FOSS_ONLY=1`
+
+- In the case of JH repository, `jh/` does exist but `FOSS_ONLY` environment variable can be set to force it run under FOSS (CE) mode.
## CI pipelines in a JH context
diff --git a/doc/development/logging.md b/doc/development/logging.md
index 45f5b672365..cb1070b49cc 100644
--- a/doc/development/logging.md
+++ b/doc/development/logging.md
@@ -58,12 +58,12 @@ Structured logging solves these problems. Consider the example from an API reque
In a single line, we've included all the information that a user needs
to understand what happened: the timestamp, HTTP method and path, user
-ID, etc.
+ID, and so on.
### How to use JSON logging
Suppose you want to log the events that happen in a project
-importer. You want to log issues created, merge requests, etc. as the
+importer. You want to log issues created, merge requests, and so on, as the
importer progresses. Here's what to do:
1. Look at [the list of GitLab Logs](../administration/logs.md) to see
@@ -174,7 +174,7 @@ Resources:
Similar to timezones, choosing the right time unit to log can impose avoidable overhead. So, whenever
challenged to choose between seconds, milliseconds or any other unit, lean towards _seconds_ as float
-(with microseconds precision, i.e. `Gitlab::InstrumentationHelper::DURATION_PRECISION`).
+(with microseconds precision, that is, `Gitlab::InstrumentationHelper::DURATION_PRECISION`).
In order to make it easier to track timings in the logs, make sure the log key has `_s` as
suffix and `duration` within its name (for example, `view_duration_s`).
diff --git a/doc/development/merge_request_performance_guidelines.md b/doc/development/merge_request_performance_guidelines.md
index 973d4042cda..d87b7bcb5af 100644
--- a/doc/development/merge_request_performance_guidelines.md
+++ b/doc/development/merge_request_performance_guidelines.md
@@ -179,9 +179,9 @@ As a counterpart of the `without_sticky_writes` utility,
replicas regardless of the current primary stickiness.
This utility is reserved for cases where queries can tolerate replication lag.
-Internally, our database load balancer classifies the queries based on their main statement (`select`, `update`, `delete`, etc.). When in doubt, it redirects the queries to the primary database. Hence, there are some common cases the load balancer sends the queries to the primary unnecessarily:
+Internally, our database load balancer classifies the queries based on their main statement (`select`, `update`, `delete`, and so on). When in doubt, it redirects the queries to the primary database. Hence, there are some common cases the load balancer sends the queries to the primary unnecessarily:
-- Custom queries (via `exec_query`, `execute_statement`, `execute`, etc.)
+- Custom queries (via `exec_query`, `execute_statement`, `execute`, and so on)
- Read-only transactions
- In-flight connection configuration set
- Sidekiq background jobs
@@ -197,7 +197,18 @@ costly, time-consuming query to the replicas.
Read about [complex queries on the relation object](iterating_tables_in_batches.md#complex-queries-on-the-relation-object) for considerations on how to use CTEs. We have found in some situations that CTEs can become problematic in use (similar to the n+1 problem above). In particular, hierarchical recursive CTE queries such as the CTE in [AuthorizedProjectsWorker](https://gitlab.com/gitlab-org/gitlab/-/issues/325688) are very difficult to optimize and don't scale. We should avoid them when implementing new features that require any kind of hierarchical structure.
-However, in many simpler cases, such as this [example](https://gitlab.com/gitlab-org/gitlab-foss/-/issues/43242#note_61416277), CTEs can be quite effective as an optimization fence.
+CTEs have been effectively used as an optimization fence in many simpler cases,
+such as this [example](https://gitlab.com/gitlab-org/gitlab-foss/-/issues/43242#note_61416277).
+Beginning in PostgreSQL 12, CTEs are inlined then [optimized by default](https://paquier.xyz/postgresql-2/postgres-12-with-materialize/).
+Keeping the old behavior requires marking CTEs with the keyword `MATERIALIZED`.
+
+When building CTE statements, use the `Gitlab::SQL::CTE` class [introduced](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/56976) in GitLab 13.11.
+By default, this `Gitlab::SQL::CTE` class forces materialization through adding the `MATERIALIZED` keyword for PostgreSQL 12 and higher.
+`Gitlab::SQL::CTE` automatically omits materialization when PostgreSQL 11 is running
+(this behavior is implemented using a custom arel node `Gitlab::Database::AsWithMaterialized` under the surface).
+
+WARNING:
+We plan to drop the support for PostgreSQL 11. Upgrading to GitLab 14.0 requires PostgreSQL 12 or higher.
## Cached Queries
@@ -556,7 +567,7 @@ to work with you to possibly discover a better solution.
The usage of local storage is a desired solution to use,
especially since we work on deploying applications to Kubernetes clusters.
When you would like to use `Dir.mktmpdir`? In a case when you want for example
-to extract/create archives, perform extensive manipulation of existing data, etc.
+to extract/create archives, perform extensive manipulation of existing data, and so on.
```ruby
Dir.mktmpdir('designs') do |path|
diff --git a/doc/development/migration_style_guide.md b/doc/development/migration_style_guide.md
index 009ead8ba16..f76b053c2bd 100644
--- a/doc/development/migration_style_guide.md
+++ b/doc/development/migration_style_guide.md
@@ -19,8 +19,8 @@ Migrations are **not** allowed to require GitLab installations to be taken
offline ever. Migrations always must be written in such a way to avoid
downtime. In the past we had a process for defining migrations that allowed for
downtime by setting a `DOWNTIME` constant. You may see this when looking at
-older migrations. This process was in place for 4 years without every being
-used and as such we've learnt we can always figure out how to write a migration
+older migrations. This process was in place for 4 years without ever being
+used and as such we've learned we can always figure out how to write a migration
differently to avoid downtime.
When writing your migrations, also consider that databases might have stale data
@@ -35,10 +35,21 @@ For GitLab.com, please take into consideration that regular migrations (under `d
are run before [Canary is deployed](https://gitlab.com/gitlab-com/gl-infra/readiness/-/tree/master/library/canary/#configuration-and-deployment),
and [post-deployment migrations](post_deployment_migrations.md) (`db/post_migrate`) are run after the deployment to production has finished.
+## Create database migrations
+
+To create a migration you can use the following Rails generator:
+
+```shell
+bundle exec rails g migration migration_name_here
+```
+
+This generates the migration file in `db/migrate`.
+
## Schema Changes
Changes to the schema should be committed to `db/structure.sql`. This
-file is automatically generated by Rails, so you normally should not
+file is automatically generated by Rails when you run
+`bundle exec rails db:migrate`, so you normally should not
edit this file by hand. If your migration is adding a column to a
table, that column is added at the bottom. Please do not reorder
columns manually for existing tables as this causes confusion to
@@ -205,6 +216,30 @@ def down
end
```
+**Multiple changes on the same table:**
+
+The helper `with_lock_retries` wraps all operations into a single transaction. When you have the lock,
+you should do as much as possible inside the transaction rather than trying to get another lock later.
+Be careful about running long database statements within the block. The acquired locks are kept until the transaction (block) finishes and depending on the lock type, it might block other database operations.
+
+```ruby
+include Gitlab::Database::MigrationHelpers
+
+def up
+ with_lock_retries do
+ add_column :users, :full_name, :string
+ add_column :users, :bio, :string
+ end
+end
+
+def down
+ with_lock_retries do
+ remove_column :users, :full_name
+ remove_column :users, :bio
+ end
+end
+```
+
**Removing a foreign key:**
```ruby
@@ -264,6 +299,8 @@ end
**Creating a new table when we have two foreign keys:**
+Only one foreign key should be created per migration. This is because [the addition of a foreign key constraint requires a `SHARE ROW EXCLUSIVE` lock on the referenced table](https://www.postgresql.org/docs/12/sql-createtable.html#:~:text=The%20addition%20of%20a%20foreign%20key%20constraint%20requires%20a%20SHARE%20ROW%20EXCLUSIVE%20lock%20on%20the%20referenced%20table), and locking multiple tables in the same transaction should be avoided.
+
For this, we need three migrations:
1. Creating the table without foreign keys (with the indices).
@@ -570,7 +607,7 @@ perform existence checks internally.
When adding a foreign-key constraint to either an existing or a new column also
remember to add an index on the column.
-This is **required** for all foreign-keys, e.g., to support efficient cascading
+This is **required** for all foreign-keys, for example, to support efficient cascading
deleting: when a lot of rows in a table get deleted, the referenced records need
to be deleted too. The database has to look for corresponding records in the
referenced table. Without an index, this results in a sequential scan on the
@@ -943,6 +980,41 @@ derived from the class name or namespace.
Be aware of the limitations [when using models in migrations](#using-models-in-migrations-discouraged).
+### Modifying existing data
+
+In most circumstances, prefer migrating data in **batches** when modifying data in the database.
+
+We introduced a new helper [each_batch_range](https://gitlab.com/gitlab-org/gitlab/-/blob/cd3e0a5cddcb464cb9b8c6e3275839cf57dfa6e2/lib/gitlab/database/dynamic_model_helpers.rb#L28-32) which facilitates the process of iterating over a collection in a performant way. The default size of the batch is defined in the `BATCH_SIZE` constant.
+
+See the following example to get an idea.
+
+**Purging data in batch:**
+
+```ruby
+include ::Gitlab::Database::DynamicModelHelpers
+
+disable_ddl_transaction!
+
+def up
+ each_batch_range('ci_pending_builds', scope: ->(table) { table.ref_protected }, of: BATCH_SIZE) do |min, max|
+ execute <<~SQL
+ DELETE FROM ci_pending_builds
+ USING ci_builds
+ WHERE ci_builds.id = ci_pending_builds.build_id
+ AND ci_builds.status != 'pending'
+ AND ci_builds.type = 'Ci::Build'
+ AND ci_pending_builds.id BETWEEN #{min} AND #{max}
+ SQL
+ end
+end
+```
+
+- The first argument is the table being modified: `'ci_pending_builds'`.
+- The second argument calls a lambda which fetches the relevant dataset selected (the default is set to `.all`): `scope: ->(table) { table.ref_protected }`.
+- The third argument is the batch size (the default is set in the `BATCH_SIZE` constant): `of: BATCH_SIZE`.
+
+Here is an [example MR](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/62195) illustrating how to use our new helper.
+
### Renaming reserved paths
When a new route for projects is introduced, it could conflict with any
diff --git a/doc/development/module_with_instance_variables.md b/doc/development/module_with_instance_variables.md
index f298b603429..0f910f20534 100644
--- a/doc/development/module_with_instance_variables.md
+++ b/doc/development/module_with_instance_variables.md
@@ -49,9 +49,9 @@ instance variables in the final giant object, and that's where the problem is.
## Solutions
We should split the giant object into multiple objects, and they communicate
-with each other with the API, i.e. public methods. In short, composition over
+with each other with the API, that is, public methods. In short, composition over
inheritance. This way, each smaller objects would have their own respective
-limited states, i.e. instance variables. If one instance variable goes wrong,
+limited states, that is, instance variables. If one instance variable goes wrong,
we would be very clear that it's from that single small object, because
no one else could be touching it.
diff --git a/doc/development/multi_version_compatibility.md b/doc/development/multi_version_compatibility.md
index acdf8194cb1..3314b5e7ddc 100644
--- a/doc/development/multi_version_compatibility.md
+++ b/doc/development/multi_version_compatibility.md
@@ -43,6 +43,10 @@ Is it ok if all GitLab nodes have been updated, but the post-deployment migratio
Is it ok if all nodes have been updated, and then the post-deployment migrations get executed a couple days later, and then the background migrations take a week to finish?
+### When upgrading a dependency like Rails
+
+Is it ok that some nodes have the new Rails version, but some nodes have the old Rails version?
+
## A walkthrough of an update
Backwards compatibility problems during updates are often very subtle. This is why it is worth familiarizing yourself with [update instructions](../update/index.md), [reference architectures](../administration/reference_architectures/index.md), and [GitLab.com's architecture](https://about.gitlab.com/handbook/engineering/infrastructure/production/architecture/). But to illustrate how these problems arise, take a look at this example of a simple update.
@@ -102,14 +106,33 @@ Yes! We have specific instructions for [zero-downtime updates](../update/index.m
## I've identified a potential backwards compatibility problem, what can I do about it?
+### Coordinate
+
+For major or minor version updates of Rails or Puma:
+
+- Engage the Quality team to thoroughly test the MR.
+- Notify the `@gitlab-org/release/managers` on the MR prior to merging.
+
### Feature flags
-One way to handle this is to use a feature flag that is disabled by
-default. The feature flag can be enabled when the deployment is in a
-consistent state. However, this method of synchronization **does not
-guarantee** that customers with on-premise instances can [update with
-zero downtime](https://docs.gitlab.com/omnibus/update/#zero-downtime-updates)
-because point releases bundle many changes together.
+[Feature flags](feature_flags/index.md) are a tool, not a strategy, for handling backward compatibility problems.
+
+For example, it is safe to add a new feature with frontend and API changes, if both
+frontend and API changes are disabled by default. This can be done with multiple
+merge requests, merged in any order. After all the changes are deployed to
+GitLab.com, the feature can be enabled in ChatOps and validated on GitLab.com.
+
+**However, it is not necessarily safe to enable the feature by default.** If the
+feature flag is removed, or the default is flipped to enabled, in the same release
+where the code was merged, then customers performing [zero-downtime updates](https://docs.gitlab.com/omnibus/update/#zero-downtime-updates)
+will end up running the new frontend code against the previous release's API.
+
+If you're not sure whether it's safe to enable all the changes at once, then one
+option is to enable the API in the **current** release and enable the frontend
+change in the **next** release. This is an example of the [Expand and contract pattern](#expand-and-contract-pattern).
+
+Or you may be able to avoid delaying by a release by modifying the frontend to
+[degrade gracefully](#graceful-degradation) against the previous release's API.
### Graceful degradation
@@ -281,7 +304,7 @@ variable `CI_NODE_TOTAL` being an integer failed. This was caused because after
1. As a result, the [new code](https://gitlab.com/gitlab-org/gitlab/-/blob/42b82a9a3ac5a96f9152aad6cbc583c42b9fb082/app/models/concerns/ci/contextable.rb#L104)
was not run on the API server. The runner's request failed because the
older API server tried return the `CI_NODE_TOTAL` CI/CD variable, but
-instead of sending an integer value (e.g. 9), it sent a serialized
+instead of sending an integer value (for example, 9), it sent a serialized
`Hash` value (`{:number=>9, :total=>9}`).
If you look at the [deployment pipeline](https://ops.gitlab.net/gitlab-com/gl-infra/deployer/-/pipelines/202212),
diff --git a/doc/development/new_fe_guide/dependencies.md b/doc/development/new_fe_guide/dependencies.md
deleted file mode 100644
index c8bc1b70aa9..00000000000
--- a/doc/development/new_fe_guide/dependencies.md
+++ /dev/null
@@ -1,9 +0,0 @@
----
-redirect_to: '../fe_guide/dependencies.md'
-remove_date: '2021-05-14'
----
-
-This document was moved to [another location](../fe_guide/dependencies.md).
-
-<!-- This redirect file can be deleted after <2021-05-14>. -->
-<!-- Before deletion, see: https://docs.gitlab.com/ee/development/documentation/#move-or-rename-a-page -->
diff --git a/doc/development/omnibus.md b/doc/development/omnibus.md
index 5b97221bd29..dc83b0ea257 100644
--- a/doc/development/omnibus.md
+++ b/doc/development/omnibus.md
@@ -12,7 +12,7 @@ when you are coding.
## Files are owned by root by default
-All the files in the Rails tree (`app/`, `config/` etc.) are owned by `root` in
+All the files in the Rails tree (`app/`, `config/`, and so on) are owned by `root` in
Omnibus installations. This makes the installation simpler and it provides
extra security. The Omnibus reconfigure script contains commands that give
write access to the `git` user only where needed.
diff --git a/doc/development/packages.md b/doc/development/packages.md
index 294cc528ad1..94882cefc30 100644
--- a/doc/development/packages.md
+++ b/doc/development/packages.md
@@ -133,7 +133,7 @@ During this phase, the idea is to collect as much information as possible about
- **Authentication**: What authentication mechanisms are available (OAuth, Basic
Authorization, other). Keep in mind that GitLab users often want to use their
[Personal Access Tokens](../user/profile/personal_access_tokens.md).
- Although not needed for the MVC first iteration, the [CI/CD job tokens](../api/README.md#gitlab-cicd-job-token)
+ Although not needed for the MVC first iteration, the [CI/CD job tokens](../api/index.md#gitlab-cicd-job-token)
have to be supported at some point in the future.
- **Requests**: Which requests are needed to have a working MVC. Ideally, produce
a list of all the requests needed for the MVC (including required actions). Further
@@ -191,7 +191,7 @@ against the project or group before continuing.
The current database model allows you to store a name and a version for each package.
Every time you upload a new package, you can either create a new record of `Package`
or add files to existing record. `PackageFile` should be able to store all file-related
-information like the file `name`, `side`, `sha1`, etc.
+information like the file `name`, `side`, `sha1`, and so on.
If there is specific data necessary to be stored for only one package system support,
consider creating a separate metadata model. See `packages_maven_metadata` table
diff --git a/doc/development/performance.md b/doc/development/performance.md
index 84b3a8f1092..e59f7fb154b 100644
--- a/doc/development/performance.md
+++ b/doc/development/performance.md
@@ -120,7 +120,7 @@ allowing you to profile which code is running on CPU in detail.
It's important to note that profiling an application *alters its performance*.
Different profiling strategies have different overheads. Stackprof is a sampling
profiler. It samples stack traces from running threads at a configurable
-frequency (e.g. 100hz, that is 100 stacks per second). This type of profiling
+frequency (for example, 100hz, that is 100 stacks per second). This type of profiling
has quite a low (albeit non-zero) overhead and is generally considered to be
safe for production.
diff --git a/doc/development/permissions.md b/doc/development/permissions.md
index 8c3600a30ba..177fedcf454 100644
--- a/doc/development/permissions.md
+++ b/doc/development/permissions.md
@@ -57,9 +57,12 @@ can be accessed only by project members by default.
### Members
Users can be members of multiple groups and projects. The following access
-levels are available (defined in the `Gitlab::Access` module):
+levels are available (defined in the
+[`Gitlab::Access`](https://gitlab.com/gitlab-org/gitlab/-/blob/master/lib/gitlab/access.rb)
+module):
- No access (`0`)
+- [Minimal access](../user/permissions.md#users-with-minimal-access) (`5`)
- Guest (`10`)
- Reporter (`20`)
- Developer (`30`)
diff --git a/doc/development/pipelines.md b/doc/development/pipelines.md
index 0dc1481f542..0fe48fe8b9e 100644
--- a/doc/development/pipelines.md
+++ b/doc/development/pipelines.md
@@ -14,12 +14,12 @@ which itself includes files under
for easier maintenance.
We're striving to [dogfood](https://about.gitlab.com/handbook/engineering/#dogfooding)
-GitLab [CI/CD features and best-practices](../ci/yaml/README.md)
+GitLab [CI/CD features and best-practices](../ci/yaml/index.md)
as much as possible.
## Overview
-Pipelines for the GitLab project are created using the [`workflow:rules` keyword](../ci/yaml/README.md#workflow)
+Pipelines for the GitLab project are created using the [`workflow:rules` keyword](../ci/yaml/index.md#workflow)
feature of the GitLab CI/CD.
Pipelines are always created for the following scenarios:
@@ -49,9 +49,9 @@ depending on the changes made in the MR:
- [Frontend-only MR pipeline](#frontend-only-mr-pipeline): This is typically created for an MR that only changes frontend code.
- [QA-only MR pipeline](#qa-only-mr-pipeline): This is typically created for an MR that only changes end to end tests related code.
-We use the [`rules:`](../ci/yaml/README.md#rules) and [`needs:`](../ci/yaml/README.md#needs) keywords extensively
+We use the [`rules:`](../ci/yaml/index.md#rules) and [`needs:`](../ci/yaml/index.md#needs) keywords extensively
to determine the jobs that need to be run in a pipeline. Note that an MR that includes multiple types of changes would
-have a pipelines that include jobs from multiple types (e.g. a combination of docs-only and code-only pipelines).
+have a pipelines that include jobs from multiple types (for example, a combination of docs-only and code-only pipelines).
#### Documentation only MR pipeline
@@ -82,17 +82,17 @@ graph RL;
subgraph "No needed jobs";
1-1["danger-review (2.3 minutes)"];
click 1-1 "https://app.periscopedata.com/app/gitlab/652085/Engineering-Productivity---Pipeline-Build-Durations?widget=8100542&udv=0"
- 1-2["build-qa-image (1.6 minutes)"];
+ 1-2["build-qa-image (2 minutes)"];
click 1-2 "https://app.periscopedata.com/app/gitlab/652085/Engineering-Productivity---Pipeline-Build-Durations?widget=6914325&udv=0"
- 1-3["compile-test-assets (7 minutes)"];
+ 1-3["compile-test-assets (6 minutes)"];
click 1-3 "https://app.periscopedata.com/app/gitlab/652085/Engineering-Productivity---Pipeline-Build-Durations?widget=6914317&udv=0"
1-4["compile-test-assets as-if-foss (7 minutes)"];
click 1-4 "https://app.periscopedata.com/app/gitlab/652085/Engineering-Productivity---Pipeline-Build-Durations?widget=8356616&udv=0"
- 1-5["compile-production-assets (19 minutes)"];
+ 1-5["compile-production-assets (14 minutes)"];
click 1-5 "https://app.periscopedata.com/app/gitlab/652085/Engineering-Productivity---Pipeline-Build-Durations?widget=6914312&udv=0"
- 1-6["setup-test-env (9 minutes)"];
+ 1-6["setup-test-env (4 minutes)"];
click 1-6 "https://app.periscopedata.com/app/gitlab/652085/Engineering-Productivity---Pipeline-Build-Durations?widget=6914315&udv=0"
- 1-7["review-stop-failed-deployment"];
+ 1-7["review-delete-deployment"];
1-8["dependency_scanning"];
1-9["qa:internal, qa:internal-as-if-foss"];
1-11["qa:selectors, qa:selectors-as-if-foss"];
@@ -111,24 +111,24 @@ graph RL;
class 1-6 criticalPath;
end
- 2_1-1["graphql-verify (4 minutes)"];
+ 2_1-1["graphql-verify (2.3 minutes)"];
click 2_1-1 "https://app.periscopedata.com/app/gitlab/652085/Engineering-Productivity---Pipeline-Build-Durations?widget=8356715&udv=0"
2_1-2["memory-static (4.75 minutes)"];
click 2_1-2 "https://app.periscopedata.com/app/gitlab/652085/Engineering-Productivity---Pipeline-Build-Durations?widget=8356721&udv=0"
- 2_1-3["run-dev-fixtures (6 minutes)"];
+ 2_1-3["run-dev-fixtures (3 minutes)"];
click 2_1-3 "https://app.periscopedata.com/app/gitlab/652085/Engineering-Productivity---Pipeline-Build-Durations?widget=8356729&udv=0"
- 2_1-4["run-dev-fixtures-ee (6.75 minutes)"];
+ 2_1-4["run-dev-fixtures-ee (4 minutes)"];
click 2_1-4 "https://app.periscopedata.com/app/gitlab/652085/Engineering-Productivity---Pipeline-Build-Durations?widget=8356731&udv=0"
subgraph "Needs `setup-test-env`";
2_1-1 & 2_1-2 & 2_1-3 & 2_1-4 --> 1-6;
end
- 2_2-2["rspec frontend_fixture/rspec-ee frontend_fixture (12 minutes)"];
+ 2_2-2["rspec frontend_fixture/rspec-ee frontend_fixture (11 minutes)"];
class 2_2-2 criticalPath;
click 2_2-2 "https://app.periscopedata.com/app/gitlab/652085/Engineering-Productivity---Pipeline-Build-Durations?widget=7910143&udv=0"
- 2_2-4["memory-on-boot (6 minutes)"];
+ 2_2-4["memory-on-boot (3.5 minutes)"];
click 2_2-4 "https://app.periscopedata.com/app/gitlab/652085/Engineering-Productivity---Pipeline-Build-Durations?widget=8356727&udv=0"
- 2_2-5["webpack-dev-server (4.5 minutes)"];
+ 2_2-5["webpack-dev-server (4 minutes)"];
click 2_2-5 "https://app.periscopedata.com/app/gitlab/652085/Engineering-Productivity---Pipeline-Build-Durations?widget=8404303&udv=0"
subgraph "Needs `setup-test-env` & `compile-test-assets`";
2_2-2 & 2_2-4 & 2_2-5 --> 1-6 & 1-3;
@@ -152,22 +152,22 @@ graph RL;
click 2_5-1 "https://app.periscopedata.com/app/gitlab/652085/Engineering-Productivity---Pipeline-Build-Durations"
end
- 3_1-1["jest (15 minutes)"];
+ 3_1-1["jest (16 minutes)"];
class 3_1-1 criticalPath;
click 3_1-1 "https://app.periscopedata.com/app/gitlab/652085/Engineering-Productivity---Pipeline-Build-Durations?widget=6914204&udv=0"
- 3_1-2["karma (4 minutes)"];
+ 3_1-2["karma (2 minutes)"];
click 3_1-3 "https://app.periscopedata.com/app/gitlab/652085/Engineering-Productivity---Pipeline-Build-Durations?widget=6914200&udv=0"
subgraph "Needs `rspec frontend_fixture/rspec-ee frontend_fixture`";
3_1-1 & 3_1-2 --> 2_2-2;
end
- 3_2-1["rspec:coverage (4.6 minutes)"];
+ 3_2-1["rspec:coverage (5.3 minutes)"];
subgraph "Depends on `rspec` jobs";
3_2-1 -.->|"(don't use needs because of limitations)"| 2_5-1;
click 3_2-1 "https://app.periscopedata.com/app/gitlab/652085/Engineering-Productivity---Pipeline-Build-Durations?widget=7248745&udv=0"
end
- 4_1-1["coverage-frontend (2.75 minutes)"];
+ 4_1-1["coverage-frontend (2 minutes)"];
subgraph "Needs `jest`";
4_1-1 --> 3_1-1;
class 4_1-1 criticalPath;
@@ -186,15 +186,15 @@ graph RL;
subgraph "No needed jobs";
1-1["danger-review (2.3 minutes)"];
click 1-1 "https://app.periscopedata.com/app/gitlab/652085/Engineering-Productivity---Pipeline-Build-Durations?widget=8100542&udv=0"
- 1-2["build-qa-image (1.6 minutes)"];
+ 1-2["build-qa-image (2 minutes)"];
click 1-2 "https://app.periscopedata.com/app/gitlab/652085/Engineering-Productivity---Pipeline-Build-Durations?widget=6914325&udv=0"
- 1-3["compile-test-assets (7 minutes)"];
+ 1-3["compile-test-assets (6 minutes)"];
click 1-3 "https://app.periscopedata.com/app/gitlab/652085/Engineering-Productivity---Pipeline-Build-Durations?widget=6914317&udv=0"
1-4["compile-test-assets as-if-foss (7 minutes)"];
click 1-4 "https://app.periscopedata.com/app/gitlab/652085/Engineering-Productivity---Pipeline-Build-Durations?widget=8356616&udv=0"
- 1-5["compile-production-assets (19 minutes)"];
+ 1-5["compile-production-assets (14 minutes)"];
click 1-5 "https://app.periscopedata.com/app/gitlab/652085/Engineering-Productivity---Pipeline-Build-Durations?widget=6914312&udv=0"
- 1-6["setup-test-env (9 minutes)"];
+ 1-6["setup-test-env (4 minutes)"];
click 1-6 "https://app.periscopedata.com/app/gitlab/652085/Engineering-Productivity---Pipeline-Build-Durations?widget=6914315&udv=0"
1-7["review-stop-failed-deployment"];
1-8["dependency_scanning"];
@@ -216,24 +216,24 @@ graph RL;
class 1-6 criticalPath;
end
- 2_1-1["graphql-verify (4 minutes)"];
+ 2_1-1["graphql-verify (2.3 minutes)"];
click 2_1-1 "https://app.periscopedata.com/app/gitlab/652085/Engineering-Productivity---Pipeline-Build-Durations?widget=8356715&udv=0"
2_1-2["memory-static (4.75 minutes)"];
click 2_1-2 "https://app.periscopedata.com/app/gitlab/652085/Engineering-Productivity---Pipeline-Build-Durations?widget=8356721&udv=0"
- 2_1-3["run-dev-fixtures (6 minutes)"];
+ 2_1-3["run-dev-fixtures (3 minutes)"];
click 2_1-3 "https://app.periscopedata.com/app/gitlab/652085/Engineering-Productivity---Pipeline-Build-Durations?widget=8356729&udv=0"
- 2_1-4["run-dev-fixtures-ee (6.75 minutes)"];
+ 2_1-4["run-dev-fixtures-ee (4 minutes)"];
click 2_1-4 "https://app.periscopedata.com/app/gitlab/652085/Engineering-Productivity---Pipeline-Build-Durations?widget=8356731&udv=0"
subgraph "Needs `setup-test-env`";
2_1-1 & 2_1-2 & 2_1-3 & 2_1-4 --> 1-6;
end
- 2_2-2["rspec frontend_fixture/rspec-ee frontend_fixture (12 minutes)"];
+ 2_2-2["rspec frontend_fixture/rspec-ee frontend_fixture (11 minutes)"];
class 2_2-2 criticalPath;
click 2_2-2 "https://app.periscopedata.com/app/gitlab/652085/Engineering-Productivity---Pipeline-Build-Durations?widget=7910143&udv=0"
- 2_2-4["memory-on-boot (6 minutes)"];
+ 2_2-4["memory-on-boot (3.5 minutes)"];
click 2_2-4 "https://app.periscopedata.com/app/gitlab/652085/Engineering-Productivity---Pipeline-Build-Durations?widget=8356727&udv=0"
- 2_2-5["webpack-dev-server (4.5 minutes)"];
+ 2_2-5["webpack-dev-server (4 minutes)"];
click 2_2-5 "https://app.periscopedata.com/app/gitlab/652085/Engineering-Productivity---Pipeline-Build-Durations?widget=8404303&udv=0"
subgraph "Needs `setup-test-env` & `compile-test-assets`";
2_2-2 & 2_2-4 & 2_2-5 --> 1-6 & 1-3;
@@ -258,51 +258,48 @@ graph RL;
click 2_5-1 "https://app.periscopedata.com/app/gitlab/652085/Engineering-Productivity---Pipeline-Build-Durations"
end
- 2_6-1["review-build-cng (27.3 minutes)"];
+ 2_6-1["review-build-cng (27 minutes)"];
subgraph "Needs `build-assets-image`";
2_6-1 --> 2_3-1;
class 2_6-1 criticalPath;
click 2_6-1 "https://app.periscopedata.com/app/gitlab/652085/Engineering-Productivity---Pipeline-Build-Durations?widget=6914314&udv=0"
end
- 3_1-1["jest (15 minutes)"];
+ 3_1-1["jest (16 minutes)"];
class 3_1-1 criticalPath;
click 3_1-1 "https://app.periscopedata.com/app/gitlab/652085/Engineering-Productivity---Pipeline-Build-Durations?widget=6914204&udv=0"
- 3_1-2["karma (4 minutes)"];
+ 3_1-2["karma (2 minutes)"];
click 3_1-3 "https://app.periscopedata.com/app/gitlab/652085/Engineering-Productivity---Pipeline-Build-Durations?widget=6914200&udv=0"
subgraph "Needs `rspec frontend_fixture/rspec-ee frontend_fixture`";
3_1-1 & 3_1-2 --> 2_2-2;
end
- 3_2-1["rspec:coverage (4.6 minutes)"];
+ 3_2-1["rspec:coverage (5.3 minutes)"];
subgraph "Depends on `rspec` jobs";
3_2-1 -.->|"(don't use needs because of limitations)"| 2_5-1;
click 3_2-1 "https://app.periscopedata.com/app/gitlab/652085/Engineering-Productivity---Pipeline-Build-Durations?widget=7248745&udv=0"
end
- 4_1-1["coverage-frontend (2.75 minutes)"];
+ 4_1-1["coverage-frontend (2 minutes)"];
subgraph "Needs `jest`";
4_1-1 --> 3_1-1;
class 4_1-1 criticalPath;
click 4_1-1 "https://app.periscopedata.com/app/gitlab/652085/Engineering-Productivity---Pipeline-Build-Durations?widget=7910777&udv=0"
end
- 3_3-1["review-deploy (6 minutes)"];
+ 3_3-1["review-deploy (10.5 minutes)"];
subgraph "Played by `review-build-cng`";
3_3-1 --> 2_6-1;
class 3_3-1 criticalPath;
click 3_3-1 "https://app.periscopedata.com/app/gitlab/652085/Engineering-Productivity---Pipeline-Build-Durations?widget=6721130&udv=0"
end
- 4_2-1["review-qa-smoke (8 minutes)"];
+ 4_2-1["review-qa-smoke (7.4 minutes)"];
click 4_2-1 "https://app.periscopedata.com/app/gitlab/652085/Engineering-Productivity---Pipeline-Build-Durations?widget=6729805&udv=0"
- 4_2-2["review-performance (4 minutes)"];
+ 4_2-2["review-performance (2.5 minutes)"];
click 4_2-2 "https://app.periscopedata.com/app/gitlab/652085/Engineering-Productivity---Pipeline-Build-Durations?widget=8356817&udv=0"
- 4_2-3["dast (18 minutes)"];
- click 4_2-3 "https://app.periscopedata.com/app/gitlab/652085/Engineering-Productivity---Pipeline-Build-Durations?widget=8356819&udv=0"
- class 4_2-3 criticalPath;
subgraph "Played by `review-deploy`";
- 4_2-1 & 4_2-2 & 4_2-3 -.->|"(don't use needs because of limitations)"| 3_3-1;
+ 4_2-1 & 4_2-2 --> 3_3-1;
end
```
@@ -317,15 +314,15 @@ graph RL;
subgraph "No needed jobs";
1-1["danger-review (2.3 minutes)"];
click 1-1 "https://app.periscopedata.com/app/gitlab/652085/Engineering-Productivity---Pipeline-Build-Durations?widget=8100542&udv=0"
- 1-2["build-qa-image (1.6 minutes)"];
+ 1-2["build-qa-image (2 minutes)"];
click 1-2 "https://app.periscopedata.com/app/gitlab/652085/Engineering-Productivity---Pipeline-Build-Durations?widget=6914325&udv=0"
- 1-3["compile-test-assets (7 minutes)"];
+ 1-3["compile-test-assets (6 minutes)"];
click 1-3 "https://app.periscopedata.com/app/gitlab/652085/Engineering-Productivity---Pipeline-Build-Durations?widget=6914317&udv=0"
1-4["compile-test-assets as-if-foss (7 minutes)"];
click 1-4 "https://app.periscopedata.com/app/gitlab/652085/Engineering-Productivity---Pipeline-Build-Durations?widget=8356616&udv=0"
- 1-5["compile-production-assets (19 minutes)"];
+ 1-5["compile-production-assets (14 minutes)"];
click 1-5 "https://app.periscopedata.com/app/gitlab/652085/Engineering-Productivity---Pipeline-Build-Durations?widget=6914312&udv=0"
- 1-6["setup-test-env (9 minutes)"];
+ 1-6["setup-test-env (4 minutes)"];
click 1-6 "https://app.periscopedata.com/app/gitlab/652085/Engineering-Productivity---Pipeline-Build-Durations?widget=6914315&udv=0"
1-7["review-stop-failed-deployment"];
1-8["dependency_scanning"];
@@ -345,7 +342,7 @@ graph RL;
class 1-5 criticalPath;
end
- 2_1-1["graphql-verify (4 minutes)"];
+ 2_1-1["graphql-verify (2.3 minutes)"];
click 2_1-1 "https://app.periscopedata.com/app/gitlab/652085/Engineering-Productivity---Pipeline-Build-Durations?widget=8356715&udv=0"
subgraph "Needs `setup-test-env`";
2_1-1 --> 1-6;
@@ -357,7 +354,7 @@ graph RL;
class 2_3-1 criticalPath;
end
- 2_4-1["package-and-qa (105 minutes)"];
+ 2_4-1["package-and-qa (140 minutes)"];
subgraph "Needs `build-qa-image` & `build-assets-image`";
2_4-1 --> 1-2 & 2_3-1;
class 2_4-1 criticalPath;
@@ -537,7 +534,7 @@ the `gitlab-org/gitlab-foss` project.
### Interruptible pipelines
-By default, all jobs are [interruptible](../ci/yaml/README.md#interruptible), except the
+By default, all jobs are [interruptible](../ci/yaml/index.md#interruptible), except the
`dont-interrupt-me` job which runs automatically on `main`, and is `manual`
otherwise.
@@ -559,8 +556,8 @@ request, be sure to start the `dont-interrupt-me` job before pushing.
- `.qa-cache`
- `.yarn-cache`
- `.assets-compile-cache` (the key includes `${NODE_ENV}` so it's actually two different caches).
-1. These cache definitions are composed of [multiple atomic caches](../ci/yaml/README.md#multiple-caches).
-1. Only 6 specific jobs, running in 2-hourly scheduled pipelines, are pushing (i.e. updating) to the caches:
+1. These cache definitions are composed of [multiple atomic caches](../ci/caching/index.md#use-multiple-caches).
+1. Only the following jobs, running in 2-hourly scheduled pipelines, are pushing (that is, updating) to the caches:
- `update-setup-test-env-cache`, defined in [`.gitlab/ci/rails.gitlab-ci.yml`](https://gitlab.com/gitlab-org/gitlab/-/blob/master/.gitlab/ci/rails.gitlab-ci.yml).
- `update-gitaly-binaries-cache`, defined in [`.gitlab/ci/rails.gitlab-ci.yml`](https://gitlab.com/gitlab-org/gitlab/-/blob/master/.gitlab/ci/rails.gitlab-ci.yml).
- `update-static-analysis-cache`, defined in [`.gitlab/ci/rails.gitlab-ci.yml`](https://gitlab.com/gitlab-org/gitlab/-/blob/master/.gitlab/ci/rails.gitlab-ci.yml).
@@ -568,6 +565,7 @@ request, be sure to start the `dont-interrupt-me` job before pushing.
- `update-assets-compile-production-cache`, defined in [`.gitlab/ci/frontend.gitlab-ci.yml`](https://gitlab.com/gitlab-org/gitlab/-/blob/master/.gitlab/ci/frontend.gitlab-ci.yml).
- `update-assets-compile-test-cache`, defined in [`.gitlab/ci/frontend.gitlab-ci.yml`](https://gitlab.com/gitlab-org/gitlab/-/blob/master/.gitlab/ci/frontend.gitlab-ci.yml).
- `update-yarn-cache`, defined in [`.gitlab/ci/frontend.gitlab-ci.yml`](https://gitlab.com/gitlab-org/gitlab/-/blob/master/.gitlab/ci/frontend.gitlab-ci.yml).
+ - `update-storybook-yarn-cache`, defined in [`.gitlab/ci/frontend.gitlab-ci.yml`](https://gitlab.com/gitlab-org/gitlab/-/blob/master/.gitlab/ci/frontend.gitlab-ci.yml).
1. These jobs can also be forced to run in merge requests whose title include `UPDATE CACHE` (this can be useful to warm the caches in a MR that updates the cache keys).
### Artifacts strategy
@@ -584,7 +582,7 @@ several reasons:
- It significantly reduces load on the file server, as smaller deltas mean less time spent in `git pack-objects`.
The pre-clone step works by using the `CI_PRE_CLONE_SCRIPT` variable
-[defined by GitLab.com shared runners](../ci/runners/README.md#pre-clone-script).
+[defined by GitLab.com shared runners](../ci/runners/build_cloud/linux_build_cloud.md#pre-clone-script).
The `CI_PRE_CLONE_SCRIPT` is currently defined as a project CI/CD variable:
@@ -655,7 +653,7 @@ The current stages are:
- `fixtures`: This stage includes jobs that prepare fixtures needed by frontend tests.
- `test`: This stage includes most of the tests, DB/migration jobs, and static analysis jobs.
- `post-test`: This stage includes jobs that build reports or gather data from
- the `test` stage's jobs (e.g. coverage, Knapsack metadata etc.).
+ the `test` stage's jobs (for example, coverage, Knapsack metadata, and so on).
- `review-prepare`: This stage includes a job that build the CNG images that are
later used by the (Helm) Review App deployment (see
[Review Apps](testing_guide/review_apps.md) for details).
@@ -665,9 +663,9 @@ that is deployed in stage `review`.
- `qa`: This stage includes jobs that perform QA tasks against the Review App
that is deployed in stage `review`.
- `post-qa`: This stage includes jobs that build reports or gather data from
- the `qa` stage's jobs (e.g. Review App performance report).
+ the `qa` stage's jobs (for example, Review App performance report).
- `pages`: This stage includes a job that deploys the various reports as
- GitLab Pages (e.g. [`coverage-ruby`](https://gitlab-org.gitlab.io/gitlab/coverage-ruby/),
+ GitLab Pages (for example, [`coverage-ruby`](https://gitlab-org.gitlab.io/gitlab/coverage-ruby/),
[`coverage-javascript`](https://gitlab-org.gitlab.io/gitlab/coverage-javascript/),
and `webpack-report` (found at `https://gitlab-org.gitlab.io/gitlab/webpack-report/`, but there is
[an issue with the deployment](https://gitlab.com/gitlab-org/gitlab/-/issues/233458)).
@@ -716,14 +714,14 @@ each pipeline includes default variables defined in
### Common job definitions
-Most of the jobs [extend from a few CI definitions](../ci/yaml/README.md#extends)
+Most of the jobs [extend from a few CI definitions](../ci/yaml/index.md#extends)
defined in [`.gitlab/ci/global.gitlab-ci.yml`](https://gitlab.com/gitlab-org/gitlab/-/blob/master/.gitlab/ci/global.gitlab-ci.yml)
-that are scoped to a single [configuration keyword](../ci/yaml/README.md#job-keywords).
+that are scoped to a single [configuration keyword](../ci/yaml/index.md#job-keywords).
| Job definitions | Description |
|------------------|-------------|
-| `.default-retry` | Allows a job to [retry](../ci/yaml/README.md#retry) upon `unknown_failure`, `api_failure`, `runner_system_failure`, `job_execution_timeout`, or `stuck_or_timeout_failure`. |
-| `.default-before_script` | Allows a job to use a default `before_script` definition suitable for Ruby/Rails tasks that may need a database running (e.g. tests). |
+| `.default-retry` | Allows a job to [retry](../ci/yaml/index.md#retry) upon `unknown_failure`, `api_failure`, `runner_system_failure`, `job_execution_timeout`, or `stuck_or_timeout_failure`. |
+| `.default-before_script` | Allows a job to use a default `before_script` definition suitable for Ruby/Rails tasks that may need a database running (for example, tests). |
| `.setup-test-env-cache` | Allows a job to use a default `cache` definition suitable for setting up test environment for subsequent Ruby/Rails tasks. |
| `.rails-cache` | Allows a job to use a default `cache` definition suitable for Ruby/Rails tasks. |
| `.static-analysis-cache` | Allows a job to use a default `cache` definition suitable for static analysis tasks. |
@@ -741,16 +739,16 @@ that are scoped to a single [configuration keyword](../ci/yaml/README.md#job-key
### `rules`, `if:` conditions and `changes:` patterns
-We're using the [`rules` keyword](../ci/yaml/README.md#rules) extensively.
+We're using the [`rules` keyword](../ci/yaml/index.md#rules) extensively.
All `rules` definitions are defined in
[`rules.gitlab-ci.yml`](https://gitlab.com/gitlab-org/gitlab/-/blob/master/.gitlab/ci/rules.gitlab-ci.yml),
-then included in individual jobs via [`extends`](../ci/yaml/README.md#extends).
+then included in individual jobs via [`extends`](../ci/yaml/index.md#extends).
The `rules` definitions are composed of `if:` conditions and `changes:` patterns,
which are also defined in
[`rules.gitlab-ci.yml`](https://gitlab.com/gitlab-org/gitlab/-/blob/master/.gitlab/ci/rules.gitlab-ci.yml)
-and included in `rules` definitions via [YAML anchors](../ci/yaml/README.md#anchors)
+and included in `rules` definitions via [YAML anchors](../ci/yaml/index.md#anchors)
#### `if:` conditions
@@ -759,8 +757,8 @@ and included in `rules` definitions via [YAML anchors](../ci/yaml/README.md#anch
| `if:` conditions | Description | Notes |
|------------------|-------------|-------|
| `if-not-canonical-namespace` | Matches if the project isn't in the canonical (`gitlab-org/`) or security (`gitlab-org/security`) namespace. | Use to create a job for forks (by using `when: on_success|manual`), or **not** create a job for forks (by using `when: never`). |
-| `if-not-ee` | Matches if the project isn't EE (i.e. project name isn't `gitlab` or `gitlab-ee`). | Use to create a job only in the FOSS project (by using `when: on_success|manual`), or **not** create a job if the project is EE (by using `when: never`). |
-| `if-not-foss` | Matches if the project isn't FOSS (i.e. project name isn't `gitlab-foss`, `gitlab-ce`, or `gitlabhq`). | Use to create a job only in the EE project (by using `when: on_success|manual`), or **not** create a job if the project is FOSS (by using `when: never`). |
+| `if-not-ee` | Matches if the project isn't EE (that is, project name isn't `gitlab` or `gitlab-ee`). | Use to create a job only in the FOSS project (by using `when: on_success|manual`), or **not** create a job if the project is EE (by using `when: never`). |
+| `if-not-foss` | Matches if the project isn't FOSS (that is, project name isn't `gitlab-foss`, `gitlab-ce`, or `gitlabhq`). | Use to create a job only in the EE project (by using `when: on_success|manual`), or **not** create a job if the project is FOSS (by using `when: never`). |
| `if-default-refs` | Matches if the pipeline is for `master`, `main`, `/^[\d-]+-stable(-ee)?$/` (stable branches), `/^\d+-\d+-auto-deploy-\d+$/` (auto-deploy branches), `/^security\//` (security branches), merge requests, and tags. | Note that jobs aren't created for branches with this default configuration. |
| `if-master-refs` | Matches if the current branch is `master` or `main`. | |
| `if-master-push` | Matches if the current branch is `master` or `main` and pipeline source is `push`. | |
@@ -799,11 +797,11 @@ and included in `rules` definitions via [YAML anchors](../ci/yaml/README.md#anch
| `ci-qa-patterns` | Only create job for CI configuration-related changes related to the `qa` stage. |
| `yaml-lint-patterns` | Only create job for YAML-related changes. |
| `docs-patterns` | Only create job for docs-related changes. |
-| `frontend-dependency-patterns` | Only create job when frontend dependencies are updated (i.e. `package.json`, and `yarn.lock`). changes. |
+| `frontend-dependency-patterns` | Only create job when frontend dependencies are updated (that is, `package.json`, and `yarn.lock`). changes. |
| `frontend-patterns` | Only create job for frontend-related changes. |
| `backend-patterns` | Only create job for backend-related changes. |
| `db-patterns` | Only create job for DB-related changes. |
-| `backstage-patterns` | Only create job for backstage-related changes (i.e. Danger, fixtures, RuboCop, specs). |
+| `backstage-patterns` | Only create job for backstage-related changes (that is, Danger, fixtures, RuboCop, specs). |
| `code-patterns` | Only create job for code-related changes. |
| `qa-patterns` | Only create job for QA-related changes. |
| `code-backstage-patterns` | Combination of `code-patterns` and `backstage-patterns`. |
@@ -812,4 +810,4 @@ and included in `rules` definitions via [YAML anchors](../ci/yaml/README.md#anch
---
-[Return to Development documentation](README.md)
+[Return to Development documentation](index.md)
diff --git a/doc/development/policies.md b/doc/development/policies.md
index 315878e19d9..8ad3d3f42ba 100644
--- a/doc/development/policies.md
+++ b/doc/development/policies.md
@@ -106,7 +106,7 @@ Each line represents a rule that was evaluated. There are a few things to note:
1. The `-` or `+` symbol indicates whether the rule block was evaluated to be
`false` or `true`, respectively.
1. The number inside the brackets indicates the score.
-1. The last part of the line (e.g. `@john : Issue/1`) shows the username
+1. The last part of the line (for example, `@john : Issue/1`) shows the username
and subject for that rule.
Here you can see that the first four rules were evaluated `false` for
@@ -150,7 +150,7 @@ then the result of the condition is cached globally only based on the subject -
**DANGER**: If you use a `:scope` option when the condition actually uses data from
both user and subject (including a simple anonymous check!) your result is cached at too global of a scope and results in cache bugs.
-Sometimes we are checking permissions for a lot of users for one subject, or a lot of subjects for one user. In this case, we want to set a *preferred scope* - i.e. tell the system that we prefer rules that can be cached on the repeated parameter. For example, in `Ability.users_that_can_read_project`:
+Sometimes we are checking permissions for a lot of users for one subject, or a lot of subjects for one user. In this case, we want to set a *preferred scope* - that is, tell the system that we prefer rules that can be cached on the repeated parameter. For example, in `Ability.users_that_can_read_project`:
```ruby
def users_that_can_read_project(users, project)
diff --git a/doc/development/polymorphic_associations.md b/doc/development/polymorphic_associations.md
index f341255a7e1..bbeaab40a90 100644
--- a/doc/development/polymorphic_associations.md
+++ b/doc/development/polymorphic_associations.md
@@ -146,7 +146,7 @@ filter rows using the `IS NULL` condition.
To summarize: using separate tables allows us to use foreign keys effectively,
create indexes only where necessary, conserve space, query data more
-efficiently, and scale these tables more easily (e.g. by storing them on
+efficiently, and scale these tables more easily (for example, by storing them on
separate disks). A nice side effect of this is that code can also become easier,
as a single model isn't responsible for handling different kinds of
data.
diff --git a/doc/development/profiling.md b/doc/development/profiling.md
index 781138a6ade..a58e1d60cc5 100644
--- a/doc/development/profiling.md
+++ b/doc/development/profiling.md
@@ -135,7 +135,7 @@ starting GitLab. For example:
ENABLE_BULLET=true bundle exec rails s
```
-Bullet logs query problems to both the Rails log as well as the Chrome
+Bullet logs query problems to both the Rails log as well as the browser
console.
As a follow up to finding `N+1` queries with Bullet, consider writing a [QueryRecoder test](query_recorder.md) to prevent a regression.
diff --git a/doc/development/pry_debugging.md b/doc/development/pry_debugging.md
index 402029164a7..5481da348e8 100644
--- a/doc/development/pry_debugging.md
+++ b/doc/development/pry_debugging.md
@@ -129,7 +129,7 @@ end
## Repeat last command
You can repeat the last command by just hitting the <kbd>Enter</kbd>
-key (e.g., with `step` or`next`), if you place the following snippet
+key (for example, with `step` or`next`), if you place the following snippet
in your `~/.pryrc`:
```ruby
diff --git a/doc/development/query_performance.md b/doc/development/query_performance.md
index 3ff36c7d005..318d9f46aff 100644
--- a/doc/development/query_performance.md
+++ b/doc/development/query_performance.md
@@ -21,7 +21,7 @@ When you are optimizing your SQL queries, there are two dimensions to pay attent
| Queries in a migration | `100ms` | This is different than the total [migration time](database_review.md#timing-guidelines-for-migrations). |
| Concurrent operations in a migration | `5min` | Concurrent operations do not block the database, but they block the GitLab update. This includes operations such as `add_concurrent_index` and `add_concurrent_foreign_key`. |
| Background migrations | `1s` | |
-| Usage Ping | `1s` | See the [usage ping docs](usage_ping/index.md#developing-and-testing-usage-ping) for more details. |
+| Service Ping | `1s` | See the [Service Ping docs](service_ping/index.md#developing-and-testing-service-ping) for more details. |
- When analyzing your query's performance, pay attention to if the time you are seeing is on a [cold or warm cache](#cold-and-warm-cache). These guidelines apply for both cache types.
- When working with batched queries, change the range and batch size to see how it effects the query timing and caching.
diff --git a/doc/development/query_recorder.md b/doc/development/query_recorder.md
index 46866f67f68..8759bd09538 100644
--- a/doc/development/query_recorder.md
+++ b/doc/development/query_recorder.md
@@ -48,7 +48,7 @@ end
Use a [request spec](https://gitlab.com/gitlab-org/gitlab-foss/tree/master/spec/requests) when writing a N+1 test on the controller level.
Controller specs should not be used to write N+1 tests as the controller is only initialized once per example.
-This could lead to false successes where subsequent "requests" could have queries reduced (e.g. because of memoization).
+This could lead to false successes where subsequent "requests" could have queries reduced (for example, because of memoization).
## Finding the source of the query
diff --git a/doc/development/rails_initializers.md b/doc/development/rails_initializers.md
index 89902c81cd5..ee73dac2b72 100644
--- a/doc/development/rails_initializers.md
+++ b/doc/development/rails_initializers.md
@@ -19,4 +19,4 @@ Ruby files in this folder are loaded in alphabetical order just like the default
Some examples where you would need to do this are:
1. Modifying Rails' `config.autoload_paths`
-1. Changing configuration that Zeitwerk uses, e.g. inflections
+1. Changing configuration that Zeitwerk uses, for example, inflections
diff --git a/doc/development/rake_tasks.md b/doc/development/rake_tasks.md
index 8d20c2b738e..6b2b941a0c1 100644
--- a/doc/development/rake_tasks.md
+++ b/doc/development/rake_tasks.md
@@ -249,6 +249,13 @@ git push -u origin update-project-templates
Now create a merge request and merge that to main.
+To update just a single template instead of all of them, specify the template name
+between square brackets. For example, for the `cluster_management` template, run:
+
+```shell
+bundle exec rake gitlab:update_project_templates\[cluster_management\]
+```
+
## Generate route lists
To see the full list of API routes, you can run:
diff --git a/doc/development/reactive_caching.md b/doc/development/reactive_caching.md
index b6878ee48f1..3c0a1419604 100644
--- a/doc/development/reactive_caching.md
+++ b/doc/development/reactive_caching.md
@@ -72,27 +72,27 @@ For more information, read the internal issue
## How to use
-### In models and services
+### In models and integrations
-The ReactiveCaching concern can be used in models as well as `project_services`
-(`app/models/project_services`).
+The ReactiveCaching concern can be used in models as well as `integrations`
+(`app/models/integrations`).
-1. Include the concern in your model or service.
+1. Include the concern in your model or integration.
- When including in a model:
+ To include the concern in a model:
```ruby
include ReactiveCaching
```
- or when including in a `project_service`:
+ To include the concern in an integration:
```ruby
include ReactiveService
```
-1. Implement the `calculate_reactive_cache` method in your model/service.
-1. Call `with_reactive_cache` in your model/service where the cached value is needed.
+1. Implement the `calculate_reactive_cache` method in your model or integration.
+1. Call `with_reactive_cache` in your model or integration where the cached value is needed.
1. Set the [`reactive_cache_work_type` accordingly](#selfreactive_cache_work_type).
### In controllers
@@ -258,7 +258,7 @@ self.reactive_cache_hard_limit = 5.megabytes
- This is the type of work performed by the `calculate_reactive_cache` method. Based on this attribute,
it's able to pick the right worker to process the caching job. Make sure to
set it as `:external_dependency` if the work performs any external request
-(e.g. Kubernetes, Sentry); otherwise set it to `:no_dependency`.
+(for example, Kubernetes, Sentry); otherwise set it to `:no_dependency`.
#### `self.reactive_cache_worker_finder`
diff --git a/doc/development/redis.md b/doc/development/redis.md
index 893fe1dcbcd..e631a6ec80c 100644
--- a/doc/development/redis.md
+++ b/doc/development/redis.md
@@ -20,7 +20,6 @@ On GitLab.com, we use [separate Redis
instances](../administration/redis/replication_and_failover.md#running-multiple-redis-clusters).
See the [Redis SRE guide](https://gitlab.com/gitlab-com/runbooks/-/blob/master/docs/redis/redis-survival-guide-for-sres.md)
for more details on our setup.
-We do not currently use [ActionCable on GitLab.com](https://gitlab.com/groups/gitlab-com/gl-infra/-/epics/228).
Every application process is configured to use the same Redis servers, so they
can be used for inter-process communication in cases where [PostgreSQL](sql.md)
diff --git a/doc/development/refactoring_guide/index.md b/doc/development/refactoring_guide/index.md
index a25000589c0..a6ed83258f3 100644
--- a/doc/development/refactoring_guide/index.md
+++ b/doc/development/refactoring_guide/index.md
@@ -14,7 +14,7 @@ Pinning tests help you ensure that you don't unintentionally change the output o
### Example steps
-1. Identify all the possible inputs to the refactor subject (e.g. anything that's injected into the template or used in a conditional).
+1. Identify all the possible inputs to the refactor subject (for example, anything that's injected into the template or used in a conditional).
1. For each possible input, identify the significant possible values.
1. Create a test to save a full detailed snapshot for each helpful combination values per input. This should guarantee that we have "pinned down" the current behavior. The snapshot could be literally a screenshot, a dump of HTML, or even an ordered list of debugging statements.
1. Run all the pinning tests against the code, before you start refactoring (Oracle)
diff --git a/doc/development/renaming_features.md b/doc/development/renaming_features.md
index f7fc1c11e37..bd25fa1377e 100644
--- a/doc/development/renaming_features.md
+++ b/doc/development/renaming_features.md
@@ -12,7 +12,7 @@ Sometimes the business asks to change the name of a feature. Broadly speaking, t
- Pros: does not increase code complexity.
- Cons: more work to execute, and higher risk of immediate bugs.
- Façade, rename as little as possible; only the user-facing content like interfaces,
- documentation, error messages, etc.
+ documentation, error messages, and so on.
- Pros: less work to execute.
- Cons: increases code complexity, creating higher risk of future bugs.
diff --git a/doc/development/repository_mirroring.md b/doc/development/repository_mirroring.md
index 61157c88618..bb4c62d70ee 100644
--- a/doc/development/repository_mirroring.md
+++ b/doc/development/repository_mirroring.md
@@ -11,11 +11,41 @@ info: To determine the technical writer assigned to the Stage/Group associated w
<!-- vale gitlab.Spelling = NO -->
In December 2018, Tiago Botelho hosted a Deep Dive (GitLab team members only: `https://gitlab.com/gitlab-org/create-stage/issues/1`)
-on the GitLab [Pull Repository Mirroring functionality](../user/project/repository/repository_mirroring.md#pulling-from-a-remote-repository)
+on the GitLab [Pull Repository Mirroring functionality](../user/project/repository/repository_mirroring.md#pull-from-a-remote-repository)
to share his domain specific knowledge with anyone who may work in this part of the
codebase in the future. You can find the <i class="fa fa-youtube-play youtube" aria-hidden="true"></i> [recording on YouTube](https://www.youtube.com/watch?v=sSZq0fpdY-Y),
and the slides in [PDF](https://gitlab.com/gitlab-org/create-stage/uploads/8693404888a941fd851f8a8ecdec9675/Gitlab_Create_-_Pull_Mirroring_Deep_Dive.pdf).
Everything covered in this deep dive was accurate as of GitLab 11.6, and while specific
details may have changed since then, it should still serve as a good introduction.
-<!-- vale gitlab.Spelling = YES --> \ No newline at end of file
+<!-- vale gitlab.Spelling = YES -->
+
+## Explanation of mirroring process
+
+GitLab version 14 performs these steps when an
+[API call](../api/projects.md#start-the-pull-mirroring-process-for-a-project)
+triggers a pull mirror. Scheduled mirror updates are similar, but do not start with the API call:
+
+1. The request originates from an API call, and triggers the `start_pull_mirroring_service` in
+ [`project_mirror.rb`](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/lib/api/project_mirror.rb).
+1. The pull mirroring service
+ ([`start_pull_mirroring_service.rb`](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/app/services/start_pull_mirroring_service.rb)) starts. It updates the project state, and forces the job to start immediately.
+1. The project import state is updated, and then triggers an `update_all_mirrors_worker` in
+ [`project_import_state.rb`](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/app/models/ee/project_import_state.rb#L170).
+1. The update all mirrors worker
+ ([`update_all_mirrors_worker.rb`](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/app/workers/update_all_mirrors_worker.rb))
+ attempts to avoid stampedes by calling the `project_import_schedule` worker.
+1. The project import schedule worker
+ ([`project_import_schedule_worker.rb`](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/app/workers/project_import_schedule_worker.rb#L21)) updates the state of the project, and
+ starts a Ruby `state_machine` to manage the import transition process.
+1. While updating the project state,
+ [this call in `project.rb`](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/app/models/ee/project.rb#L426)
+ starts the `repository_update_mirror` worker.
+1. The Sidekiq background mirror workers
+ ([`repository_update_mirror_worker.rb`](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/app/workers/repository_update_mirror_worker.rb)) track the state of the mirroring task, and
+ provide good error state information. Processes can hang here, because this step manages the Git steps.
+1. The update mirror service
+ ([`update_mirror_service.rb`](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/app/services/projects/update_mirror_service.rb))
+ performs the Git operations.
+
+The import and mirror update processes are complete after the update mirror service step. However, depending on the changes included, more tasks (such as pipelines for commits) can be triggered.
diff --git a/doc/development/reusing_abstractions.md b/doc/development/reusing_abstractions.md
index 1e200e1f520..ded6b074324 100644
--- a/doc/development/reusing_abstractions.md
+++ b/doc/development/reusing_abstractions.md
@@ -215,7 +215,7 @@ provided by Active Record are not included, except for the following methods:
### Active Record
The API provided by Active Record itself, such as the `where` method, `save`,
-`delete_all`, etc.
+`delete_all`, and so on.
### Worker
diff --git a/doc/development/scalability.md b/doc/development/scalability.md
index b260618c220..824c98b4b03 100644
--- a/doc/development/scalability.md
+++ b/doc/development/scalability.md
@@ -23,7 +23,7 @@ users. We discuss each component below.
### PostgreSQL
The PostgreSQL database holds all metadata for projects, issues, merge
-requests, users, etc. The schema is managed by the Rails application
+requests, users, and so on. The schema is managed by the Rails application
[db/structure.sql](https://gitlab.com/gitlab-org/gitlab/-/blob/master/db/structure.sql).
GitLab Web/API servers and Sidekiq nodes talk directly to the database by using a
@@ -91,7 +91,7 @@ ownership. It shares a lot of challenges with traditional, data-oriented
sharding, however. For instance, joining data has to happen in the
application itself rather than on the query layer (although additional
layers like GraphQL might mitigate that) and it requires true
-parallelism to run efficiently (i.e. a scatter-gather model to collect,
+parallelism to run efficiently (that is, a scatter-gather model to collect,
then zip up data records), which is a challenge in itself in Ruby based
systems.
@@ -243,7 +243,7 @@ Ruby on Rails applications. In GitLab, Sidekiq performs the heavy
lifting of many activities, including:
- Updating merge requests after a push.
-- Sending e-mails.
+- Sending email messages.
- Updating user authorizations.
- Processing CI builds and pipelines.
@@ -276,7 +276,7 @@ in a timely manner:
this to `ProcessCommitWorker`.
- Redistribute/gerrymander Sidekiq processes by queue
types. Long-running jobs (for example, relating to project import) can often
- squeeze out jobs that run fast (for example, delivering e-mail). [This technique
+ squeeze out jobs that run fast (for example, delivering email). [This technique
was used in to optimize our existing Sidekiq deployment](https://gitlab.com/gitlab-com/gl-infra/infrastructure/-/issues/7219#note_218019483).
- Optimize jobs. Eliminating unnecessary work, reducing network calls
(including SQL and Gitaly), and optimizing processor time can yield significant
diff --git a/doc/development/secure_coding_guidelines.md b/doc/development/secure_coding_guidelines.md
index 74f65034383..fc60c1d7d7f 100644
--- a/doc/development/secure_coding_guidelines.md
+++ b/doc/development/secure_coding_guidelines.md
@@ -49,7 +49,7 @@ Each time you implement a new feature/endpoint, whether it is at UI, API or Grap
- Do not forget **abuse cases**: write specs that **make sure certain things can't happen**
- A lot of specs are making sure things do happen and coverage percentage doesn't take into account permissions as same piece of code is used.
- Make assertions that certain actors cannot perform actions
-- Naming convention to ease auditability: to be defined, e.g. a subfolder containing those specific permission tests or a `#permissions` block
+- Naming convention to ease auditability: to be defined, for example, a subfolder containing those specific permission tests or a `#permissions` block
Be careful to **also test [visibility levels](https://gitlab.com/gitlab-org/gitlab-foss/-/blob/master/doc/development/permissions.md#feature-specific-permissions)** and not only project access rights.
@@ -59,13 +59,13 @@ Some example of well implemented access controls and tests:
1. [example2](https://dev.gitlab.org/gitlab/gitlabhq/-/merge_requests/2511/diffs#ed3aaab1510f43b032ce345909a887e5b167e196_142_155)
1. [example3](https://dev.gitlab.org/gitlab/gitlabhq/-/merge_requests/3170/diffs?diff_id=17494)
-**NB:** any input from development team is welcome, e.g. about Rubocop rules.
+**NB:** any input from development team is welcome, for example, about Rubocop rules.
## Regular Expressions guidelines
### Anchors / Multi line
-Unlike other programming languages (e.g. Perl or Python) Regular Expressions are matching multi-line by default in Ruby. Consider the following example in Python:
+Unlike other programming languages (for example, Perl or Python) Regular Expressions are matching multi-line by default in Ruby. Consider the following example in Python:
```python
import re
diff --git a/doc/development/serializing_data.md b/doc/development/serializing_data.md
index f5924a44753..48e756d015b 100644
--- a/doc/development/serializing_data.md
+++ b/doc/development/serializing_data.md
@@ -35,7 +35,7 @@ turn there's no way to query the data at all.
## Waste Of Space
Storing serialized data such as JSON or YAML will end up wasting a lot of space.
-This is because these formats often include additional characters (e.g. double
+This is because these formats often include additional characters (for example, double
quotes or newlines) besides the data that you are storing.
## Difficult To Manage
@@ -69,9 +69,9 @@ can easily take hours or even days to complete.
## Relational Databases Are Not Document Stores
When storing data as JSON or YAML you're essentially using your database as if
-it were a document store (e.g. MongoDB), except you're not using any of the
+it were a document store (for example, MongoDB), except you're not using any of the
powerful features provided by a typical RDBMS _nor_ are you using any of the
-features provided by a typical document store (e.g. the ability to index fields
+features provided by a typical document store (for example, the ability to index fields
of documents with variable fields). In other words, it's a waste.
## Consistent Fields
diff --git a/doc/development/service_ping/dictionary.md b/doc/development/service_ping/dictionary.md
new file mode 100644
index 00000000000..153c385c4bb
--- /dev/null
+++ b/doc/development/service_ping/dictionary.md
@@ -0,0 +1,23249 @@
+---
+stage: Growth
+group: Product Intelligence
+info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://about.gitlab.com/handbook/engineering/ux/technical-writing/#designated-technical-writers
+---
+
+<!---
+ This documentation is auto generated by a script.
+
+ Please do not edit this file directly, check generate_metrics_dictionary task on lib/tasks/gitlab/usage_data.rake.
+--->
+
+# Metrics Dictionary
+
+This file is autogenerated, please do not edit directly.
+
+To generate these files from the GitLab repository, run:
+
+```shell
+bundle exec rake gitlab:usage_data:generate_metrics_dictionary
+```
+
+The Metrics Dictionary is based on the following metrics definition YAML files:
+
+- [`config/metrics`](https://gitlab.com/gitlab-org/gitlab/-/tree/master/config/metrics)
+- [`ee/config/metrics`](https://gitlab.com/gitlab-org/gitlab/-/tree/master/ee/config/metrics)
+
+Each table includes a `milestone`, which corresponds to the GitLab version when the metric
+was released.
+
+<!-- vale off -->
+<!-- Docs linting disabled after this line. -->
+<!-- See https://docs.gitlab.com/ee/development/documentation/testing.html#disable-vale-tests -->
+
+## Metrics Definitions
+
+### `active_user_count`
+
+The number of active users existing in the instance. This is named the instance_user_count in the Versions application.
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/license/20210204124829_active_user_count.yml)
+
+Group: `group::product intelligence`
+
+Data Category: `Subscription`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `analytics_unique_visits.analytics_unique_visits_for_any_target`
+
+Unique visitors to any analytics feature by week
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216174908_analytics_unique_visits_for_any_target.yml)
+
+Group: `group::optimize`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`
+
+### `analytics_unique_visits.analytics_unique_visits_for_any_target_monthly`
+
+Unique visitors to any analytics feature by month
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216174910_analytics_unique_visits_for_any_target_monthly.yml)
+
+Group: `group::optimize`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`
+
+### `analytics_unique_visits.g_analytics_contribution`
+
+Unique visitors to /groups/:group/-/contribution_analytics
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_all/20210216174836_g_analytics_contribution.yml)
+
+Group: `group::optimize`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`
+
+### `analytics_unique_visits.g_analytics_insights`
+
+Unique visitors to /groups/:group/-/insights
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_all/20210216174838_g_analytics_insights.yml)
+
+Group: `group::optimize`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`
+
+### `analytics_unique_visits.g_analytics_issues`
+
+Unique visitors to /groups/:group/-/issues_analytics
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_all/20210216174840_g_analytics_issues.yml)
+
+Group: `group::optimize`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`
+
+### `analytics_unique_visits.g_analytics_merge_request`
+
+Unique visitors to /groups/:group/-/analytics/merge_request_analytics
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216174902_g_analytics_merge_request.yml)
+
+Group: `group::optimize`
+
+Data Category: `Optional`
+
+Status: `removed`
+
+Tiers: `free`
+
+### `analytics_unique_visits.g_analytics_productivity`
+
+Unique visitors to /groups/:group/-/analytics/productivity_analytics
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_all/20210216174842_g_analytics_productivity.yml)
+
+Group: `group::optimize`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`
+
+### `analytics_unique_visits.g_analytics_valuestream`
+
+Unique visitors to /groups/:group/-/analytics/value_stream_analytics
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_all/20210216174844_g_analytics_valuestream.yml)
+
+Group: `group::optimize`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`
+
+### `analytics_unique_visits.i_analytics_cohorts`
+
+Unique visitors to /-/instance_statistics/cohorts
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216174858_i_analytics_cohorts.yml)
+
+Group: `group::optimize`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`
+
+### `analytics_unique_visits.i_analytics_dev_ops_adoption`
+
+Missing description
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210423005644_i_analytics_dev_ops_adoption.yml)
+
+Group: ``
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers:
+
+### `analytics_unique_visits.i_analytics_dev_ops_score`
+
+Unique visitors to /-/instance_statistics/dev_ops_score
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216174900_i_analytics_dev_ops_score.yml)
+
+Group: `group::optimize`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`
+
+### `analytics_unique_visits.i_analytics_instance_statistics`
+
+Unique visitors to/admin/usage_trends
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216174906_i_analytics_instance_statistics.yml)
+
+Group: `group::optimize`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`
+
+### `analytics_unique_visits.p_analytics_code_reviews`
+
+Unique visitors to /:group/:project/-/analytics/code_reviews
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_all/20210216174848_p_analytics_code_reviews.yml)
+
+Group: `group::optimize`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`
+
+### `analytics_unique_visits.p_analytics_insights`
+
+Unique visitors to /:group/:project/insights
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_all/20210216174852_p_analytics_insights.yml)
+
+Group: `group::optimize`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`
+
+### `analytics_unique_visits.p_analytics_issues`
+
+Unique visitors to /:group/:project/-/analytics/issues_analytics
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_all/20210216174854_p_analytics_issues.yml)
+
+Group: `group::optimize`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`
+
+### `analytics_unique_visits.p_analytics_merge_request`
+
+Unique visitors to /:group/:project/-/analytics/merge_request_analytics
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_all/20210216174904_p_analytics_merge_request.yml)
+
+Group: `group::optimize`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`
+
+### `analytics_unique_visits.p_analytics_pipelines`
+
+Unique visitors to /:group/:project/pipelines/charts
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216174846_p_analytics_pipelines.yml)
+
+Group: `group::optimize`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`
+
+### `analytics_unique_visits.p_analytics_repo`
+
+Unique visitors to /:group/:project/-/graphs/master/charts
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216174856_p_analytics_repo.yml)
+
+Group: `group::optimize`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`
+
+### `analytics_unique_visits.p_analytics_valuestream`
+
+Unique visitors to /:group/:project/-/value_stream_analytics
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216174850_p_analytics_valuestream.yml)
+
+Group: `group::optimize`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`
+
+### `analytics_unique_visits.users_viewing_analytics_group_devops_adoption`
+
+Missing description
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210428142406_users_viewing_analytics_group_devops_adoption.yml)
+
+Group: ``
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `compliance_unique_visits.a_compliance_audit_events_api`
+
+Unique users that have used the Audit Events API.
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_all/20210216183912_a_compliance_audit_events_api.yml)
+
+Group: `group::compliance`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `premium`, `ultimate`
+
+### `compliance_unique_visits.compliance_unique_visits_for_any_target`
+
+Number of unique visits to any compliance page
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_all/20210216183914_compliance_unique_visits_for_any_target.yml)
+
+Group: `group::compliance`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `premium`, `ultimate`
+
+### `compliance_unique_visits.compliance_unique_visits_for_any_target_monthly`
+
+Number of unique visits to any compliance page over a given month
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_28d/20210216183916_compliance_unique_visits_for_any_target_monthly.yml)
+
+Group: `group::compliance`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `premium`, `ultimate`
+
+### `compliance_unique_visits.g_compliance_audit_events`
+
+Unique users who have viewed audit events
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_all/20210216183906_g_compliance_audit_events.yml)
+
+Group: `group::compliance`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `premium`, `ultimate`
+
+### `compliance_unique_visits.g_compliance_dashboard`
+
+Number of unique visitors to the compliance dashboard.
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_all/20210216183904_g_compliance_dashboard.yml)
+
+Group: `group::compliance`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `premium`, `ultimate`
+
+### `compliance_unique_visits.i_compliance_audit_events`
+
+Unique users that have viewed the instance-level audit events screen
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_all/20210216183908_i_compliance_audit_events.yml)
+
+Group: `group::compliance`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `premium`, `ultimate`
+
+### `compliance_unique_visits.i_compliance_credential_inventory`
+
+Unique users who have viewed the credential inventory
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_all/20210216183910_i_compliance_credential_inventory.yml)
+
+Group: `group::compliance`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `ultimate`
+
+### `container_registry_enabled`
+
+A count of projects where the container registry is enabled
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/settings/20210204124858_container_registry_enabled.yml)
+
+Group: `group::package`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `container_registry_server.vendor`
+
+Identifies if a user is using an external container registry and what type
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216181051_vendor.yml)
+
+Group: `group::package`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `container_registry_server.version`
+
+Identifies the version of the external registry being used
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/license/20210216181053_version.yml)
+
+Group: `group::package`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.alert_bot_incident_issues`
+
+Count of issues created by the alert bot automatically
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216180449_alert_bot_incident_issues.yml)
+
+Group: `group::monitor`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.all_searches`
+
+Total Searches for All Basic Search and Advanced Search in self-managed and SaaS
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216180413_all_searches.yml)
+
+Group: `group::global search`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.api_fuzzing_dnd_jobs`
+
+Count of API Fuzzing `docker-in-docker` jobs run by job name
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216180346_api_fuzzing_dnd_jobs.yml)
+
+Group: `group::fuzz testing`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`
+
+### `counts.api_fuzzing_jobs`
+
+Count of API Fuzzing jobs run by job name
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216180344_api_fuzzing_jobs.yml)
+
+Group: `group::fuzz testing`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`
+
+### `counts.assignee_lists`
+
+Count of assignee lists created on Boards
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_all/20210216181100_assignee_lists.yml)
+
+Group: `group::project management`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `premium`, `ultimate`
+
+### `counts.auto_devops_disabled`
+
+Projects with Auto DevOps template disabled
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216175231_auto_devops_disabled.yml)
+
+Group: `group::configure`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`
+
+### `counts.auto_devops_enabled`
+
+Projects with Auto DevOps template enabled (excluding implicit Auto DevOps enabled and Auto DevOps template includes)
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216175229_auto_devops_enabled.yml)
+
+Group: `group::configure`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.boards`
+
+Count of Boards created
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216181252_boards.yml)
+
+Group: `group::project management`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.ci_builds`
+
+Unique builds in project
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216175510_ci_builds.yml)
+
+Group: `group::pipeline execution`
+
+Data Category: `Operational`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.ci_external_pipelines`
+
+Total pipelines in external repositories
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216175514_ci_external_pipelines.yml)
+
+Group: `group::pipeline execution`
+
+Data Category: `Operational`
+
+Status: `data_available`
+
+Tiers: `free`
+
+### `counts.ci_internal_pipelines`
+
+Total pipelines in GitLab repositories
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216175512_ci_internal_pipelines.yml)
+
+Group: `group::pipeline execution`
+
+Data Category: `Operational`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.ci_pipeline_config_auto_devops`
+
+Total pipelines from an Auto DevOps template
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216175516_ci_pipeline_config_auto_devops.yml)
+
+Group: `group::configure`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.ci_pipeline_config_repository`
+
+Total Pipelines from templates in repository
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216175518_ci_pipeline_config_repository.yml)
+
+Group: `group::pipeline execution`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.ci_pipeline_schedules`
+
+Pipeline schedules in GitLab
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216175523_ci_pipeline_schedules.yml)
+
+Group: `group::pipeline execution`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.ci_runners`
+
+Total configured Runners in project
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216175520_ci_runners.yml)
+
+Group: `group::pipeline execution`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.ci_runners_group_type_active`
+
+Total active instance Runners
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210502050341_ci_runners_group_type_active.yml)
+
+Group: `group::pipeline execution`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.ci_runners_group_type_active_online`
+
+Total active and online group Runners
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210502051922_ci_runners_group_type_active_online.yml)
+
+Group: `group::pipeline execution`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.ci_runners_instance_type_active`
+
+Total active group Runners
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210502045402_ci_runners_instance_type_active.yml)
+
+Group: `group::pipeline execution`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.ci_runners_instance_type_active_online`
+
+Total active and online instance Runners
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210502051651_ci_runners_instance_type_active_online.yml)
+
+Group: `group::pipeline execution`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.ci_runners_online`
+
+Total online Runners
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210502050942_ci_runners_online.yml)
+
+Group: `group::pipeline execution`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.ci_runners_project_type_active`
+
+Total active project Runners
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210502050834_ci_runners_project_type_active.yml)
+
+Group: `group::pipeline execution`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.ci_runners_project_type_active_online`
+
+Total active and online project Runners
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210502052036_ci_runners_project_type_active_online.yml)
+
+Group: `group::pipeline execution`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.ci_triggers`
+
+Total configured Triggers in project
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216175521_ci_triggers.yml)
+
+Group: `group::pipeline execution`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.clusters`
+
+Total GitLab Managed clusters both enabled and disabled
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216175232_clusters.yml)
+
+Group: `group::configure`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.clusters_applications_cert_managers`
+
+Total GitLab Managed clusters with GitLab Managed App:Cert Manager installed
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216175259_clusters_applications_cert_managers.yml)
+
+Group: `group::configure`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.clusters_applications_cilium`
+
+Total GitLab Managed clusters with GitLab Managed App:Cilium installed
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216175312_clusters_applications_cilium.yml)
+
+Group: `group::configure`
+
+Data Category: `Operational`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.clusters_applications_crossplane`
+
+Total GitLab Managed clusters with GitLab Managed App:Crossplane installed
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216175301_clusters_applications_crossplane.yml)
+
+Group: `group::configure`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.clusters_applications_elastic_stack`
+
+Total GitLab Managed clusters with GitLab Managed App:Elastic Stack installed
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216175309_clusters_applications_elastic_stack.yml)
+
+Group: `group::configure`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.clusters_applications_helm`
+
+Total GitLab Managed clusters with GitLab Managed App:Helm enabled
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216175255_clusters_applications_helm.yml)
+
+Group: `group::configure`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.clusters_applications_ingress`
+
+Total GitLab Managed clusters with GitLab Managed App:Ingress installed
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216175257_clusters_applications_ingress.yml)
+
+Group: `group::configure`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.clusters_applications_jupyter`
+
+Total GitLab Managed clusters with GitLab Managed App:Jupyter installed
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216175310_clusters_applications_jupyter.yml)
+
+Group: `group::configure`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.clusters_applications_knative`
+
+Total GitLab Managed clusters with GitLab Managed App:Knative installed
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216175307_clusters_applications_knative.yml)
+
+Group: `group::configure`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.clusters_applications_prometheus`
+
+Total GitLab Managed clusters with GitLab Managed App:Prometheus installed
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216175303_clusters_applications_prometheus.yml)
+
+Group: `group::configure`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.clusters_applications_runner`
+
+Total GitLab Managed clusters with GitLab Managed App:Runner installed
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216175305_clusters_applications_runner.yml)
+
+Group: `group::configure`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.clusters_disabled`
+
+Number of Kubernetes clusters attached to GitLab currently disabled
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216175242_clusters_disabled.yml)
+
+Group: `group::configure`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.clusters_enabled`
+
+Number of Kubernetes clusters attached to GitLab currently enabled
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216175234_clusters_enabled.yml)
+
+Group: `group::configure`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.clusters_management_project`
+
+Total GitLab Managed clusters with defined cluster management project
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216175314_clusters_management_project.yml)
+
+Group: `group::configure`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.clusters_platforms_eks`
+
+Total GitLab Managed clusters provisioned with GitLab on AWS EKS
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216175250_clusters_platforms_eks.yml)
+
+Group: `group::configure`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.clusters_platforms_gke`
+
+Total GitLab Managed clusters provisioned with GitLab on GCE GKE
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216175251_clusters_platforms_gke.yml)
+
+Group: `group::configure`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.clusters_platforms_user`
+
+Total GitLab Managed clusters that are user provisioned
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216175253_clusters_platforms_user.yml)
+
+Group: `group::configure`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.commit_comment`
+
+Count of total unique commit comments. Does not include MR diff comments
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216182004_commit_comment.yml)
+
+Group: `group::source code`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.confidential_epics`
+
+Count of confidential epics
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_all/20210216181205_confidential_epics.yml)
+
+Group: `group::product planning`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `premium`, `ultimate`
+
+### `counts.container_scanning_jobs`
+
+Count of Container Scanning jobs run
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_all/20210216175458_container_scanning_jobs.yml)
+
+Group: `group::container security`
+
+Data Category: `Operational`
+
+Status: `data_available`
+
+Tiers: `ultimate`
+
+### `counts.coverage_fuzzing_jobs`
+
+Missing description
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216183146_coverage_fuzzing_jobs.yml)
+
+Group: ``
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`
+
+### `counts.cycle_analytics_views`
+
+Total visits to VSA (both group- and project-level) all time
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216174832_cycle_analytics_views.yml)
+
+Group: `group::optimize`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.dast_jobs`
+
+Count of DAST jobs run
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216175612_dast_jobs.yml)
+
+Group: `group::dynamic analysis`
+
+Data Category: `Operational`
+
+Status: `data_available`
+
+Tiers: `free`
+
+### `counts.dast_on_demand_pipelines`
+
+Missing description
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216183149_dast_on_demand_pipelines.yml)
+
+Group: ``
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`
+
+### `counts.dependency_list_usages_total`
+
+Count to Dependency List page views
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_all/20210216175211_dependency_list_usages_total.yml)
+
+Group: `group::composition analysis`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `ultimate`
+
+### `counts.dependency_scanning_jobs`
+
+Count of Dependency Scanning jobs run
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_all/20210216175213_dependency_scanning_jobs.yml)
+
+Group: `group::composition analysis`
+
+Data Category: `Operational`
+
+Status: `data_available`
+
+Tiers: `ultimate`
+
+### `counts.deploy_keys`
+
+Missing description
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216181908_deploy_keys.yml)
+
+Group: `group::release`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`
+
+### `counts.deployments`
+
+Total deployments count
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210201124934_deployments.yml)
+
+Group: `group::ops release`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.design_management_designs_create`
+
+Number of designs that were created
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216180740_design_management_designs_create.yml)
+
+Group: `group::product planning`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.design_management_designs_delete`
+
+Number of designs that were deleted
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216180743_design_management_designs_delete.yml)
+
+Group: `group::product planning`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.design_management_designs_update`
+
+Number of updates to designs
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216180741_design_management_designs_update.yml)
+
+Group: `group::product planning`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.environments`
+
+Total available and stopped environments
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216181914_environments.yml)
+
+Group: `group::release`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`
+
+### `counts.epic_issues`
+
+Count of issues that are assigned to an epic
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_all/20210216181208_epic_issues.yml)
+
+Group: `group::product planning`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `premium`, `ultimate`
+
+### `counts.epics`
+
+Count of all epics
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_all/20210216181206_epics.yml)
+
+Group: `group::product planning`
+
+Data Category: `Operational`
+
+Status: `data_available`
+
+Tiers: `premium`, `ultimate`
+
+### `counts.epics_deepest_relationship_level`
+
+Count of the deepest relationship level for epics
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_all/20210216181212_epics_deepest_relationship_level.yml)
+
+Group: `group::product planning`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `ultimate`
+
+### `counts.failed_deployments`
+
+Total failed deployments
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216181912_failed_deployments.yml)
+
+Group: `group::release`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`
+
+### `counts.feature_flags`
+
+Number of feature flag toggles
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216181249_feature_flags.yml)
+
+Group: `group::progressive delivery`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`
+
+### `counts.geo_event_log_max_id`
+
+Number of replication events on a Geo primary
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_all/20210216180405_geo_event_log_max_id.yml)
+
+Group: `group::geo`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `premium`, `ultimate`
+
+### `counts.geo_nodes`
+
+Total number of sites in a Geo deployment
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_all/20210201124936_geo_nodes.yml)
+
+Group: `group::geo`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `premium`, `ultimate`
+
+### `counts.grafana_integrated_projects`
+
+Total Grafana integrations attached to projects
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216180927_grafana_integrated_projects.yml)
+
+Group: `group::monitor`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`
+
+### `counts.group_clusters_disabled`
+
+Total GitLab Managed disabled clusters previously attached to groups
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216175246_group_clusters_disabled.yml)
+
+Group: `group::configure`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.group_clusters_enabled`
+
+Total GitLab Managed clusters attached to groups
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216175238_group_clusters_enabled.yml)
+
+Group: `group::configure`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.groups`
+
+Total count of groups as of usage ping snapshot
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216180750_groups.yml)
+
+Group: `group::access`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.groups_asana_active`
+
+Count of groups with active integrations for Asana
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216175625_groups_asana_active.yml)
+
+Group: `group::ecosystem`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.groups_assembla_active`
+
+Count of groups with active integrations for Assembla
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216175636_groups_assembla_active.yml)
+
+Group: `group::ecosystem`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.groups_bamboo_active`
+
+Count of groups with active integrations for Bamboo CI
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216175647_groups_bamboo_active.yml)
+
+Group: `group::ecosystem`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.groups_bugzilla_active`
+
+Count of groups with active integrations for Bugzilla
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216175659_groups_bugzilla_active.yml)
+
+Group: `group::ecosystem`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.groups_buildkite_active`
+
+Count of groups with active integrations for Buildkite
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216175710_groups_buildkite_active.yml)
+
+Group: `group::ecosystem`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.groups_campfire_active`
+
+Count of groups with active integrations for Campfire
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216175721_groups_campfire_active.yml)
+
+Group: `group::ecosystem`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.groups_confluence_active`
+
+Count of groups with active integrations for Confluence
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216175733_groups_confluence_active.yml)
+
+Group: `group::ecosystem`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.groups_custom_issue_tracker_active`
+
+Count of groups with active integrations for a Custom Issue Tracker
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216175744_groups_custom_issue_tracker_active.yml)
+
+Group: `group::ecosystem`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.groups_datadog_active`
+
+Count of groups with active integrations for Datadog
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216182549_groups_datadog_active.yml)
+
+Group: `group::ecosystem`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.groups_discord_active`
+
+Count of groups with active integrations for Discord
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216175755_groups_discord_active.yml)
+
+Group: `group::ecosystem`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.groups_drone_ci_active`
+
+Count of groups with active integrations for Drone CI
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216175806_groups_drone_ci_active.yml)
+
+Group: `group::ecosystem`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.groups_emails_on_push_active`
+
+Count of groups with active integrations for Emails on Push
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216175817_groups_emails_on_push_active.yml)
+
+Group: `group::ecosystem`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.groups_ewm_active`
+
+Count of groups with active integrations for EWM
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216182616_groups_ewm_active.yml)
+
+Group: `group::ecosystem`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.groups_external_wiki_active`
+
+Count of groups with active integrations for External Wiki
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216175828_groups_external_wiki_active.yml)
+
+Group: `group::ecosystem`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.groups_flowdock_active`
+
+Count of groups with active integrations for Flowdock
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216175839_groups_flowdock_active.yml)
+
+Group: `group::ecosystem`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.groups_github_active`
+
+Count of groups with active integrations for GitHub
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_all/20210216175850_groups_github_active.yml)
+
+Group: `group::ecosystem`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `premium`, `ultimate`
+
+### `counts.groups_hangouts_chat_active`
+
+Count of groups with active integrations for Hangouts Chat
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216175901_groups_hangouts_chat_active.yml)
+
+Group: `group::ecosystem`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.groups_hipchat_active`
+
+Count of groups with active integrations for HipChat
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216175912_groups_hipchat_active.yml)
+
+Group: `group::ecosystem`
+
+Data Category: `Optional`
+
+Status: `removed`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.groups_inheriting_asana_active`
+
+Count of active groups inheriting integrations for Asana
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216175632_groups_inheriting_asana_active.yml)
+
+Group: `group::ecosystem`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.groups_inheriting_assembla_active`
+
+Count of active groups inheriting integrations for Assembla
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216175644_groups_inheriting_assembla_active.yml)
+
+Group: `group::ecosystem`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.groups_inheriting_bamboo_active`
+
+Count of active groups inheriting integrations for Bamboo CI
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216175655_groups_inheriting_bamboo_active.yml)
+
+Group: `group::ecosystem`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.groups_inheriting_bugzilla_active`
+
+Count of active groups inheriting integrations for Bugzilla
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216175706_groups_inheriting_bugzilla_active.yml)
+
+Group: `group::ecosystem`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.groups_inheriting_buildkite_active`
+
+Count of active groups inheriting integrations for Buildkite
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216175717_groups_inheriting_buildkite_active.yml)
+
+Group: `group::ecosystem`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.groups_inheriting_campfire_active`
+
+Count of active groups inheriting integrations for Campfire
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216175729_groups_inheriting_campfire_active.yml)
+
+Group: `group::ecosystem`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.groups_inheriting_confluence_active`
+
+Count of active groups inheriting integrations for Confluence
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216175740_groups_inheriting_confluence_active.yml)
+
+Group: `group::ecosystem`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.groups_inheriting_custom_issue_tracker_active`
+
+Count of active groups inheriting integrations for a Custom Issue Tracker
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216175751_groups_inheriting_custom_issue_tracker_active.yml)
+
+Group: `group::ecosystem`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.groups_inheriting_datadog_active`
+
+Count of active groups inheriting integrations for Datadog
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216182557_groups_inheriting_datadog_active.yml)
+
+Group: `group::ecosystem`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.groups_inheriting_discord_active`
+
+Count of active groups inheriting integrations for Discord
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216175802_groups_inheriting_discord_active.yml)
+
+Group: `group::ecosystem`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.groups_inheriting_drone_ci_active`
+
+Count of active groups inheriting integrations for Drone CI
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216175813_groups_inheriting_drone_ci_active.yml)
+
+Group: `group::ecosystem`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.groups_inheriting_emails_on_push_active`
+
+Count of active groups inheriting integrations for Emails on Push
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216175824_groups_inheriting_emails_on_push_active.yml)
+
+Group: `group::ecosystem`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.groups_inheriting_ewm_active`
+
+Count of active groups inheriting integrations for EWM
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216182623_groups_inheriting_ewm_active.yml)
+
+Group: `group::ecosystem`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.groups_inheriting_external_wiki_active`
+
+Count of active groups inheriting integrations for External Wiki
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216175835_groups_inheriting_external_wiki_active.yml)
+
+Group: `group::ecosystem`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.groups_inheriting_flowdock_active`
+
+Count of active groups inheriting integrations for Flowdock
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216175846_groups_inheriting_flowdock_active.yml)
+
+Group: `group::ecosystem`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.groups_inheriting_github_active`
+
+Count of active groups inheriting integrations for GitHub
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_all/20210216175857_groups_inheriting_github_active.yml)
+
+Group: `group::ecosystem`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `premium`, `ultimate`
+
+### `counts.groups_inheriting_hangouts_chat_active`
+
+Count of active groups inheriting integrations for Hangouts Chat
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216175908_groups_inheriting_hangouts_chat_active.yml)
+
+Group: `group::ecosystem`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.groups_inheriting_hipchat_active`
+
+Count of active groups inheriting integrations for HipChat
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216175919_groups_inheriting_hipchat_active.yml)
+
+Group: `group::ecosystem`
+
+Data Category: `Optional`
+
+Status: `removed`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.groups_inheriting_irker_active`
+
+Count of active groups inheriting integrations for Irker
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216175930_groups_inheriting_irker_active.yml)
+
+Group: `group::ecosystem`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.groups_inheriting_jenkins_active`
+
+Count of active groups inheriting integrations for Jenkins
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216175941_groups_inheriting_jenkins_active.yml)
+
+Group: `group::ecosystem`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.groups_inheriting_jira_active`
+
+Count of active groups inheriting integrations for Jira
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216175952_groups_inheriting_jira_active.yml)
+
+Group: `group::ecosystem`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.groups_inheriting_mattermost_active`
+
+Count of active groups inheriting integrations for Mattermost
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216180003_groups_inheriting_mattermost_active.yml)
+
+Group: `group::ecosystem`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.groups_inheriting_mattermost_slash_commands_active`
+
+Count of active groups inheriting integrations for Mattermost (slash commands)
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216180014_groups_inheriting_mattermost_slash_commands_active.yml)
+
+Group: `group::ecosystem`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.groups_inheriting_microsoft_teams_active`
+
+Count of active groups inheriting integrations for Microsoft Teams
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216180025_groups_inheriting_microsoft_teams_active.yml)
+
+Group: `group::ecosystem`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.groups_inheriting_mock_ci_active`
+
+Count of active groups inheriting integrations for Mock CI
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216182732_groups_inheriting_mock_ci_active.yml)
+
+Group: `group::ecosystem`
+
+Data Category: `Optional`
+
+Status: `removed`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.groups_inheriting_mock_monitoring_active`
+
+Count of active groups inheriting integrations for Mock Monitoring
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216182743_groups_inheriting_mock_monitoring_active.yml)
+
+Group: `group::ecosystem`
+
+Data Category: `Optional`
+
+Status: `removed`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.groups_inheriting_packagist_active`
+
+Count of active groups inheriting integrations for Packagist
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216180036_groups_inheriting_packagist_active.yml)
+
+Group: `group::ecosystem`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.groups_inheriting_pipelines_email_active`
+
+Count of active groups inheriting integrations for Pipeline Emails
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216180047_groups_inheriting_pipelines_email_active.yml)
+
+Group: `group::ecosystem`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.groups_inheriting_pivotaltracker_active`
+
+Count of active groups inheriting integrations for Pivotal Tracker
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216180058_groups_inheriting_pivotaltracker_active.yml)
+
+Group: `group::ecosystem`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.groups_inheriting_prometheus_active`
+
+Count of active groups inheriting integrations for Prometheus
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216180940_groups_inheriting_prometheus_active.yml)
+
+Group: `group::monitor`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.groups_inheriting_pushover_active`
+
+Count of active groups inheriting integrations for Pushover
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216180109_groups_inheriting_pushover_active.yml)
+
+Group: `group::ecosystem`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.groups_inheriting_redmine_active`
+
+Count of active groups inheriting integrations for Redmine
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216180120_groups_inheriting_redmine_active.yml)
+
+Group: `group::ecosystem`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.groups_inheriting_slack_active`
+
+Count of active groups inheriting integrations for Slack
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216180131_groups_inheriting_slack_active.yml)
+
+Group: `group::ecosystem`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.groups_inheriting_slack_slash_commands_active`
+
+Count of active groups inheriting integrations for Slack (slash commands)
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216180142_groups_inheriting_slack_slash_commands_active.yml)
+
+Group: `group::ecosystem`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.groups_inheriting_teamcity_active`
+
+Count of active groups inheriting integrations for Teamcity CI
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216180153_groups_inheriting_teamcity_active.yml)
+
+Group: `group::ecosystem`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.groups_inheriting_unify_circuit_active`
+
+Count of active groups inheriting integrations for Unifiy Circuit
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216180204_groups_inheriting_unify_circuit_active.yml)
+
+Group: `group::ecosystem`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.groups_inheriting_webex_teams_active`
+
+Count of active groups inheriting integrations for Webex Teams
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216180215_groups_inheriting_webex_teams_active.yml)
+
+Group: `group::ecosystem`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.groups_inheriting_youtrack_active`
+
+Count of active groups inheriting integrations for YouTrack
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216180226_groups_inheriting_youtrack_active.yml)
+
+Group: `group::ecosystem`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.groups_irker_active`
+
+Count of groups with active integrations for Irker
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216175923_groups_irker_active.yml)
+
+Group: `group::ecosystem`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.groups_jenkins_active`
+
+Count of groups with active integrations for Jenkins
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216175934_groups_jenkins_active.yml)
+
+Group: `group::ecosystem`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.groups_jira_active`
+
+Count of groups with active integrations for Jira
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216175945_groups_jira_active.yml)
+
+Group: `group::ecosystem`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.groups_mattermost_active`
+
+Count of groups with active integrations for Mattermost
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216175956_groups_mattermost_active.yml)
+
+Group: `group::ecosystem`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.groups_mattermost_slash_commands_active`
+
+Count of groups with active integrations for Mattermost (slash commands)
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216180006_groups_mattermost_slash_commands_active.yml)
+
+Group: `group::ecosystem`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.groups_microsoft_teams_active`
+
+Count of groups with active integrations for Microsoft Teams
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216180018_groups_microsoft_teams_active.yml)
+
+Group: `group::ecosystem`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.groups_mock_ci_active`
+
+Count of groups with active integrations for Mock CI
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216182724_groups_mock_ci_active.yml)
+
+Group: `group::ecosystem`
+
+Data Category: `Optional`
+
+Status: `removed`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.groups_mock_monitoring_active`
+
+Count of groups with active integrations for Mock Monitoring
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216182736_groups_mock_monitoring_active.yml)
+
+Group: `group::ecosystem`
+
+Data Category: `Optional`
+
+Status: `removed`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.groups_packagist_active`
+
+Count of groups with active integrations for Packagist
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216180029_groups_packagist_active.yml)
+
+Group: `group::ecosystem`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.groups_pipelines_email_active`
+
+Count of groups with active integrations for Pipeline Emails
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216180040_groups_pipelines_email_active.yml)
+
+Group: `group::ecosystem`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.groups_pivotaltracker_active`
+
+Count of groups with active integrations for Pivotal Tracker
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216180051_groups_pivotaltracker_active.yml)
+
+Group: `group::ecosystem`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.groups_prometheus_active`
+
+Count of groups with active integrations for Prometheus
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216180933_groups_prometheus_active.yml)
+
+Group: `group::monitor`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.groups_pushover_active`
+
+Count of groups with active integrations for Pushover
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216180102_groups_pushover_active.yml)
+
+Group: `group::ecosystem`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.groups_redmine_active`
+
+Count of groups with active integrations for Redmine
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216180113_groups_redmine_active.yml)
+
+Group: `group::ecosystem`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.groups_slack_active`
+
+Count of groups with active integrations for Slack
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216180124_groups_slack_active.yml)
+
+Group: `group::ecosystem`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.groups_slack_slash_commands_active`
+
+Count of groups with active integrations for Slack (slash commands)
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216180135_groups_slack_slash_commands_active.yml)
+
+Group: `group::ecosystem`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.groups_teamcity_active`
+
+Count of groups with active integrations for Teamcity CI
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216180146_groups_teamcity_active.yml)
+
+Group: `group::ecosystem`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.groups_unify_circuit_active`
+
+Count of groups with active integrations for Unifiy Circuit
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216180157_groups_unify_circuit_active.yml)
+
+Group: `group::ecosystem`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.groups_webex_teams_active`
+
+Count of groups with active integrations for Webex Teams
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216180208_groups_webex_teams_active.yml)
+
+Group: `group::ecosystem`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.groups_youtrack_active`
+
+Count of groups with active integrations for YouTrack
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216180219_groups_youtrack_active.yml)
+
+Group: `group::ecosystem`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.in_product_marketing_email_create_0_cta_clicked`
+
+Total clicks on the create track's first email
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210510201919_in_product_marketing_email_create_0_cta_clicked.yml)
+
+Group: `group::activation`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.in_product_marketing_email_create_0_sent`
+
+Total sent emails of the create track's first email
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210510201537_in_product_marketing_email_create_0_sent.yml)
+
+Group: `group::activation`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.in_product_marketing_email_create_1_cta_clicked`
+
+Total clicks on the create track's second email
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210510202356_in_product_marketing_email_create_1_cta_clicked.yml)
+
+Group: `group::activation`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.in_product_marketing_email_create_1_sent`
+
+Total sent emails of the create track's second email
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210510202148_in_product_marketing_email_create_1_sent.yml)
+
+Group: `group::activation`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.in_product_marketing_email_create_2_cta_clicked`
+
+Total clicks on the create track's third email
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210510202724_in_product_marketing_email_create_2_cta_clicked.yml)
+
+Group: `group::activation`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.in_product_marketing_email_create_2_sent`
+
+Total sent emails of the create track's third email
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210510202604_in_product_marketing_email_create_2_sent.yml)
+
+Group: `group::activation`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.in_product_marketing_email_experience_0_sent`
+
+Total sent emails of the experience track's first email
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210518081225_in_product_marketing_email_experience_0_sent.yml)
+
+Group: `group::activation`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.in_product_marketing_email_team_0_cta_clicked`
+
+Total clicks on the team track's first email
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210510203143_in_product_marketing_email_team_0_cta_clicked.yml)
+
+Group: `group::activation`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.in_product_marketing_email_team_0_sent`
+
+Total sent emails of the team track's first email
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210510203134_in_product_marketing_email_team_0_sent.yml)
+
+Group: `group::activation`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.in_product_marketing_email_team_1_cta_clicked`
+
+Total clicks on the team track's second email
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210510203203_in_product_marketing_email_team_1_cta_clicked.yml)
+
+Group: `group::activation`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.in_product_marketing_email_team_1_sent`
+
+Total sent emails of the team track's second email
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210510203153_in_product_marketing_email_team_1_sent.yml)
+
+Group: `group::activation`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.in_product_marketing_email_team_2_cta_clicked`
+
+Total clicks on the team track's third email
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210510203223_in_product_marketing_email_team_2_cta_clicked.yml)
+
+Group: `group::activation`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.in_product_marketing_email_team_2_sent`
+
+Total sent emails of the team track's third email
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210510203213_in_product_marketing_email_team_2_sent.yml)
+
+Group: `group::activation`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.in_product_marketing_email_trial_0_cta_clicked`
+
+Total clicks on the verify trial's first email
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210510203044_in_product_marketing_email_trial_0_cta_clicked.yml)
+
+Group: `group::activation`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.in_product_marketing_email_trial_0_sent`
+
+Total sent emails of the trial track's first email
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210510203035_in_product_marketing_email_trial_0_sent.yml)
+
+Group: `group::activation`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.in_product_marketing_email_trial_1_cta_clicked`
+
+Total clicks on the trial track's second email
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210510203104_in_product_marketing_email_trial_1_cta_clicked.yml)
+
+Group: `group::activation`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.in_product_marketing_email_trial_1_sent`
+
+Total sent emails of the trial track's second email
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210510203054_in_product_marketing_email_trial_1_sent.yml)
+
+Group: `group::activation`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.in_product_marketing_email_trial_2_cta_clicked`
+
+Total clicks on the trial track's third email
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210510203124_in_product_marketing_email_trial_2_cta_clicked.yml)
+
+Group: `group::activation`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.in_product_marketing_email_trial_2_sent`
+
+Total sent emails of the trial track's third email
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210510203114_in_product_marketing_email_trial_2_sent.yml)
+
+Group: `group::activation`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.in_product_marketing_email_verify_0_cta_clicked`
+
+Total clicks on the verify track's first email
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210510202943_in_product_marketing_email_verify_0_cta_clicked.yml)
+
+Group: `group::activation`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.in_product_marketing_email_verify_0_sent`
+
+Total sent emails of the verify track's first email
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210510202807_in_product_marketing_email_verify_0_sent.yml)
+
+Group: `group::activation`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.in_product_marketing_email_verify_1_cta_clicked`
+
+Total clicks on the verify track's second email
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210510203005_in_product_marketing_email_verify_1_cta_clicked.yml)
+
+Group: `group::activation`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.in_product_marketing_email_verify_1_sent`
+
+Total sent emails of the verify track's second email
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210510202955_in_product_marketing_email_verify_1_sent.yml)
+
+Group: `group::activation`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.in_product_marketing_email_verify_2_cta_clicked`
+
+Total clicks on the verify track's third email
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210510203025_in_product_marketing_email_verify_2_cta_clicked.yml)
+
+Group: `group::activation`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.in_product_marketing_email_verify_2_sent`
+
+Total sent emails of the verify track's third email
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210510203015_in_product_marketing_email_verify_2_sent.yml)
+
+Group: `group::activation`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.in_review_folder`
+
+Missing description
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216181916_in_review_folder.yml)
+
+Group: `group::release`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`
+
+### `counts.incident_issues`
+
+Count of incidents (issues where issue_type=incident)
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216180447_incident_issues.yml)
+
+Group: `group::monitor`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.incident_labeled_issues`
+
+Count of all issues with the label=incident
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216180451_incident_labeled_issues.yml)
+
+Group: `group::monitor`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.ingress_modsecurity_blocking`
+
+Whether or not ModSecurity is set to blocking mode
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216175452_ingress_modsecurity_blocking.yml)
+
+Group: `group::container security`
+
+Data Category: `Operational`
+
+Status: `removed`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.ingress_modsecurity_disabled`
+
+Whether or not ModSecurity is disabled within Ingress
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216175454_ingress_modsecurity_disabled.yml)
+
+Group: `group::container security`
+
+Data Category: `Operational`
+
+Status: `removed`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.ingress_modsecurity_logging`
+
+Whether or not ModSecurity is set to logging mode
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216175450_ingress_modsecurity_logging.yml)
+
+Group: `group::container security`
+
+Data Category: `Operational`
+
+Status: `removed`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.ingress_modsecurity_not_installed`
+
+Whether or not ModSecurity has not been installed into the cluster
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216175456_ingress_modsecurity_not_installed.yml)
+
+Group: `group::container security`
+
+Data Category: `Operational`
+
+Status: `removed`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.ingress_modsecurity_packets_anomalous`
+
+Cumulative count of packets identified as anomalous by ModSecurity since Usage Ping was last reported
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216175444_ingress_modsecurity_packets_anomalous.yml)
+
+Group: `group::container security`
+
+Data Category: `Operational`
+
+Status: `removed`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.ingress_modsecurity_packets_processed`
+
+Cumulative count of packets processed by ModSecurity since Usage Ping was last reported
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216175442_ingress_modsecurity_packets_processed.yml)
+
+Group: `group::container security`
+
+Data Category: `Operational`
+
+Status: `removed`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.ingress_modsecurity_statistics_unavailable`
+
+Whether or not ModSecurity statistics are unavailable
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_all/20210216175441_ingress_modsecurity_statistics_unavailable.yml)
+
+Group: `group::container security`
+
+Data Category: `Operational`
+
+Status: `removed`
+
+Tiers: `ultimate`
+
+### `counts.instance_clusters_disabled`
+
+Total GitLab Managed disabled clusters previously attached to the instance
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216175248_instance_clusters_disabled.yml)
+
+Group: `group::configure`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.instance_clusters_enabled`
+
+Total GitLab Managed clusters attached to the instance
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216175240_instance_clusters_enabled.yml)
+
+Group: `group::configure`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.instances_asana_active`
+
+Count of active instance-level integrations for Asana
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216175628_instances_asana_active.yml)
+
+Group: `group::ecosystem`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.instances_assembla_active`
+
+Count of active instance-level integrations for Assembla
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216175640_instances_assembla_active.yml)
+
+Group: `group::ecosystem`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.instances_bamboo_active`
+
+Count of active instance-level integrations for Bamboo CI
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216175651_instances_bamboo_active.yml)
+
+Group: `group::ecosystem`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.instances_bugzilla_active`
+
+Count of active instance-level integrations for Bugzilla
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216175702_instances_bugzilla_active.yml)
+
+Group: `group::ecosystem`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.instances_buildkite_active`
+
+Count of active instance-level integrations for Buildkite
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216175714_instances_buildkite_active.yml)
+
+Group: `group::ecosystem`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.instances_campfire_active`
+
+Count of active instance-level integrations for Campfire
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216175725_instances_campfire_active.yml)
+
+Group: `group::ecosystem`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.instances_confluence_active`
+
+Count of active instance-level integrations for Confluence
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216175736_instances_confluence_active.yml)
+
+Group: `group::ecosystem`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.instances_custom_issue_tracker_active`
+
+Count of active instance-level integrations for a Custom Issue Tracker
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216175747_instances_custom_issue_tracker_active.yml)
+
+Group: `group::ecosystem`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.instances_datadog_active`
+
+Count of active instance-level integrations for Datadog
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216182553_instances_datadog_active.yml)
+
+Group: `group::ecosystem`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.instances_discord_active`
+
+Count of active instance-level integrations for Discord
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216175758_instances_discord_active.yml)
+
+Group: `group::ecosystem`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.instances_drone_ci_active`
+
+Count of active instance-level integrations for Drone CI
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216175809_instances_drone_ci_active.yml)
+
+Group: `group::ecosystem`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.instances_emails_on_push_active`
+
+Count of active instance-level integrations for Emails on Push
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216175820_instances_emails_on_push_active.yml)
+
+Group: `group::ecosystem`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.instances_ewm_active`
+
+Count of active instance-level integrations for EWM
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216182620_instances_ewm_active.yml)
+
+Group: `group::ecosystem`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.instances_external_wiki_active`
+
+Count of active instance-level integrations for External Wiki
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216175831_instances_external_wiki_active.yml)
+
+Group: `group::ecosystem`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.instances_flowdock_active`
+
+Count of active instance-level integrations for Flowdock
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216175842_instances_flowdock_active.yml)
+
+Group: `group::ecosystem`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.instances_github_active`
+
+Count of active instance-level integrations for GitHub
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_all/20210216175853_instances_github_active.yml)
+
+Group: `group::ecosystem`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `premium`, `ultimate`
+
+### `counts.instances_hangouts_chat_active`
+
+Count of active instance-level integrations for Hangouts Chat
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216175904_instances_hangouts_chat_active.yml)
+
+Group: `group::ecosystem`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.instances_hipchat_active`
+
+Count of active instance-level integrations for HipChat
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216175915_instances_hipchat_active.yml)
+
+Group: `group::ecosystem`
+
+Data Category: `Optional`
+
+Status: `removed`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.instances_irker_active`
+
+Count of active instance-level integrations for Irker
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216175926_instances_irker_active.yml)
+
+Group: `group::ecosystem`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.instances_jenkins_active`
+
+Count of active instance-level integrations for Jenkins
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216175937_instances_jenkins_active.yml)
+
+Group: `group::ecosystem`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.instances_jira_active`
+
+Count of active instance-level integrations for Jira
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216175948_instances_jira_active.yml)
+
+Group: `group::ecosystem`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.instances_mattermost_active`
+
+Count of active instance-level integrations for Mattermost
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216175959_instances_mattermost_active.yml)
+
+Group: `group::ecosystem`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.instances_mattermost_slash_commands_active`
+
+Count of active instance-level integrations for Mattermost (slash commands)
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216180010_instances_mattermost_slash_commands_active.yml)
+
+Group: `group::ecosystem`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.instances_microsoft_teams_active`
+
+Count of active instance-level integrations for Microsoft Teams
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216180021_instances_microsoft_teams_active.yml)
+
+Group: `group::ecosystem`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.instances_mock_ci_active`
+
+Count of active instance-level integrations for Mock CI
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216182728_instances_mock_ci_active.yml)
+
+Group: `group::ecosystem`
+
+Data Category: `Optional`
+
+Status: `removed`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.instances_mock_monitoring_active`
+
+Count of active instance-level integrations for Mock Monitoring
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216182739_instances_mock_monitoring_active.yml)
+
+Group: `group::ecosystem`
+
+Data Category: `Optional`
+
+Status: `removed`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.instances_packagist_active`
+
+Count of active instance-level integrations for Packagist
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216180032_instances_packagist_active.yml)
+
+Group: `group::ecosystem`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.instances_pipelines_email_active`
+
+Count of active instance-level integrations for Pipeline Emails
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216180043_instances_pipelines_email_active.yml)
+
+Group: `group::ecosystem`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.instances_pivotaltracker_active`
+
+Count of active instance-level integrations for Pivotal Tracker
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216180054_instances_pivotaltracker_active.yml)
+
+Group: `group::ecosystem`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.instances_prometheus_active`
+
+Count of active instance-level integrations for Prometheus
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216180936_instances_prometheus_active.yml)
+
+Group: `group::monitor`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.instances_pushover_active`
+
+Count of active instance-level integrations for Pushover
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216180105_instances_pushover_active.yml)
+
+Group: `group::ecosystem`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.instances_redmine_active`
+
+Count of active instance-level integrations for Redmine
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216180116_instances_redmine_active.yml)
+
+Group: `group::ecosystem`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.instances_slack_active`
+
+Count of active instance-level integrations for Slack
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216180127_instances_slack_active.yml)
+
+Group: `group::ecosystem`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.instances_slack_slash_commands_active`
+
+Count of active instance-level integrations for Slack (slash commands)
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216180138_instances_slack_slash_commands_active.yml)
+
+Group: `group::ecosystem`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.instances_teamcity_active`
+
+Count of active instance-level integrations for Teamcity CI
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216180149_instances_teamcity_active.yml)
+
+Group: `group::ecosystem`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.instances_unify_circuit_active`
+
+Count of active instance-level integrations for Unifiy Circuit
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216180201_instances_unify_circuit_active.yml)
+
+Group: `group::ecosystem`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.instances_webex_teams_active`
+
+Count of active instance-level integrations for Webex Teams
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216180212_instances_webex_teams_active.yml)
+
+Group: `group::ecosystem`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.instances_youtrack_active`
+
+Count of active instance-level integrations for YouTrack
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216180223_instances_youtrack_active.yml)
+
+Group: `group::ecosystem`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.issues`
+
+Count of Issues created
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216181102_issues.yml)
+
+Group: `group::plan`
+
+Data Category: `Operational`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.issues_created_from_alerts`
+
+Count of issues created automatically on alerts from GitLab-Managed Prometheus
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216180441_issues_created_from_alerts.yml)
+
+Group: `group::monitor`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.issues_created_from_gitlab_error_tracking_ui`
+
+Count of issues manually created from the GitLab UI on Sentry errors
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216180434_issues_created_from_gitlab_error_tracking_ui.yml)
+
+Group: `group::monitor`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.issues_created_gitlab_alerts`
+
+Count of all issues created from GitLab alerts (bot and non-bot)
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216180443_issues_created_gitlab_alerts.yml)
+
+Group: `group::monitor`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.issues_created_manually_from_alerts`
+
+Count of issues created manually by non-bot users from GitLab alerts
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216180445_issues_created_manually_from_alerts.yml)
+
+Group: `group::monitor`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.issues_using_zoom_quick_actions`
+
+Count of issues where a user have added AND removed a zoom meeting using slash commands
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216180438_issues_using_zoom_quick_actions.yml)
+
+Group: `group::monitor`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.issues_with_associated_zoom_link`
+
+Count of issues where a user has linked a Zoom meeting
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216180436_issues_with_associated_zoom_link.yml)
+
+Group: `group::monitor`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.issues_with_embedded_grafana_charts_approx`
+
+Count of issues where a user has embedded a Grafana chart
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216180440_issues_with_embedded_grafana_charts_approx.yml)
+
+Group: `group::monitor`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.issues_with_health_status`
+
+Count of issues with health status
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_all/20210216181210_issues_with_health_status.yml)
+
+Group: `group::product planning`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `ultimate`
+
+### `counts.jira_imports_projects_count`
+
+Count of Projects that imported Issues from Jira
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216181259_jira_imports_projects_count.yml)
+
+Group: `group::ecosystem`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.jira_imports_total_imported_count`
+
+Count of Jira imports completed
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216181258_jira_imports_total_imported_count.yml)
+
+Group: `group::ecosystem`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.jira_imports_total_imported_issues_count`
+
+Count of total issues imported via the Jira Importer
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216181301_jira_imports_total_imported_issues_count.yml)
+
+Group: `group::ecosystem`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.keys`
+
+Number of keys.
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216180752_keys.yml)
+
+Group: `group::access`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.kubernetes_agent_gitops_sync`
+
+Count of events when an Agent is asked to synchronize the manifests or its configuration
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_all/20210216175328_kubernetes_agent_gitops_sync.yml)
+
+Group: `group::configure`
+
+Data Category: `Operational`
+
+Status: `data_available`
+
+Tiers: `premium`, `ultimate`
+
+### `counts.kubernetes_agent_k8s_api_proxy_request`
+
+Count of Kubernetes API proxy requests
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_all/20210505015532_kubernetes_agent_k8s_api_proxy_request.yml)
+
+Group: `group::configure`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `premium`, `ultimate`
+
+### `counts.kubernetes_agents`
+
+Count of Kubernetes registered agents
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_all/20210216175316_kubernetes_agents.yml)
+
+Group: `group::configure`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `premium`, `ultimate`
+
+### `counts.kubernetes_agents_with_token`
+
+Count of Kubernetes agents with at least one token
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_all/20210216175318_kubernetes_agents_with_token.yml)
+
+Group: `group::configure`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `premium`, `ultimate`
+
+### `counts.label_lists`
+
+Count of label lists created on Boards
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216181104_label_lists.yml)
+
+Group: `group::project management`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.labels`
+
+Count of Labels
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216181111_labels.yml)
+
+Group: `group::project management`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.ldap_group_links`
+
+Number of groups that are synced via LDAP group sync `https://docs.gitlab.com/ee/user/group/index.html#manage-group-memberships-via-ldap`
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_all/20210216174822_ldap_group_links.yml)
+
+Group: `group::access`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `premium`, `ultimate`
+
+### `counts.ldap_keys`
+
+Number of keys synced as part of LDAP `https://docs.gitlab.com/ee/administration/auth/ldap/#ldap-sync-configuration-settings`
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_all/20210216174824_ldap_keys.yml)
+
+Group: `group::access`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `premium`, `ultimate`
+
+### `counts.ldap_users`
+
+Number of users that are linked to LDAP
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_all/20210216174826_ldap_users.yml)
+
+Group: `group::access`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `premium`, `ultimate`
+
+### `counts.lfs_objects`
+
+Missing description
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216181009_lfs_objects.yml)
+
+Group: `group::create`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`
+
+### `counts.license_management_jobs`
+
+Count of License Scanning jobs run
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_all/20210204124854_license_management_jobs.yml)
+
+Group: `group::composition analysis`
+
+Data Category: `Subscription`
+
+Status: `data_available`
+
+Tiers: `ultimate`
+
+### `counts.licenses_list_views`
+
+Count to License List page views
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/license/20210216175210_licenses_list_views.yml)
+
+Group: `group::composition analysis`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `ultimate`
+
+### `counts.merge_request_comment`
+
+Count of the number of merge request comments
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216175041_merge_request_comment.yml)
+
+Group: `group::code review`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.merge_request_create`
+
+Count of the number of merge requests created
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216175043_merge_request_create.yml)
+
+Group: `group::code review`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.merge_requests`
+
+Count of the number of merge requests
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216175039_merge_requests.yml)
+
+Group: `group::code review`
+
+Data Category: `Operational`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.merged_merge_requests_using_approval_rules`
+
+Count of merge requests merged using approval rules
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216175206_merged_merge_requests_using_approval_rules.yml)
+
+Group: `group::compliance`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`
+
+### `counts.milestone_lists`
+
+Count of milestone lists created on Boards
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_all/20210216181106_milestone_lists.yml)
+
+Group: `group::project management`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `premium`, `ultimate`
+
+### `counts.milestones`
+
+Count of milestones created
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216181108_milestones.yml)
+
+Group: `group::project management`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.navbar_searches`
+
+Total Searches using the navbar for All Basic Search and Advanced Search in self-managed and SaaS
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216180414_navbar_searches.yml)
+
+Group: `group::global search`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.network_policy_drops`
+
+Cumulative count of packets dropped by Cilium (Container Network Security) since Usage Ping was last reported
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216175448_network_policy_drops.yml)
+
+Group: `group::container security`
+
+Data Category: `Operational`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.network_policy_forwards`
+
+Cumulative count of packets forwarded by Cilium (Container Network Security) since Usage Ping was last reported
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216175446_network_policy_forwards.yml)
+
+Group: `group::container security`
+
+Data Category: `Operational`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.notes`
+
+Count of Notes across all objects that use them
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216181113_notes.yml)
+
+Group: `group::project management`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.operations_dashboard_default_dashboard`
+
+Active users with enabled operations dashboard
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216180942_operations_dashboard_default_dashboard.yml)
+
+Group: `group::monitor`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.operations_dashboard_users_with_projects_added`
+
+Active users with projects on operations dashboard
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216180944_operations_dashboard_users_with_projects_added.yml)
+
+Group: `group::monitor`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.package_events_i_package_composer_delete_package`
+
+A count of Composer packages that have been deleted
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216182855_package_events_i_package_composer_delete_package.yml)
+
+Group: `group::package`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.package_events_i_package_composer_pull_package`
+
+A count of Composer packages that have been downloaded
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216182857_package_events_i_package_composer_pull_package.yml)
+
+Group: `group::package`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.package_events_i_package_composer_push_package`
+
+A count of Composer packages that have been published
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216182859_package_events_i_package_composer_push_package.yml)
+
+Group: `group::package`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.package_events_i_package_conan_delete_package`
+
+A count of Conan packages that have been deleted
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216182901_package_events_i_package_conan_delete_package.yml)
+
+Group: `group::package`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.package_events_i_package_conan_pull_package`
+
+A count of Conan packages that have been downloaded
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216182903_package_events_i_package_conan_pull_package.yml)
+
+Group: `group::package`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.package_events_i_package_conan_push_package`
+
+A count of Conan packages that have been published
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216182905_package_events_i_package_conan_push_package.yml)
+
+Group: `group::package`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.package_events_i_package_container_delete_package`
+
+A count of container images that have been deleted
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216182907_package_events_i_package_container_delete_package.yml)
+
+Group: `group::package`
+
+Data Category: `Optional`
+
+Status: `deprecated`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.package_events_i_package_container_pull_package`
+
+A count of container images that have been downloaded
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216182909_package_events_i_package_container_pull_package.yml)
+
+Group: `group::package`
+
+Data Category: `Optional`
+
+Status: `deprecated`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.package_events_i_package_container_push_package`
+
+A count of container images that have been published
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216182911_package_events_i_package_container_push_package.yml)
+
+Group: `group::package`
+
+Data Category: `Optional`
+
+Status: `deprecated`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.package_events_i_package_debian_delete_package`
+
+A count of Debian packages that have been deleted
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216182913_package_events_i_package_debian_delete_package.yml)
+
+Group: `group::package`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.package_events_i_package_debian_pull_package`
+
+A count of Debian packages that have been downloaded
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216182915_package_events_i_package_debian_pull_package.yml)
+
+Group: `group::package`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.package_events_i_package_debian_push_package`
+
+A count of Debian packages that have been published
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216182917_package_events_i_package_debian_push_package.yml)
+
+Group: `group::package`
+
+Data Category: `Optional`
+
+Status: `deprecated`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.package_events_i_package_delete_package`
+
+A count of packages that have been deleted
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216182919_package_events_i_package_delete_package.yml)
+
+Group: `group::package`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.package_events_i_package_delete_package_by_deploy_token`
+
+A count of packages that have been deleted using a Deploy Token
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216182921_package_events_i_package_delete_package_by_deploy_token.yml)
+
+Group: `group::package`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.package_events_i_package_delete_package_by_guest`
+
+A count of packages that have been deleted using a Guest
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216182923_package_events_i_package_delete_package_by_guest.yml)
+
+Group: `group::package`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.package_events_i_package_delete_package_by_user`
+
+A count of packages that have been deleted using a logged in user
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216182925_package_events_i_package_delete_package_by_user.yml)
+
+Group: `group::package`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.package_events_i_package_generic_delete_package`
+
+A count of generic packages that have been deleted
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216182927_package_events_i_package_generic_delete_package.yml)
+
+Group: `group::package`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.package_events_i_package_generic_pull_package`
+
+A count of generic packages that have been downloaded
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216182929_package_events_i_package_generic_pull_package.yml)
+
+Group: `group::package`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.package_events_i_package_generic_push_package`
+
+A count of generic packages that have been published
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216182931_package_events_i_package_generic_push_package.yml)
+
+Group: `group::package`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.package_events_i_package_golang_delete_package`
+
+A count of Go modules that have been deleted
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216182933_package_events_i_package_golang_delete_package.yml)
+
+Group: `group::package`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.package_events_i_package_golang_pull_package`
+
+A count of Go modules that have been downloaded
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216182934_package_events_i_package_golang_pull_package.yml)
+
+Group: `group::package`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.package_events_i_package_golang_push_package`
+
+A count of Go modules that have been published
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216182936_package_events_i_package_golang_push_package.yml)
+
+Group: `group::package`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.package_events_i_package_helm_pull_package`
+
+Total count of pull Helm packages events
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210517073546_package_events_i_package_helm_pull_package.yml)
+
+Group: `group::package`
+
+Data Category: `Optional`
+
+Status: `implemented`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.package_events_i_package_helm_push_package`
+
+The total count of Helm packages that have been published.
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210625095025_package_events_i_package_helm_push_package.yml)
+
+Group: `group::package`
+
+Status: `implemented`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.package_events_i_package_maven_delete_package`
+
+A count of Maven packages that have been deleted
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216182938_package_events_i_package_maven_delete_package.yml)
+
+Group: `group::package`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.package_events_i_package_maven_pull_package`
+
+A count of Maven packages that have been downloaded
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216182940_package_events_i_package_maven_pull_package.yml)
+
+Group: `group::package`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.package_events_i_package_maven_push_package`
+
+A count of Maven packages that have been published
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216182942_package_events_i_package_maven_push_package.yml)
+
+Group: `group::package`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.package_events_i_package_npm_delete_package`
+
+A count of npm packages that have been deleted
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216182944_package_events_i_package_npm_delete_package.yml)
+
+Group: `group::package`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.package_events_i_package_npm_pull_package`
+
+A count of npm packages that have been downloaded
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216182946_package_events_i_package_npm_pull_package.yml)
+
+Group: `group::package`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.package_events_i_package_npm_push_package`
+
+A count of npm packages that have been published
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216182948_package_events_i_package_npm_push_package.yml)
+
+Group: `group::package`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.package_events_i_package_nuget_delete_package`
+
+A count of NuGet packages that have been deleted
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216182950_package_events_i_package_nuget_delete_package.yml)
+
+Group: `group::package`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.package_events_i_package_nuget_pull_package`
+
+A count of NuGet packages that have been downloaded
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216182952_package_events_i_package_nuget_pull_package.yml)
+
+Group: `group::package`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.package_events_i_package_nuget_push_package`
+
+A count of NuGet packages that have been published
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216182954_package_events_i_package_nuget_push_package.yml)
+
+Group: `group::package`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.package_events_i_package_pull_package`
+
+A count of packages that have been downloaded from the package registry
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216182956_package_events_i_package_pull_package.yml)
+
+Group: `group::package`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.package_events_i_package_pull_package_by_deploy_token`
+
+A count of packages that have been downloaded from the package registry using a Deploy Token
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216182958_package_events_i_package_pull_package_by_deploy_token.yml)
+
+Group: `group::package`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.package_events_i_package_pull_package_by_guest`
+
+A count of packages that have been downloaded from the package registry by a guest
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216183000_package_events_i_package_pull_package_by_guest.yml)
+
+Group: `group::package`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.package_events_i_package_pull_package_by_user`
+
+A count of packages that have been downloaded from the package registry by a user
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216183002_package_events_i_package_pull_package_by_user.yml)
+
+Group: `group::package`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.package_events_i_package_push_package`
+
+A count of packages that have been published to the package registry
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216183004_package_events_i_package_push_package.yml)
+
+Group: `group::package`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.package_events_i_package_push_package_by_deploy_token`
+
+A count of packages that have been published to the package registry using a deploy token
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216183005_package_events_i_package_push_package_by_deploy_token.yml)
+
+Group: `group::package`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.package_events_i_package_push_package_by_guest`
+
+A count of packages that have been published to the package registry by a Guest
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216183007_package_events_i_package_push_package_by_guest.yml)
+
+Group: `group::package`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.package_events_i_package_push_package_by_user`
+
+A count of packages that have been published to the package registry by a user
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216183009_package_events_i_package_push_package_by_user.yml)
+
+Group: `group::package`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.package_events_i_package_pypi_delete_package`
+
+A count of Python packages that have been deleted from the package registry
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216183011_package_events_i_package_pypi_delete_package.yml)
+
+Group: `group::package`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.package_events_i_package_pypi_pull_package`
+
+A count of Python packages that have been downloaded from the package registry
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216183013_package_events_i_package_pypi_pull_package.yml)
+
+Group: `group::package`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.package_events_i_package_pypi_push_package`
+
+A count of Python packages that have been published to the package registry
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216183015_package_events_i_package_pypi_push_package.yml)
+
+Group: `group::package`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.package_events_i_package_rubygems_delete_package`
+
+Total count of RubyGems packages delete events
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210303153000_package_events_i_package_rubygems_delete_package.yml)
+
+Group: `group::package`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.package_events_i_package_rubygems_pull_package`
+
+Total count of pull RubyGems packages events
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210303153002_package_events_i_package_rubygems_pull_package.yml)
+
+Group: `group::package`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.package_events_i_package_rubygems_push_package`
+
+Total count of push RubyGems packages events
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210303153004_package_events_i_package_rubygems_push_package.yml)
+
+Group: `group::package`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.package_events_i_package_tag_delete_package`
+
+A count of package tags that have been deleted from the package registry
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216183017_package_events_i_package_tag_delete_package.yml)
+
+Group: `group::package`
+
+Data Category: `Optional`
+
+Status: `deprecated`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.package_events_i_package_tag_pull_package`
+
+A count of package tags that have been downloaded from the package registry
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216183019_package_events_i_package_tag_pull_package.yml)
+
+Group: `group::package`
+
+Data Category: `Optional`
+
+Status: `deprecated`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.package_events_i_package_tag_push_package`
+
+A count of package tags that have been published to the package registry
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216183021_package_events_i_package_tag_push_package.yml)
+
+Group: `group::package`
+
+Data Category: `Optional`
+
+Status: `deprecated`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.package_events_i_package_terraform_module_delete_package`
+
+Total count of Terraform Module packages delete events
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210410012200_package_events_i_package_terraform_module_delete_package.yml)
+
+Group: `group::configure`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.package_events_i_package_terraform_module_pull_package`
+
+Total count of pull Terraform Module packages events
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210410012202_package_events_i_package_terraform_module_pull_package.yml)
+
+Group: `group::configure`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.package_events_i_package_terraform_module_push_package`
+
+Total count of push Terraform Module packages events
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210410012204_package_events_i_package_terraform_module_push_package.yml)
+
+Group: `group::configure`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.packages`
+
+The total number of packages published to the registry
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216181012_packages.yml)
+
+Group: `group::package`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.pages_domains`
+
+Total GitLab Pages domains
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216181946_pages_domains.yml)
+
+Group: `group::release management`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`
+
+### `counts.personal_snippets`
+
+Count of personal Snippets
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216180239_personal_snippets.yml)
+
+Group: `group::editor`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.pod_logs_usages_total`
+
+Count the total number of log views
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216175021_pod_logs_usages_total.yml)
+
+Group: `group::monitor`
+
+Data Category: `Optional`
+
+Status: `removed`
+
+Tiers: `free`
+
+### `counts.pool_repositories`
+
+Count of unique object pool repositories for fork deduplication
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216180410_pool_repositories.yml)
+
+Group: `group::gitaly`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.productivity_analytics_views`
+
+Total visits to /groups/:group/-/analytics/productivity_analytics all time
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_all/20210216174834_productivity_analytics_views.yml)
+
+Group: `group::optimize`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.project_clusters_disabled`
+
+Total GitLab Managed disabled clusters previously attached to projects
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216175244_project_clusters_disabled.yml)
+
+Group: `group::configure`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.project_clusters_enabled`
+
+Total GitLab Managed clusters attached to projects
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216175236_project_clusters_enabled.yml)
+
+Group: `group::configure`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.project_snippets`
+
+Count of project Snippets
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216180241_project_snippets.yml)
+
+Group: `group::editor`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.projects`
+
+Count of Projects created
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216181254_projects.yml)
+
+Group: `group::project management`
+
+Data Category: `Operational`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.projects_asana_active`
+
+Count of projects with active integrations for Asana
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216175623_projects_asana_active.yml)
+
+Group: `group::ecosystem`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.projects_assembla_active`
+
+Count of projects with active integrations for Assembla
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216175634_projects_assembla_active.yml)
+
+Group: `group::ecosystem`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.projects_bamboo_active`
+
+Count of projects with active integrations for Bamboo CI
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216175645_projects_bamboo_active.yml)
+
+Group: `group::ecosystem`
+
+Data Category: `Operational`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.projects_bugzilla_active`
+
+Count of projects with active integrations for Bugzilla
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216175657_projects_bugzilla_active.yml)
+
+Group: `group::ecosystem`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.projects_buildkite_active`
+
+Count of projects with active integrations for Buildkite
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216175708_projects_buildkite_active.yml)
+
+Group: `group::ecosystem`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.projects_campfire_active`
+
+Count of projects with active integrations for Campfire
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216175719_projects_campfire_active.yml)
+
+Group: `group::ecosystem`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.projects_confluence_active`
+
+Count of projects with active integrations for Confluence
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216175731_projects_confluence_active.yml)
+
+Group: `group::ecosystem`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.projects_creating_incidents`
+
+Counts of Projects that have incident issues, regardless of status.
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216180453_projects_creating_incidents.yml)
+
+Group: `group::monitor`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.projects_custom_issue_tracker_active`
+
+Count of projects with active integrations for a Custom Issue Tracker
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216175742_projects_custom_issue_tracker_active.yml)
+
+Group: `group::ecosystem`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.projects_datadog_active`
+
+Count of projects with active integrations for Datadog
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216182547_projects_datadog_active.yml)
+
+Group: `group::ecosystem`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.projects_discord_active`
+
+Count of projects with active integrations for Discord
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216175753_projects_discord_active.yml)
+
+Group: `group::ecosystem`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.projects_drone_ci_active`
+
+Count of projects with active integrations for Drone CI
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216175804_projects_drone_ci_active.yml)
+
+Group: `group::ecosystem`
+
+Data Category: `Operational`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.projects_emails_on_push_active`
+
+Count of projects with active integrations for Emails on Push
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216175815_projects_emails_on_push_active.yml)
+
+Group: `group::ecosystem`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.projects_ewm_active`
+
+Count of projects with active integrations for EWM
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216182614_projects_ewm_active.yml)
+
+Group: `group::ecosystem`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.projects_external_wiki_active`
+
+Count of projects with active integrations for External Wiki
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216175826_projects_external_wiki_active.yml)
+
+Group: `group::ecosystem`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.projects_flowdock_active`
+
+Count of projects with active integrations for Flowdock
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216175837_projects_flowdock_active.yml)
+
+Group: `group::ecosystem`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.projects_github_active`
+
+Count of projects with active integrations for GitHub
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_all/20210216175848_projects_github_active.yml)
+
+Group: `group::ecosystem`
+
+Data Category: `Operational`
+
+Status: `data_available`
+
+Tiers: `premium`, `ultimate`
+
+### `counts.projects_hangouts_chat_active`
+
+Count of projects with active integrations for Hangouts Chat
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216175859_projects_hangouts_chat_active.yml)
+
+Group: `group::ecosystem`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.projects_hipchat_active`
+
+Count of projects with active integrations for HipChat
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216175910_projects_hipchat_active.yml)
+
+Group: `group::ecosystem`
+
+Data Category: `Optional`
+
+Status: `removed`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.projects_imported_from_github`
+
+Missing description
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216180628_projects_imported_from_github.yml)
+
+Group: `group::import`
+
+Data Category: `Operational`
+
+Status: `data_available`
+
+Tiers: `free`
+
+### `counts.projects_inheriting_asana_active`
+
+Count of active projects inheriting integrations for Asana
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216175630_projects_inheriting_asana_active.yml)
+
+Group: `group::ecosystem`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.projects_inheriting_assembla_active`
+
+Count of active projects inheriting integrations for Assembla
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216175642_projects_inheriting_assembla_active.yml)
+
+Group: `group::ecosystem`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.projects_inheriting_bamboo_active`
+
+Count of active projects inheriting integrations for Bamboo CI
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216175653_projects_inheriting_bamboo_active.yml)
+
+Group: `group::ecosystem`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.projects_inheriting_bugzilla_active`
+
+Count of active projects inheriting integrations for Bugzilla
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216175704_projects_inheriting_bugzilla_active.yml)
+
+Group: `group::ecosystem`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.projects_inheriting_buildkite_active`
+
+Count of active projects inheriting integrations for Buildkite
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216175716_projects_inheriting_buildkite_active.yml)
+
+Group: `group::ecosystem`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.projects_inheriting_campfire_active`
+
+Count of active projects inheriting integrations for Campfire
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216175727_projects_inheriting_campfire_active.yml)
+
+Group: `group::ecosystem`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.projects_inheriting_confluence_active`
+
+Count of active projects inheriting integrations for Confluence
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216175738_projects_inheriting_confluence_active.yml)
+
+Group: `group::ecosystem`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.projects_inheriting_custom_issue_tracker_active`
+
+Count of active projects inheriting integrations for a Custom Issue Tracker
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216175749_projects_inheriting_custom_issue_tracker_active.yml)
+
+Group: `group::ecosystem`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.projects_inheriting_datadog_active`
+
+Count of active projects inheriting integrations for Datadog
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216182555_projects_inheriting_datadog_active.yml)
+
+Group: `group::ecosystem`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.projects_inheriting_discord_active`
+
+Count of active projects inheriting integrations for Discord
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216175800_projects_inheriting_discord_active.yml)
+
+Group: `group::ecosystem`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.projects_inheriting_drone_ci_active`
+
+Count of active projects inheriting integrations for Drone CI
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216175811_projects_inheriting_drone_ci_active.yml)
+
+Group: `group::ecosystem`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.projects_inheriting_emails_on_push_active`
+
+Count of active projects inheriting integrations for Emails on Push
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216175822_projects_inheriting_emails_on_push_active.yml)
+
+Group: `group::ecosystem`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.projects_inheriting_ewm_active`
+
+Count of active projects inheriting integrations for EWM
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216182622_projects_inheriting_ewm_active.yml)
+
+Group: `group::ecosystem`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.projects_inheriting_external_wiki_active`
+
+Count of active projects inheriting integrations for External Wiki
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216175833_projects_inheriting_external_wiki_active.yml)
+
+Group: `group::ecosystem`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.projects_inheriting_flowdock_active`
+
+Count of active projects inheriting integrations for Flowdock
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216175844_projects_inheriting_flowdock_active.yml)
+
+Group: `group::ecosystem`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.projects_inheriting_github_active`
+
+Count of active projects inheriting integrations for GitHub
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_all/20210216175855_projects_inheriting_github_active.yml)
+
+Group: `group::ecosystem`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `premium`, `ultimate`
+
+### `counts.projects_inheriting_hangouts_chat_active`
+
+Count of active projects inheriting integrations for Hangouts Chat
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216175906_projects_inheriting_hangouts_chat_active.yml)
+
+Group: `group::ecosystem`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.projects_inheriting_hipchat_active`
+
+Count of active projects inheriting integrations for HipChat
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216175917_projects_inheriting_hipchat_active.yml)
+
+Group: `group::ecosystem`
+
+Data Category: `Optional`
+
+Status: `removed`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.projects_inheriting_irker_active`
+
+Count of active projects inheriting integrations for Irker
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216175928_projects_inheriting_irker_active.yml)
+
+Group: `group::ecosystem`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.projects_inheriting_jenkins_active`
+
+Count of active projects inheriting integrations for Jenkins
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216175939_projects_inheriting_jenkins_active.yml)
+
+Group: `group::ecosystem`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.projects_inheriting_jira_active`
+
+Count of active projects inheriting integrations for Jira
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216175950_projects_inheriting_jira_active.yml)
+
+Group: `group::ecosystem`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.projects_inheriting_mattermost_active`
+
+Count of active projects inheriting integrations for Mattermost
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216180001_projects_inheriting_mattermost_active.yml)
+
+Group: `group::ecosystem`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.projects_inheriting_mattermost_slash_commands_active`
+
+Count of active projects inheriting integrations for Mattermost (slash commands)
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216180012_projects_inheriting_mattermost_slash_commands_active.yml)
+
+Group: `group::ecosystem`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.projects_inheriting_microsoft_teams_active`
+
+Count of active projects inheriting integrations for Microsoft Teams
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216180023_projects_inheriting_microsoft_teams_active.yml)
+
+Group: `group::ecosystem`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.projects_inheriting_mock_ci_active`
+
+Count of active projects inheriting integrations for Mock CI
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216182730_projects_inheriting_mock_ci_active.yml)
+
+Group: `group::ecosystem`
+
+Data Category: `Optional`
+
+Status: `removed`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.projects_inheriting_mock_monitoring_active`
+
+Count of active projects inheriting integrations for Mock Monitoring
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216182741_projects_inheriting_mock_monitoring_active.yml)
+
+Group: `group::ecosystem`
+
+Data Category: `Optional`
+
+Status: `removed`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.projects_inheriting_packagist_active`
+
+Count of active projects inheriting integrations for Packagist
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216180034_projects_inheriting_packagist_active.yml)
+
+Group: `group::ecosystem`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.projects_inheriting_pipelines_email_active`
+
+Count of active projects inheriting integrations for Pipeline Emails
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216180045_projects_inheriting_pipelines_email_active.yml)
+
+Group: `group::ecosystem`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.projects_inheriting_pivotaltracker_active`
+
+Count of active projects inheriting integrations for Pivotal Tracker
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216180056_projects_inheriting_pivotaltracker_active.yml)
+
+Group: `group::ecosystem`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.projects_inheriting_prometheus_active`
+
+Count of active projects inheriting integrations for Prometheus
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216180938_projects_inheriting_prometheus_active.yml)
+
+Group: `group::monitor`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.projects_inheriting_pushover_active`
+
+Count of active projects inheriting integrations for Pushover
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216180107_projects_inheriting_pushover_active.yml)
+
+Group: `group::ecosystem`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.projects_inheriting_redmine_active`
+
+Count of active projects inheriting integrations for Redmine
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216180118_projects_inheriting_redmine_active.yml)
+
+Group: `group::ecosystem`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.projects_inheriting_slack_active`
+
+Count of active projects inheriting integrations for Slack
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216180129_projects_inheriting_slack_active.yml)
+
+Group: `group::ecosystem`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.projects_inheriting_slack_slash_commands_active`
+
+Count of active projects inheriting integrations for Slack (slash commands)
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216180140_projects_inheriting_slack_slash_commands_active.yml)
+
+Group: `group::ecosystem`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.projects_inheriting_teamcity_active`
+
+Count of active projects inheriting integrations for Teamcity CI
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216180151_projects_inheriting_teamcity_active.yml)
+
+Group: `group::ecosystem`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.projects_inheriting_unify_circuit_active`
+
+Count of active projects inheriting integrations for Unifiy Circuit
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216180203_projects_inheriting_unify_circuit_active.yml)
+
+Group: `group::ecosystem`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.projects_inheriting_webex_teams_active`
+
+Count of active projects inheriting integrations for Webex Teams
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216180214_projects_inheriting_webex_teams_active.yml)
+
+Group: `group::ecosystem`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.projects_inheriting_youtrack_active`
+
+Count of active projects inheriting integrations for YouTrack
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216180225_projects_inheriting_youtrack_active.yml)
+
+Group: `group::ecosystem`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.projects_irker_active`
+
+Count of projects with active integrations for Irker
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216175921_projects_irker_active.yml)
+
+Group: `group::ecosystem`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.projects_jenkins_active`
+
+Count of projects with active integrations for Jenkins
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216175932_projects_jenkins_active.yml)
+
+Group: `group::ecosystem`
+
+Data Category: `Operational`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.projects_jira_active`
+
+Count of projects with active integrations for Jira
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216175943_projects_jira_active.yml)
+
+Group: `group::ecosystem`
+
+Data Category: `Operational`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.projects_jira_cloud_active`
+
+Count of active integrations with Jira Cloud (Saas)
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216180230_projects_jira_cloud_active.yml)
+
+Group: `group::ecosystem`
+
+Data Category: `Operational`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.projects_jira_dvcs_cloud_active`
+
+Count of active integrations with Jira Cloud (DVCS Connector)
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216180232_projects_jira_dvcs_cloud_active.yml)
+
+Group: `group::ecosystem`
+
+Data Category: `Operational`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.projects_jira_dvcs_server_active`
+
+Count of active integrations with Jira Software (DVCS connector)
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216180234_projects_jira_dvcs_server_active.yml)
+
+Group: `group::ecosystem`
+
+Data Category: `Operational`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.projects_jira_issuelist_active`
+
+Total Jira Issue feature enabled
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_all/20210216180236_projects_jira_issuelist_active.yml)
+
+Group: `group::ecosystem`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `premium`, `ultimate`
+
+### `counts.projects_jira_server_active`
+
+Count of active integrations with Jira Software (server)
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216180228_projects_jira_server_active.yml)
+
+Group: `group::ecosystem`
+
+Data Category: `Operational`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.projects_mattermost_active`
+
+Count of projects with active integrations for Mattermost
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216175954_projects_mattermost_active.yml)
+
+Group: `group::ecosystem`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.projects_mattermost_slash_commands_active`
+
+Count of projects with active integrations for Mattermost (slash commands)
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216180005_projects_mattermost_slash_commands_active.yml)
+
+Group: `group::ecosystem`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.projects_microsoft_teams_active`
+
+Count of projects with active integrations for Microsoft Teams
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216180016_projects_microsoft_teams_active.yml)
+
+Group: `group::ecosystem`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.projects_mirrored_with_pipelines_enabled`
+
+Projects with repository mirroring enabled
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_all/20210216181920_projects_mirrored_with_pipelines_enabled.yml)
+
+Group: `group::pipeline execution`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `premium`, `ultimate`
+
+### `counts.projects_mock_ci_active`
+
+Count of projects with active integrations for Mock CI
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216182722_projects_mock_ci_active.yml)
+
+Group: `group::ecosystem`
+
+Data Category: `Optional`
+
+Status: `removed`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.projects_mock_monitoring_active`
+
+Count of projects with active integrations for Mock Monitoring
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216182734_projects_mock_monitoring_active.yml)
+
+Group: `group::ecosystem`
+
+Data Category: `Optional`
+
+Status: `removed`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.projects_packagist_active`
+
+Count of projects with active integrations for Packagist
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216180027_projects_packagist_active.yml)
+
+Group: `group::ecosystem`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.projects_pipelines_email_active`
+
+Count of projects with active integrations for Pipeline Emails
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216180038_projects_pipelines_email_active.yml)
+
+Group: `group::ecosystem`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.projects_pivotaltracker_active`
+
+Count of projects with active integrations for Pivotal Tracker
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216180049_projects_pivotaltracker_active.yml)
+
+Group: `group::ecosystem`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.projects_prometheus_active`
+
+Count of projects with active integrations for Prometheus
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216180931_projects_prometheus_active.yml)
+
+Group: `group::monitor`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.projects_pushover_active`
+
+Count of projects with active integrations for Pushover
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216180100_projects_pushover_active.yml)
+
+Group: `group::ecosystem`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.projects_redmine_active`
+
+Count of projects with active integrations for Redmine
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216180111_projects_redmine_active.yml)
+
+Group: `group::ecosystem`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.projects_reporting_ci_cd_back_to_github`
+
+Projects with a GitHub service pipeline enabled
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_all/20210216182212_projects_reporting_ci_cd_back_to_github.yml)
+
+Group: `group::continuous_integration`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `premium`, `ultimate`
+
+### `counts.projects_slack_active`
+
+Count of projects with active integrations for Slack
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216180122_projects_slack_active.yml)
+
+Group: `group::ecosystem`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.projects_slack_slash_commands_active`
+
+Count of projects with active integrations for Slack (slash commands)
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216180133_projects_slack_slash_commands_active.yml)
+
+Group: `group::ecosystem`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.projects_teamcity_active`
+
+Count of projects with active integrations for Teamcity CI
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216180144_projects_teamcity_active.yml)
+
+Group: `group::ecosystem`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.projects_unify_circuit_active`
+
+Count of projects with active integrations for Unifiy Circuit
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216180155_projects_unify_circuit_active.yml)
+
+Group: `group::ecosystem`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.projects_webex_teams_active`
+
+Count of projects with active integrations for Webex Teams
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216180206_projects_webex_teams_active.yml)
+
+Group: `group::ecosystem`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.projects_with_alerts_created`
+
+Count of projects with alerts created in given time period
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216180458_projects_with_alerts_created.yml)
+
+Group: `group::monitor`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.projects_with_alerts_service_enabled`
+
+Count of projects that have enabled the Alerts service
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216180456_projects_with_alerts_service_enabled.yml)
+
+Group: `group::monitor`
+
+Data Category: `Optional`
+
+Status: `removed`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.projects_with_enabled_alert_integrations`
+
+Count of projects with at least 1 enabled integration
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216180500_projects_with_enabled_alert_integrations.yml)
+
+Group: `group::monitor`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.projects_with_error_tracking_enabled`
+
+Count of projects that have enabled Error tracking via Sentry
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216180454_projects_with_error_tracking_enabled.yml)
+
+Group: `group::monitor`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.projects_with_expiration_policy_disabled`
+
+The number of projects with cleanup policy for tags turned off
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216181014_projects_with_expiration_policy_disabled.yml)
+
+Group: `group::package`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.projects_with_expiration_policy_enabled`
+
+A count of projects with the cleanup policy for tags turned on
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216181016_projects_with_expiration_policy_enabled.yml)
+
+Group: `group::package`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.projects_with_expiration_policy_enabled_with_cadence_set_to_14d`
+
+A count of projects with the cleanup policy set to run every 14 days
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216181033_projects_with_expiration_policy_enabled_with_cadence_set_to_14d.yml)
+
+Group: `group::package`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.projects_with_expiration_policy_enabled_with_cadence_set_to_1d`
+
+A count of projects with the cleanup policy set to run every day
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216181029_projects_with_expiration_policy_enabled_with_cadence_set_to_1d.yml)
+
+Group: `group::package`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.projects_with_expiration_policy_enabled_with_cadence_set_to_1month`
+
+A count of projects with the cleanup policy set to run monthly
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216181035_projects_with_expiration_policy_enabled_with_cadence_set_to_1month.yml)
+
+Group: `group::package`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.projects_with_expiration_policy_enabled_with_cadence_set_to_3month`
+
+A count of projects with the cleanup policy set to run every 3 months
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216181037_projects_with_expiration_policy_enabled_with_cadence_set_to_3month.yml)
+
+Group: `group::package`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.projects_with_expiration_policy_enabled_with_cadence_set_to_7d`
+
+A count of projects with the cleanup policy set to run every 7 days
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216181031_projects_with_expiration_policy_enabled_with_cadence_set_to_7d.yml)
+
+Group: `group::package`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.projects_with_expiration_policy_enabled_with_keep_n_set_to_1`
+
+A count of projects with the cleanup policy set to keep 1 tag
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216181018_projects_with_expiration_policy_enabled_with_keep_n_set_to_1.yml)
+
+Group: `group::package`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.projects_with_expiration_policy_enabled_with_keep_n_set_to_10`
+
+A count of projects with the cleanup policy set to keep 10 tags
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216181022_projects_with_expiration_policy_enabled_with_keep_n_set_to_10.yml)
+
+Group: `group::package`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.projects_with_expiration_policy_enabled_with_keep_n_set_to_100`
+
+A count of projects with the cleanup policy set to keep 100 tags
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216181027_projects_with_expiration_policy_enabled_with_keep_n_set_to_100.yml)
+
+Group: `group::package`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.projects_with_expiration_policy_enabled_with_keep_n_set_to_25`
+
+A count of projects with the cleanup policy set to keep 25 tags
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216181024_projects_with_expiration_policy_enabled_with_keep_n_set_to_25.yml)
+
+Group: `group::package`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.projects_with_expiration_policy_enabled_with_keep_n_set_to_5`
+
+A count of projects with the cleanup policy set to keep 5 tags
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216181020_projects_with_expiration_policy_enabled_with_keep_n_set_to_5.yml)
+
+Group: `group::package`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.projects_with_expiration_policy_enabled_with_keep_n_set_to_50`
+
+A count of projects with the cleanup policy set to keep 50 tags
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216181025_projects_with_expiration_policy_enabled_with_keep_n_set_to_50.yml)
+
+Group: `group::package`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.projects_with_expiration_policy_enabled_with_keep_n_unset`
+
+A count of projects with the cleanup policy with the number of tags to keep unset
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216181046_projects_with_expiration_policy_enabled_with_keep_n_unset.yml)
+
+Group: `group::package`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.projects_with_expiration_policy_enabled_with_older_than_set_to_14d`
+
+A count of projects with the cleanup policy set delete tags older than 14 days
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216181040_projects_with_expiration_policy_enabled_with_older_than_set_to_14d.yml)
+
+Group: `group::package`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.projects_with_expiration_policy_enabled_with_older_than_set_to_30d`
+
+A count of projects with the cleanup policy set delete tags older than 30 days
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216181042_projects_with_expiration_policy_enabled_with_older_than_set_to_30d.yml)
+
+Group: `group::package`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.projects_with_expiration_policy_enabled_with_older_than_set_to_7d`
+
+A count of projects with the cleanup policy set delete tags older than 7 days
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216181038_projects_with_expiration_policy_enabled_with_older_than_set_to_7d.yml)
+
+Group: `group::package`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.projects_with_expiration_policy_enabled_with_older_than_set_to_90d`
+
+A count of projects with the cleanup policy set delete tags older than 90 days
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216181044_projects_with_expiration_policy_enabled_with_older_than_set_to_90d.yml)
+
+Group: `group::package`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.projects_with_expiration_policy_enabled_with_older_than_unset`
+
+A count of projects with the cleanup policy with the number of tags to delete unset
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216181048_projects_with_expiration_policy_enabled_with_older_than_unset.yml)
+
+Group: `group::package`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.projects_with_packages`
+
+Projects with package registry enabled
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216181011_projects_with_packages.yml)
+
+Group: `group::package`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.projects_with_prometheus_alerts`
+
+Projects with Prometheus alerting enabled
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216175019_projects_with_prometheus_alerts.yml)
+
+Group: `group::monitor`
+
+Data Category: `Optional`
+
+Status: `removed`
+
+Tiers: `free`
+
+### `counts.projects_with_repositories_enabled`
+
+Count of users creating projects that have a matching Git repository, result of a Git push action.
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_all/20210216181959_projects_with_repositories_enabled.yml)
+
+Group: `group::source code`
+
+Data Category: `Operational`
+
+Status: `data_available`
+
+Tiers: `premium`, `ultimate`
+
+### `counts.projects_with_terraform_reports`
+
+Count of projects with Terraform MR reports
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216175320_projects_with_terraform_reports.yml)
+
+Group: `group::configure`
+
+Data Category: `Operational`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.projects_with_terraform_states`
+
+Count of projects with GitLab Managed Terraform State
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216175322_projects_with_terraform_states.yml)
+
+Group: `group::configure`
+
+Data Category: `Operational`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.projects_with_tracing_enabled`
+
+Projects with tracing enabled
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216180929_projects_with_tracing_enabled.yml)
+
+Group: `group::monitor`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.projects_youtrack_active`
+
+Count of projects with active integrations for YouTrack
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216180217_projects_youtrack_active.yml)
+
+Group: `group::ecosystem`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.protected_branches`
+
+Count of total protected branches
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_all/20210216182001_protected_branches.yml)
+
+Group: `group::source code`
+
+Data Category: `Operational`
+
+Status: `data_available`
+
+Tiers: `premium`, `ultimate`
+
+### `counts.protected_branches_except_default`
+
+Count of branches that have been protected and are not the default branch
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216182454_protected_branches_except_default.yml)
+
+Group: `group::source code`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.releases`
+
+Unique release tags
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216181918_releases.yml)
+
+Group: `group::release`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`
+
+### `counts.remote_mirrors`
+
+Count of total remote mirrors. Includes both push and pull mirrors
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216182002_remote_mirrors.yml)
+
+Group: `group::source code`
+
+Data Category: `Operational`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.requirement_test_reports_ci`
+
+Count of requirement test reports created from CI
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_all/20210216175032_requirement_test_reports_ci.yml)
+
+Group: `group::certify`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `ultimate`
+
+### `counts.requirement_test_reports_manual`
+
+Count of requirement test reports created manually
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_all/20210216175030_requirement_test_reports_manual.yml)
+
+Group: `group::certify`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `ultimate`
+
+### `counts.requirements_created`
+
+Count of requirements created
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_all/20210216175028_requirements_created.yml)
+
+Group: `group::certify`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `ultimate`
+
+### `counts.requirements_with_test_report`
+
+Count of requirements having a test report
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_all/20210216175034_requirements_with_test_report.yml)
+
+Group: `group::certify`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `ultimate`
+
+### `counts.sast_jobs`
+
+Count of SAST CI jobs for the month. Job names ending in '-sast'
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216182112_sast_jobs.yml)
+
+Group: `group::static analysis`
+
+Data Category: `Operational`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.secret_detection_jobs`
+
+Count of all 'secret-detection' CI jobs.
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216182114_secret_detection_jobs.yml)
+
+Group: `group::static analysis`
+
+Data Category: `Operational`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.service_desk_enabled_projects`
+
+Count of service desk enabled projects
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216175024_service_desk_enabled_projects.yml)
+
+Group: `group::certify`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`
+
+### `counts.service_desk_issues`
+
+Count of service desk issues
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216175026_service_desk_issues.yml)
+
+Group: `group::certify`
+
+Data Category: `Operational`
+
+Status: `data_available`
+
+Tiers: `free`
+
+### `counts.snippet_comment`
+
+Count of comments on Snippets
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216180253_snippet_comment.yml)
+
+Group: `group::editor`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.snippet_create`
+
+Count of newly created Snippets
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216180255_snippet_create.yml)
+
+Group: `group::editor`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.snippet_update`
+
+Count of updates to existing Snippets
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216180257_snippet_update.yml)
+
+Group: `group::editor`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.snippets`
+
+Count of all Snippets
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216180306_snippets.yml)
+
+Group: `group::editor`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.source_code_pushes`
+
+Count of total Git push operations
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216182006_source_code_pushes.yml)
+
+Group: `group::source code`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.static_site_editor_commits`
+
+Count of commits created from the Static Site Editor
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216180301_static_site_editor_commits.yml)
+
+Group: `group::editor`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.static_site_editor_merge_requests`
+
+Count of merge requests created via Static Site Editor
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216180303_static_site_editor_merge_requests.yml)
+
+Group: `group::editor`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.static_site_editor_views`
+
+Count of Static Site Editor views
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216180259_static_site_editor_views.yml)
+
+Group: `group::editor`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.status_page_incident_publishes`
+
+Cumulative count of usages of publish operation
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_all/20210216180502_status_page_incident_publishes.yml)
+
+Group: `group::monitor`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `ultimate`
+
+### `counts.status_page_incident_unpublishes`
+
+Cumulative count of usages of unpublish operation
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_all/20210216180504_status_page_incident_unpublishes.yml)
+
+Group: `group::monitor`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `ultimate`
+
+### `counts.status_page_issues`
+
+Issues published to a Status Page
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_all/20210216180507_status_page_issues.yml)
+
+Group: `group::monitor`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `ultimate`
+
+### `counts.status_page_projects`
+
+Projects with status page enabled
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_all/20210216180506_status_page_projects.yml)
+
+Group: `group::monitor`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `ultimate`
+
+### `counts.successful_deployments`
+
+Total successful deployments
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216181911_successful_deployments.yml)
+
+Group: `group::release`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`
+
+### `counts.suggestions`
+
+Count of all comments that contain suggested changes
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216175037_suggestions.yml)
+
+Group: `group::code review`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.template_repositories`
+
+Count of total repo templates used to aggregate all file templates
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_all/20210216182008_template_repositories.yml)
+
+Group: `group::source code`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `premium`, `ultimate`
+
+### `counts.templates_asana_active`
+
+Count of active service templates for Asana
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216175627_templates_asana_active.yml)
+
+Group: `group::ecosystem`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.templates_assembla_active`
+
+Count of active service templates for Assembla
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216175638_templates_assembla_active.yml)
+
+Group: `group::ecosystem`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.templates_bamboo_active`
+
+Count of active service templates for Bamboo CI
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216175649_templates_bamboo_active.yml)
+
+Group: `group::ecosystem`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.templates_bugzilla_active`
+
+Count of active service templates for Bugzilla
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216175701_templates_bugzilla_active.yml)
+
+Group: `group::ecosystem`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.templates_buildkite_active`
+
+Count of active service templates for Buildkite
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216175712_templates_buildkite_active.yml)
+
+Group: `group::ecosystem`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.templates_campfire_active`
+
+Count of active service templates for Campfire
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216175723_templates_campfire_active.yml)
+
+Group: `group::ecosystem`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.templates_confluence_active`
+
+Count of active service templates for Confluence
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216175734_templates_confluence_active.yml)
+
+Group: `group::ecosystem`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.templates_custom_issue_tracker_active`
+
+Count of active service templates for a Custom Issue Tracker
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216175745_templates_custom_issue_tracker_active.yml)
+
+Group: `group::ecosystem`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.templates_datadog_active`
+
+Count of active service templates for Datadog
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216182551_templates_datadog_active.yml)
+
+Group: `group::ecosystem`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.templates_discord_active`
+
+Count of active service templates for Discord
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216175756_templates_discord_active.yml)
+
+Group: `group::ecosystem`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.templates_drone_ci_active`
+
+Count of active service templates for Drone CI
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216175807_templates_drone_ci_active.yml)
+
+Group: `group::ecosystem`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.templates_emails_on_push_active`
+
+Count of active service templates for Emails on Push
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216175818_templates_emails_on_push_active.yml)
+
+Group: `group::ecosystem`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.templates_ewm_active`
+
+Count of active service templates for EWM
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216182618_templates_ewm_active.yml)
+
+Group: `group::ecosystem`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.templates_external_wiki_active`
+
+Count of active service templates for External Wiki
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216175829_templates_external_wiki_active.yml)
+
+Group: `group::ecosystem`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.templates_flowdock_active`
+
+Count of active service templates for Flowdock
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216175840_templates_flowdock_active.yml)
+
+Group: `group::ecosystem`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.templates_github_active`
+
+Count of active service templates for GitHub
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_all/20210216175851_templates_github_active.yml)
+
+Group: `group::ecosystem`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `premium`, `ultimate`
+
+### `counts.templates_hangouts_chat_active`
+
+Count of active service templates for Hangouts Chat
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216175902_templates_hangouts_chat_active.yml)
+
+Group: `group::ecosystem`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.templates_hipchat_active`
+
+Count of active service templates for HipChat
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216175913_templates_hipchat_active.yml)
+
+Group: `group::ecosystem`
+
+Data Category: `Optional`
+
+Status: `removed`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.templates_irker_active`
+
+Count of active service templates for Irker
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216175924_templates_irker_active.yml)
+
+Group: `group::ecosystem`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.templates_jenkins_active`
+
+Count of active service templates for Jenkins
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216175935_templates_jenkins_active.yml)
+
+Group: `group::ecosystem`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.templates_jira_active`
+
+Count of active service templates for Jira
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216175946_templates_jira_active.yml)
+
+Group: `group::ecosystem`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.templates_mattermost_active`
+
+Count of active service templates for Mattermost
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216175957_templates_mattermost_active.yml)
+
+Group: `group::ecosystem`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.templates_mattermost_slash_commands_active`
+
+Count of active service templates for Mattermost (slash commands)
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216180008_templates_mattermost_slash_commands_active.yml)
+
+Group: `group::ecosystem`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.templates_microsoft_teams_active`
+
+Count of active service templates for Microsoft Teams
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216180019_templates_microsoft_teams_active.yml)
+
+Group: `group::ecosystem`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.templates_mock_ci_active`
+
+Count of active service templates for Mock CI
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216182726_templates_mock_ci_active.yml)
+
+Group: `group::ecosystem`
+
+Data Category: `Optional`
+
+Status: `removed`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.templates_mock_monitoring_active`
+
+Count of active service templates for Mock Monitoring
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216182738_templates_mock_monitoring_active.yml)
+
+Group: `group::ecosystem`
+
+Data Category: `Optional`
+
+Status: `removed`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.templates_packagist_active`
+
+Count of active service templates for Packagist
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216180030_templates_packagist_active.yml)
+
+Group: `group::ecosystem`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.templates_pipelines_email_active`
+
+Count of active service templates for Pipeline Emails
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216180041_templates_pipelines_email_active.yml)
+
+Group: `group::ecosystem`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.templates_pivotaltracker_active`
+
+Count of active service templates for Pivotal Tracker
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216180052_templates_pivotaltracker_active.yml)
+
+Group: `group::ecosystem`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.templates_prometheus_active`
+
+Count of active service templates for Prometheus
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216180934_templates_prometheus_active.yml)
+
+Group: `group::monitor`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.templates_pushover_active`
+
+Count of active service templates for Pushover
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216180104_templates_pushover_active.yml)
+
+Group: `group::ecosystem`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.templates_redmine_active`
+
+Count of active service templates for Redmine
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216180115_templates_redmine_active.yml)
+
+Group: `group::ecosystem`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.templates_slack_active`
+
+Count of active service templates for Slack
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216180126_templates_slack_active.yml)
+
+Group: `group::ecosystem`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.templates_slack_slash_commands_active`
+
+Count of active service templates for Slack (slash commands)
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216180137_templates_slack_slash_commands_active.yml)
+
+Group: `group::ecosystem`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.templates_teamcity_active`
+
+Count of active service templates for Teamcity CI
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216180148_templates_teamcity_active.yml)
+
+Group: `group::ecosystem`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.templates_unify_circuit_active`
+
+Count of active service templates for Unifiy Circuit
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216180159_templates_unify_circuit_active.yml)
+
+Group: `group::ecosystem`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.templates_webex_teams_active`
+
+Count of active service templates for Webex Teams
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216180210_templates_webex_teams_active.yml)
+
+Group: `group::ecosystem`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.templates_youtrack_active`
+
+Count of active service templates for YouTrack
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216180221_templates_youtrack_active.yml)
+
+Group: `group::ecosystem`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.terraform_reports`
+
+Count of Terraform MR reports generated
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216175324_terraform_reports.yml)
+
+Group: `group::configure`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.terraform_states`
+
+Count of GitLab Managed Terraform States
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216175326_terraform_states.yml)
+
+Group: `group::configure`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.todos`
+
+Count of todos created
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216181256_todos.yml)
+
+Group: `group::project management`
+
+Data Category: `Operational`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.uploads`
+
+Count of Uploads via Notes and Descriptions
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216181109_uploads.yml)
+
+Group: `group::project management`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.user_preferences_group_overview_details`
+
+Count of users who set personal preference to see Details on Group information page
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_all/20210216182203_user_preferences_group_overview_details.yml)
+
+Group: `group::threat insights`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `ultimate`
+
+### `counts.user_preferences_group_overview_security_dashboard`
+
+Count of users who set personal preference to see Security Dashboard on Group information page
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_all/20210216182205_user_preferences_group_overview_security_dashboard.yml)
+
+Group: `group::threat insights`
+
+Data Category: `Operational`
+
+Status: `data_available`
+
+Tiers: `ultimate`
+
+### `counts.user_preferences_user_gitpod_enabled`
+
+Count of users with the GitPod integration enabled
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216180304_user_preferences_user_gitpod_enabled.yml)
+
+Group: `group::editor`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.web_hooks`
+
+Missing description
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216175621_web_hooks.yml)
+
+Group: `group::ecosystem`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`
+
+### `counts.web_ide_commits`
+
+Count of commits made from the Web IDE
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216180242_web_ide_commits.yml)
+
+Group: `group::editor`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.web_ide_merge_requests`
+
+Count of merge requests created from the Web IDE
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216180246_web_ide_merge_requests.yml)
+
+Group: `group::editor`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.web_ide_pipelines`
+
+Count of Pipeline tab views in the Web IDE
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216180252_web_ide_pipelines.yml)
+
+Group: `group::editor`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.web_ide_previews`
+
+Count of Live Preview tab views in the Web IDE
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216180248_web_ide_previews.yml)
+
+Group: `group::editor`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.web_ide_terminals`
+
+Count of Web Terminal tab views in the Web IDE
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216180250_web_ide_terminals.yml)
+
+Group: `group::editor`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.web_ide_views`
+
+Count of views of the Web IDE
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216180244_web_ide_views.yml)
+
+Group: `group::editor`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.wiki_pages_create`
+
+Count of all Wiki pages created
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216180734_wiki_pages_create.yml)
+
+Group: `group::editor`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.wiki_pages_delete`
+
+Count of all Wiki pages deleted
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216180738_wiki_pages_delete.yml)
+
+Group: `group::editor`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.wiki_pages_update`
+
+Count of all Wiki page updates
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216180736_wiki_pages_update.yml)
+
+Group: `group::editor`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.wiki_pages_view`
+
+Missing description
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216183023_wiki_pages_view.yml)
+
+Group: ``
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`
+
+### `counts_monthly.aggregated_metrics.code_review_category_monthly_active_users`
+
+Missing description
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210427102618_code_review_category_monthly_active_users.yml)
+
+Group: ``
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts_monthly.aggregated_metrics.code_review_extension_category_monthly_active_users`
+
+Missing description
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210427103010_code_review_extension_category_monthly_active_users.yml)
+
+Group: ``
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts_monthly.aggregated_metrics.code_review_group_monthly_active_users`
+
+Missing description
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210427103119_code_review_group_monthly_active_users.yml)
+
+Group: ``
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts_monthly.aggregated_metrics.compliance_features_track_unique_visits_union`
+
+Unique users that have used audit event screen, audit event API, compliance dashboard, or credential inventory
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_28d/20210216183201_compliance_features_track_unique_visits_union.yml)
+
+Group: `group::compliance`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `premium`, `ultimate`
+
+### `counts_monthly.aggregated_metrics.i_testing_paid_monthly_active_user_total`
+
+Aggregated count of users who have engaged with a Premium or Ultimate tier testing feature per month.
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_28d/20210216183209_i_testing_paid_monthly_active_user_total.yml)
+
+Group: `group::testing`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `premium`, `ultimate`
+
+### `counts_monthly.aggregated_metrics.incident_management_alerts_total_unique_counts`
+
+Count of unique users per month to take an action on an alert
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216180509_incident_management_alerts_total_unique_counts.yml)
+
+Group: `group::monitor`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts_monthly.aggregated_metrics.incident_management_incidents_total_unique_counts`
+
+Count of unique users per month to take an action on an incident
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216180511_incident_management_incidents_total_unique_counts.yml)
+
+Group: `group::monitor`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts_monthly.aggregated_metrics.product_analytics_test_metrics_intersection`
+
+This was test metric used for purpose of assuring correct implementation of aggregated metrics feature
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216183205_product_analytics_test_metrics_intersection.yml)
+
+Group: `group::product intelligence`
+
+Data Category: `Optional`
+
+Status: `removed`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts_monthly.aggregated_metrics.product_analytics_test_metrics_union`
+
+This was test metric used for purpose of assuring correct implementation of aggregated metrics feature
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216183203_product_analytics_test_metrics_union.yml)
+
+Group: `group::product intelligence`
+
+Data Category: `Optional`
+
+Status: `removed`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts_monthly.deployments`
+
+Total deployments count for recent 28 days
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210201124930_deployments.yml)
+
+Group: `group::ops release`
+
+Data Category: `Operational`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts_monthly.failed_deployments`
+
+Total failed deployments
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216181924_failed_deployments.yml)
+
+Group: `group::release`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`
+
+### `counts_monthly.packages`
+
+A monthly count of packages published to the registry
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216181050_packages.yml)
+
+Group: `group::package`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts_monthly.personal_snippets`
+
+Monthly count of personal Snippets
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216180308_personal_snippets.yml)
+
+Group: `group::editor`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts_monthly.project_snippets`
+
+Monthly count of project Snippets
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216180310_project_snippets.yml)
+
+Group: `group::editor`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts_monthly.projects`
+
+Count number of projects created monthly
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210514141518_monthly_projects_creation.yml)
+
+Group: `group::project management`
+
+Data Category: `Optional`
+
+Status: `implemented`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts_monthly.projects_with_alerts_created`
+
+Monthly count of unique projects with HTTP alerting enabled
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216183159_projects_with_alerts_created.yml)
+
+Group: `group::monitor`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts_monthly.snippets`
+
+Monthly count of All Snippets
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216180312_snippets.yml)
+
+Group: `group::editor`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts_monthly.successful_deployments`
+
+Total successful deployments
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216181923_successful_deployments.yml)
+
+Group: `group::release`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`
+
+### `counts_weekly.aggregated_metrics.code_review_category_monthly_active_users`
+
+Missing description
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_7d/20210427103407_code_review_category_monthly_active_users.yml)
+
+Group: ``
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts_weekly.aggregated_metrics.code_review_extension_category_monthly_active_users`
+
+Missing description
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_7d/20210427103452_code_review_extension_category_monthly_active_users.yml)
+
+Group: ``
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts_weekly.aggregated_metrics.code_review_group_monthly_active_users`
+
+Missing description
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_7d/20210427103328_code_review_group_monthly_active_users.yml)
+
+Group: ``
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts_weekly.aggregated_metrics.compliance_features_track_unique_visits_union`
+
+Unique users that have used audit event screen, audit event API, compliance dashboard, or credential inventory
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_7d/20210216183211_compliance_features_track_unique_visits_union.yml)
+
+Group: `group::compliance`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `premium`, `ultimate`
+
+### `counts_weekly.aggregated_metrics.i_testing_paid_monthly_active_user_total`
+
+Aggregated count of users who have engaged with a Premium or Ultimate tier testing feature per week.
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_7d/20210216183219_i_testing_paid_monthly_active_user_total.yml)
+
+Group: `group::testing`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `premium`, `ultimate`
+
+### `counts_weekly.aggregated_metrics.incident_management_alerts_total_unique_counts`
+
+Count of unique users per week to take an action on an alert
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_7d/20210216180513_incident_management_alerts_total_unique_counts.yml)
+
+Group: `group::monitor`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts_weekly.aggregated_metrics.incident_management_incidents_total_unique_counts`
+
+Count of unique users per week to take an action on an incident
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_7d/20210216180515_incident_management_incidents_total_unique_counts.yml)
+
+Group: `group::monitor`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts_weekly.aggregated_metrics.product_analytics_test_metrics_intersection`
+
+This was test metric used for purpose of assuring correct implementation of aggregated metrics feature
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_7d/20210216183215_product_analytics_test_metrics_intersection.yml)
+
+Group: `group::product intelligence`
+
+Data Category: `Optional`
+
+Status: `removed`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts_weekly.aggregated_metrics.product_analytics_test_metrics_union`
+
+This was test metric used for purpose of assuring correct implementation of aggregated metrics feature
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_7d/20210216183213_product_analytics_test_metrics_union.yml)
+
+Group: `group::product intelligence`
+
+Data Category: `Optional`
+
+Status: `removed`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `database.adapter`
+
+This metric only returns a value of PostgreSQL in supported versions of GitLab. It could be removed from the usage ping. Historically MySQL was also supported.
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/settings/20210201124935_database_adapter.yml)
+
+Group: `group::enablement distribution`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `database.pg_system_id`
+
+TBD
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/settings/20210216183248_pg_system_id.yml)
+
+Group: `group::distribution`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`
+
+### `database.version`
+
+The version of the PostgreSQL database.
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/settings/20210216175609_version.yml)
+
+Group: `group::distribution`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `dependency_proxy_enabled`
+
+A count of projects where the dependency proxy is enabled
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/settings/20210204124900_dependency_proxy_enabled.yml)
+
+Group: `group::package`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `edition`
+
+Edition of GitLab such as EE or CE
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/settings/20210216175604_edition.yml)
+
+Group: `group::distribution`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `elasticsearch_enabled`
+
+Whether Elasticsearch is enabled
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/settings/20210204124924_elasticsearch_enabled.yml)
+
+Group: `group::global search`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `premium`, `ultimate`
+
+### `geo_enabled`
+
+Is Geo enabled?
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/settings/20210216180406_geo_enabled.yml)
+
+Group: `group::geo`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `premium`, `ultimate`
+
+### `git.version`
+
+Information about Git version
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/license/20210216183237_version.yml)
+
+Group: `group::distribution`
+
+Data Category: `Operational`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `gitaly.clusters`
+
+Total GitLab Managed clusters both enabled and disabled
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210204124932_clusters.yml)
+
+Group: `group::product intelligence`
+
+Data Category: `Operational`
+
+Status: `data_available`
+
+Tiers: `free`
+
+### `gitaly.filesystems`
+
+Missing description
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/settings/20210216183241_filesystems.yml)
+
+Group: ``
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`
+
+### `gitaly.servers`
+
+Total Gitalty Servers
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210204124930_servers.yml)
+
+Group: `group::product intelligence`
+
+Data Category: `Operational`
+
+Status: `data_available`
+
+Tiers: `free`
+
+### `gitaly.version`
+
+Version of Gitaly
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/license/20210204124928_version.yml)
+
+Group: `group::product intelligence`
+
+Data Category: `Operational`
+
+Status: `data_available`
+
+Tiers: `free`
+
+### `gitlab_pages.enabled`
+
+Whether GitLab Pages is enabled
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/settings/20210204124934_enabled.yml)
+
+Group: `group::product intelligence`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`
+
+### `gitlab_pages.version`
+
+The version number of GitLab Pages
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/license/20210204124936_version.yml)
+
+Group: `group::product intelligence`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`
+
+### `gitlab_shared_runners_enabled`
+
+Whether shared runners is enabled
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/settings/20210204124902_gitlab_shared_runners_enabled.yml)
+
+Group: `group::runner`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `gitpod_enabled`
+
+Whether Gitpod is enabled in the instance
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/settings/20210216180314_gitpod_enabled.yml)
+
+Group: `group::editor`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `grafana_link_enabled`
+
+Whether Grafana is enabled
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/settings/20210204124922_grafana_link_enabled.yml)
+
+Group: `group::product intelligence`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`
+
+### `gravatar_enabled`
+
+Whether gravatar is enabled
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/settings/20210204124904_gravatar_enabled.yml)
+
+Group: `group::access`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `historical_max_users`
+
+The peak active user count. Active is defined in UsersStatistics model.
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/license/20210204124835_historical_max_users.yml)
+
+Group: `group::license`
+
+Data Category: `Subscription`
+
+Status: `data_available`
+
+Tiers: `premium`, `ultimate`
+
+### `hostname`
+
+Host name of GitLab instance
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/license/20210204124827_hostname.yml)
+
+Group: `group::product intelligence`
+
+Data Category: `Standard`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `ingress_modsecurity_enabled`
+
+Whether or not ModSecurity is enabled within Ingress
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/settings/20210216175459_ingress_modsecurity_enabled.yml)
+
+Group: `group::container security`
+
+Data Category: `Operational`
+
+Status: `removed`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `installation_type`
+
+The installation method used to install GitLab (Omnibus, Helm, etc)
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/license/20210216175602_installation_type.yml)
+
+Group: `group::distribution`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `instance_auto_devops_enabled`
+
+Whether auto DevOps is enabled
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/settings/20210204124856_instance_auto_devops_enabled.yml)
+
+Group: `group::configure`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `ldap_enabled`
+
+Whether LDAP is enabled
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/settings/20210204124906_ldap_enabled.yml)
+
+Group: `group::product intelligence`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`
+
+### `license_billable_users`
+
+Number of all billable users (active users excluding bots and guests).
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/license/20210531204603_license_billable_users.yml)
+
+Group: `group::product intelligence`
+
+Data Category: `Optional`
+
+Status: `implemented`
+
+Tiers: `premium`, `ultimate`
+
+### `license_expires_at`
+
+The date the license ends
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/license/20210204124847_license_expires_at.yml)
+
+Group: `group::license`
+
+Data Category: `Subscription`
+
+Status: `data_available`
+
+Tiers: `premium`, `ultimate`
+
+### `license_id`
+
+The ID of the license
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/license/20210204124833_license_id.yml)
+
+Group: `group::license`
+
+Data Category: `Subscription`
+
+Status: `data_available`
+
+Tiers: `premium`, `ultimate`
+
+### `license_md5`
+
+The MD5 hash of license key of the GitLab instance
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/license/20210204124831_license_md5.yml)
+
+Group: `group::license`
+
+Data Category: `Standard`
+
+Status: `data_available`
+
+Tiers: `premium`, `ultimate`
+
+### `license_plan`
+
+The plan of the GitLab license
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/license/20210204124849_license_plan.yml)
+
+Group: `group::license`
+
+Data Category: `Subscription`
+
+Status: `data_available`
+
+Tiers: `premium`, `ultimate`
+
+### `license_starts_at`
+
+The date the license starts
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/license/20210204124845_license_starts_at.yml)
+
+Group: `group::license`
+
+Data Category: `Subscription`
+
+Status: `data_available`
+
+Tiers: `premium`, `ultimate`
+
+### `license_subscription_id`
+
+Licese zuora_subscription_id
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/license/20210204124852_license_subscription_id.yml)
+
+Group: `group::license`
+
+Data Category: `Standard`
+
+Status: `data_available`
+
+Tiers: `premium`, `ultimate`
+
+### `license_trial`
+
+Whether this is a trial license or not
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/license/20210204124851_license_trial.yml)
+
+Group: `group::license`
+
+Data Category: `Subscription`
+
+Status: `data_available`
+
+Tiers: `premium`, `ultimate`
+
+### `license_trial_ends_on`
+
+Date the trial license ends on
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/license/20210204124926_license_trial_ends_on.yml)
+
+Group: `group::license`
+
+Data Category: `Subscription`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `license_user_count`
+
+The number of seats included in the license
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/license/20210204124843_license_user_count.yml)
+
+Group: `group::license`
+
+Data Category: `Subscription`
+
+Status: `data_available`
+
+Tiers: `premium`, `ultimate`
+
+### `licensee.Company`
+
+Company on the GitLab license
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/license/20210204124841_company.yml)
+
+Group: `group::license`
+
+Data Category: `Subscription`
+
+Status: `data_available`
+
+Tiers: `premium`, `ultimate`
+
+### `licensee.Email`
+
+Email on the GitLab license
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/license/20210204124839_email.yml)
+
+Group: `group::license`
+
+Data Category: `Subscription`
+
+Status: `data_available`
+
+Tiers: `premium`, `ultimate`
+
+### `licensee.Name`
+
+Name on the GitLab license
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/license/20210204124837_name.yml)
+
+Group: `group::license`
+
+Data Category: `Subscription`
+
+Status: `data_available`
+
+Tiers: `premium`, `ultimate`
+
+### `mail.smtp_server`
+
+The value of the SMTP server that is used
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/settings/20210216174829_smtp_server.yml)
+
+Group: `group::activation`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `mattermost_enabled`
+
+Whether Mattermost is enabled
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/settings/20210204124908_mattermost_enabled.yml)
+
+Group: `group::ecosystem`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `object_store.artifacts.enabled`
+
+Whether Object Storage is enabled for Artifacts
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/settings/20210216180836_enabled.yml)
+
+Group: `group::memory`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `object_store.artifacts.object_store.background_upload`
+
+Whether Background Upload for Object Storage is enabled for Artifacts
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/settings/20210216180841_background_upload.yml)
+
+Group: `group::memory`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `object_store.artifacts.object_store.direct_upload`
+
+Whether Direct Upload for Object Storage is enabled for Artifacts
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/settings/20210216180840_direct_upload.yml)
+
+Group: `group::memory`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `object_store.artifacts.object_store.enabled`
+
+Whether Object Storage is enabled for Artifacts
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/settings/20210216180838_enabled.yml)
+
+Group: `group::memory`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `object_store.artifacts.object_store.provider`
+
+What Object Storage provider has been configured for Artifacts
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/settings/20210216180843_provider.yml)
+
+Group: `group::memory`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `object_store.external_diffs.enabled`
+
+Whether Object Storage is enabled for External Diffs
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/settings/20210216180845_enabled.yml)
+
+Group: `group::memory`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `object_store.external_diffs.object_store.background_upload`
+
+Whether Background Upload for Object Storage is enabled for External Diffs
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/settings/20210216180851_background_upload.yml)
+
+Group: `group::memory`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `object_store.external_diffs.object_store.direct_upload`
+
+Whether Direct Upload for Object Storage is enabled for External Diffs
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/settings/20210216180849_direct_upload.yml)
+
+Group: `group::memory`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `object_store.external_diffs.object_store.enabled`
+
+Whether Object Storage is enabled for External Diffs
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/settings/20210216180847_enabled.yml)
+
+Group: `group::memory`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `object_store.external_diffs.object_store.provider`
+
+What Object Storage provider has been configured for External Diffs
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/settings/20210216180852_provider.yml)
+
+Group: `group::memory`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `object_store.lfs.enabled`
+
+Whether Object Storage is enabled for LFS
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/settings/20210216180854_enabled.yml)
+
+Group: `group::memory`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `object_store.lfs.object_store.background_upload`
+
+Whether Background Upload for Object Storage is enabled for LFS
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/settings/20210216180900_background_upload.yml)
+
+Group: `group::memory`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `object_store.lfs.object_store.direct_upload`
+
+Whether Direct Upload for Object Storage is enabled for LFS
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/settings/20210216180858_direct_upload.yml)
+
+Group: `group::memory`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `object_store.lfs.object_store.enabled`
+
+Whether Object Storage is enabled for LFS
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/settings/20210216180856_enabled.yml)
+
+Group: `group::memory`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `object_store.lfs.object_store.provider`
+
+What Object Storage provider has been configured for LFS
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/settings/20210216180902_provider.yml)
+
+Group: `group::memory`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `object_store.packages.enabled`
+
+Whether Object Storage is enabled for Uploads
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/settings/20210216180913_enabled.yml)
+
+Group: `group::memory`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `object_store.packages.object_store.background_upload`
+
+Whether Background Upload for Object Storage is enabled for Packages
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/settings/20210216180918_background_upload.yml)
+
+Group: `group::memory`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `object_store.packages.object_store.direct_upload`
+
+Whether Direct Upload for Object Storage is enabled for Packages
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/settings/20210216180916_direct_upload.yml)
+
+Group: `group::memory`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `object_store.packages.object_store.enabled`
+
+Whether Object Storage is enabled for Packages
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/settings/20210216180915_enabled.yml)
+
+Group: `group::memory`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `object_store.packages.object_store.provider`
+
+What Object Storage provider has been configured for Packages
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/settings/20210216180920_provider.yml)
+
+Group: `group::memory`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `object_store.uploads.enabled`
+
+Whether Object Storage is enabled for Uploads
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/settings/20210216180903_enabled.yml)
+
+Group: `group::memory`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `object_store.uploads.object_store.background_upload`
+
+Whether Background Upload for Object Storage is enabled for Uploads
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/settings/20210216180909_background_upload.yml)
+
+Group: `group::memory`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `object_store.uploads.object_store.direct_upload`
+
+Whether Direct Upload for Object Storage is enabled for Uploads
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/settings/20210216180907_direct_upload.yml)
+
+Group: `group::memory`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `object_store.uploads.object_store.enabled`
+
+Whether Object Storage is enabled for Uploads
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/settings/20210216180905_enabled.yml)
+
+Group: `group::memory`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `object_store.uploads.object_store.provider`
+
+What Object Storage provider has been configured for Uploads
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/settings/20210216180911_provider.yml)
+
+Group: `group::memory`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `omniauth_enabled`
+
+Whether OmniAuth is enabled
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/settings/20210204124910_omniauth_enabled.yml)
+
+Group: `group::product intelligence`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`
+
+### `prometheus_enabled`
+
+Whether the bundled Prometheus is enabled
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/settings/20210204124912_prometheus_enabled.yml)
+
+Group: `group::product intelligence`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `prometheus_metrics_enabled`
+
+Whether Prometheus Metrics endpoint is enabled
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/settings/20210204124914_prometheus_metrics_enabled.yml)
+
+Group: `group::product intelligence`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `recorded_at`
+
+When the Usage Ping computation was started
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/license/20210201124932_recorded_at.yml)
+
+Group: `group::product intelligence`
+
+Data Category: `Standard`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `recording_ce_finished_at`
+
+When the core features were computed
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/license/20210204124938_recording_ce_finished_at.yml)
+
+Group: `group::product intelligence`
+
+Data Category: `Standard`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `recording_ee_finished_at`
+
+When the EE-specific features were computed
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/license/20210204124940_recording_ee_finished_at.yml)
+
+Group: `group::product intelligence`
+
+Data Category: `Standard`
+
+Status: `data_available`
+
+Tiers: `premium`, `ultimate`
+
+### `redis_hll_counters.analytics.analytics_total_unique_counts_monthly`
+
+The number of unique users who visited any analytics feature by month
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216175016_analytics_total_unique_counts_monthly.yml)
+
+Group: `group::optimize`
+
+Data Category: `Operational`
+
+Status: `data_available`
+
+Tiers: `free`
+
+### `redis_hll_counters.analytics.analytics_total_unique_counts_weekly`
+
+The number of unique users who visited any analytics feature by week
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_7d/20210216175014_analytics_total_unique_counts_weekly.yml)
+
+Group: `group::optimize`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers:
+
+### `redis_hll_counters.analytics.g_analytics_contribution_monthly`
+
+Unique visitors to /groups/:group/-/contribution_analytics by month
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_28d/20210216174914_g_analytics_contribution_monthly.yml)
+
+Group: `group::optimize`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`
+
+### `redis_hll_counters.analytics.g_analytics_contribution_weekly`
+
+Unique visitors to /groups/:group/-/contribution_analytics by week
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_7d/20210216174912_g_analytics_contribution_weekly.yml)
+
+Group: `group::optimize`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers:
+
+### `redis_hll_counters.analytics.g_analytics_insights_monthly`
+
+Unique visitors to /groups/:group/-/insights/ by month
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_28d/20210216174918_g_analytics_insights_monthly.yml)
+
+Group: `group::optimize`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`
+
+### `redis_hll_counters.analytics.g_analytics_insights_weekly`
+
+Unique visitors to /groups/:group/-/insights/ by week
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_7d/20210216174916_g_analytics_insights_weekly.yml)
+
+Group: `group::optimize`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers:
+
+### `redis_hll_counters.analytics.g_analytics_issues_monthly`
+
+Unique visitors to /groups/:group/-/issues_analytics by month
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_28d/20210216174921_g_analytics_issues_monthly.yml)
+
+Group: `group::optimize`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`
+
+### `redis_hll_counters.analytics.g_analytics_issues_weekly`
+
+Unique visitors to /groups/:group/-/issues_analytics by week
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_7d/20210216174919_g_analytics_issues_weekly.yml)
+
+Group: `group::optimize`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers:
+
+### `redis_hll_counters.analytics.g_analytics_merge_request_monthly`
+
+Missing description
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216175004_g_analytics_merge_request_monthly.yml)
+
+Group: `group::optimize`
+
+Data Category: `Optional`
+
+Status: `removed`
+
+Tiers: `free`
+
+### `redis_hll_counters.analytics.g_analytics_merge_request_weekly`
+
+Missing description
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_7d/20210216175002_g_analytics_merge_request_weekly.yml)
+
+Group: `group::optimize`
+
+Data Category: `Optional`
+
+Status: `removed`
+
+Tiers:
+
+### `redis_hll_counters.analytics.g_analytics_productivity_monthly`
+
+Unique visitors to /groups/:group/-/analytics/productivity_analytics by month
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_28d/20210216174926_g_analytics_productivity_monthly.yml)
+
+Group: `group::optimize`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`
+
+### `redis_hll_counters.analytics.g_analytics_productivity_weekly`
+
+Unique visitors to /groups/:group/-/analytics/productivity_analytics by week
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_7d/20210216174923_g_analytics_productivity_weekly.yml)
+
+Group: `group::optimize`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers:
+
+### `redis_hll_counters.analytics.g_analytics_valuestream_monthly`
+
+Unique visitors to /groups/:group/-/analytics/value_stream_analytics by month
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_28d/20210216174929_g_analytics_valuestream_monthly.yml)
+
+Group: `group::optimize`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`
+
+### `redis_hll_counters.analytics.g_analytics_valuestream_weekly`
+
+Unique visitors to /groups/:group/-/analytics/value_stream_analytics by week
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_7d/20210216174927_g_analytics_valuestream_weekly.yml)
+
+Group: `group::optimize`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers:
+
+### `redis_hll_counters.analytics.i_analytics_cohorts_monthly`
+
+Missing description
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216174956_i_analytics_cohorts_monthly.yml)
+
+Group: `group::utilization`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`
+
+### `redis_hll_counters.analytics.i_analytics_cohorts_weekly`
+
+Missing description
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_7d/20210216174955_i_analytics_cohorts_weekly.yml)
+
+Group: `group::utilization`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers:
+
+### `redis_hll_counters.analytics.i_analytics_dev_ops_adoption_monthly`
+
+Counts visits to DevOps Adoption page per month
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_28d/20210401092244_i_analytics_dev_ops_adoption_monthly.yml)
+
+Group: `group::optimize`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `premium`, `ultimate`
+
+### `redis_hll_counters.analytics.i_analytics_dev_ops_adoption_weekly`
+
+Counts visits to DevOps Adoption page per week
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_7d/20210401092244_i_analytics_dev_ops_adoption_weekly.yml)
+
+Group: `group::optimize`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `premium`, `ultimate`
+
+### `redis_hll_counters.analytics.i_analytics_dev_ops_score_monthly`
+
+Unique visitors to /admin/dev_ops_report by month
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216175000_i_analytics_dev_ops_score_monthly.yml)
+
+Group: `group::optimize`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`
+
+### `redis_hll_counters.analytics.i_analytics_dev_ops_score_weekly`
+
+Unique visitors to /admin/dev_ops_report by week
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_7d/20210216174958_i_analytics_dev_ops_score_weekly.yml)
+
+Group: `group::optimize`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers:
+
+### `redis_hll_counters.analytics.i_analytics_instance_statistics_monthly`
+
+Unique visitors to /admin/usage_trends by month
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216175012_i_analytics_instance_statistics_monthly.yml)
+
+Group: `group::optimize`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`
+
+### `redis_hll_counters.analytics.i_analytics_instance_statistics_weekly`
+
+Unique visitors to /admin/usage_trends by week
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_7d/20210216175010_i_analytics_instance_statistics_weekly.yml)
+
+Group: `group::optimize`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers:
+
+### `redis_hll_counters.analytics.p_analytics_code_reviews_monthly`
+
+Unique visitors to /:group/:project/-/analytics/code_reviews by month
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_28d/20210216174937_p_analytics_code_reviews_monthly.yml)
+
+Group: `group::optimize`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`
+
+### `redis_hll_counters.analytics.p_analytics_code_reviews_weekly`
+
+Unique visitors to /:group/:project/-/analytics/code_reviews by week
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_7d/20210216174935_p_analytics_code_reviews_weekly.yml)
+
+Group: `group::optimize`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers:
+
+### `redis_hll_counters.analytics.p_analytics_insights_monthly`
+
+Unique visitors to /:group/:project/insights/ by month
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_28d/20210216174945_p_analytics_insights_monthly.yml)
+
+Group: `group::optimize`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`
+
+### `redis_hll_counters.analytics.p_analytics_insights_weekly`
+
+Unique visitors to /:group/:project/insights/ by week
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_7d/20210216174943_p_analytics_insights_weekly.yml)
+
+Group: `group::optimize`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers:
+
+### `redis_hll_counters.analytics.p_analytics_issues_monthly`
+
+Unique visitors to /:group/:project/-/analytics/issues_analytics by week
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_28d/20210216174949_p_analytics_issues_monthly.yml)
+
+Group: `group::optimize`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`
+
+### `redis_hll_counters.analytics.p_analytics_issues_weekly`
+
+Unique visitors to /:group/:project/-/analytics/issues_analytics by week
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_7d/20210216174947_p_analytics_issues_weekly.yml)
+
+Group: `group::optimize`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers:
+
+### `redis_hll_counters.analytics.p_analytics_merge_request_monthly`
+
+Unique visitors to /:group/:project/-/analytics/merge_request_analytics by month
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_28d/20210216175008_p_analytics_merge_request_monthly.yml)
+
+Group: `group::optimize`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`
+
+### `redis_hll_counters.analytics.p_analytics_merge_request_weekly`
+
+Unique visitors to /:group/:project/-/analytics/merge_request_analytics by week
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_7d/20210216175006_p_analytics_merge_request_weekly.yml)
+
+Group: `group::optimize`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers:
+
+### `redis_hll_counters.analytics.p_analytics_pipelines_monthly`
+
+Unique visitors to /groups/:group/-/analytics/ci_cd by month
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216174933_p_analytics_pipelines_monthly.yml)
+
+Group: `group::optimize`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`
+
+### `redis_hll_counters.analytics.p_analytics_pipelines_weekly`
+
+Unique visitors to /groups/:group/-/analytics/ci_cd by week
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_7d/20210216174931_p_analytics_pipelines_weekly.yml)
+
+Group: `group::optimize`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers:
+
+### `redis_hll_counters.analytics.p_analytics_repo_monthly`
+
+Unique visitors to /:group/:project/-/graphs/master/charts by month
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_28d/20210216174953_p_analytics_repo_monthly.yml)
+
+Group: `group::optimize`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`
+
+### `redis_hll_counters.analytics.p_analytics_repo_weekly`
+
+Unique visitors to /:group/:project/-/graphs/master/charts by week
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_7d/20210216174951_p_analytics_repo_weekly.yml)
+
+Group: `group::optimize`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers:
+
+### `redis_hll_counters.analytics.p_analytics_valuestream_monthly`
+
+Unique visitors to /:group/:project/-/value_stream_analytics by month
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216174941_p_analytics_valuestream_monthly.yml)
+
+Group: `group::optimize`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`
+
+### `redis_hll_counters.analytics.p_analytics_valuestream_weekly`
+
+Unique visitors to /:group/:project/-/value_stream_analytics by week
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_7d/20210216174939_p_analytics_valuestream_weekly.yml)
+
+Group: `group::optimize`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers:
+
+### `redis_hll_counters.analytics.users_viewing_analytics_group_devops_adoption_monthly`
+
+Counts visits to DevOps Adoption page per month
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_28d/20210419105414_users_viewing_analytics_group_devops_adoption_monthly.yml)
+
+Group: `group::optimize`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `premium`, `ultimate`
+
+### `redis_hll_counters.analytics.users_viewing_analytics_group_devops_adoption_weekly`
+
+Counts visits to DevOps Adoption page per week
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_7d/20210419105408_users_viewing_analytics_group_devops_adoption_weekly.yml)
+
+Group: `group::optimize`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `premium`, `ultimate`
+
+### `redis_hll_counters.ci_secrets_management.i_ci_secrets_management_vault_build_created_monthly`
+
+Monthly active users creating pipelines that that have the Vault JWT with it.'
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_28d/20210216184251_i_ci_secrets_management_vault_build_created_monthly.yml)
+
+Group: `group::configure`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `premium`, `ultimate`
+
+### `redis_hll_counters.ci_secrets_management.i_ci_secrets_management_vault_build_created_weekly`
+
+Missing description
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_7d/20210216184249_i_ci_secrets_management_vault_build_created_weekly.yml)
+
+Group: ``
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers:
+
+### `redis_hll_counters.ci_templates.ci_templates_total_unique_counts_monthly`
+
+Total count of pipelines runs
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216184559_ci_templates_total_unique_counts_monthly.yml)
+
+Group: `group::configure`
+
+Data Category: `Optional`
+
+Status: `broken`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.ci_templates.ci_templates_total_unique_counts_weekly`
+
+Total count of pipelines runs
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_7d/20210216184557_ci_templates_total_unique_counts_weekly.yml)
+
+Group: `group::configure`
+
+Data Category: `Optional`
+
+Status: `broken`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.ci_templates.p_ci_templates_5_min_production_app_monthly`
+
+Number of projects using 5 min production app CI template in last 7 days.
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216184517_p_ci_templates_5_min_production_app_monthly.yml)
+
+Group: `group::5-min-app`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.ci_templates.p_ci_templates_5_min_production_app_weekly`
+
+Number of projects using 5 min production app CI template in last 7 days.
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_7d/20210216184515_p_ci_templates_5_min_production_app_weekly.yml)
+
+Group: `group::5-min-app`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.ci_templates.p_ci_templates_auto_devops_build_monthly`
+
+Count of pipelines using the Auto Build template
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216184534_p_ci_templates_auto_devops_build_monthly.yml)
+
+Group: `group::configure`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.ci_templates.p_ci_templates_auto_devops_build_weekly`
+
+Missing description
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_7d/20210216184532_p_ci_templates_auto_devops_build_weekly.yml)
+
+Group: ``
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers:
+
+### `redis_hll_counters.ci_templates.p_ci_templates_auto_devops_deploy_latest_monthly`
+
+Count of pipelines using the latest Auto Deploy template
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216184542_p_ci_templates_auto_devops_deploy_latest_monthly.yml)
+
+Group: `group::configure`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.ci_templates.p_ci_templates_auto_devops_deploy_latest_weekly`
+
+Missing description
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_7d/20210216184540_p_ci_templates_auto_devops_deploy_latest_weekly.yml)
+
+Group: ``
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers:
+
+### `redis_hll_counters.ci_templates.p_ci_templates_auto_devops_deploy_monthly`
+
+Count of pipelines using the stable Auto Deploy template
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216184538_p_ci_templates_auto_devops_deploy_monthly.yml)
+
+Group: `group::configure`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.ci_templates.p_ci_templates_auto_devops_deploy_weekly`
+
+Missing description
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_7d/20210216184536_p_ci_templates_auto_devops_deploy_weekly.yml)
+
+Group: ``
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers:
+
+### `redis_hll_counters.ci_templates.p_ci_templates_auto_devops_monthly`
+
+Count of pipelines using the Auto DevOps template
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216184523_p_ci_templates_auto_devops_monthly.yml)
+
+Group: `group::configure`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.ci_templates.p_ci_templates_auto_devops_weekly`
+
+Missing description
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_7d/20210216184520_p_ci_templates_auto_devops_weekly.yml)
+
+Group: ``
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers:
+
+### `redis_hll_counters.ci_templates.p_ci_templates_aws_cf_deploy_ec2_monthly`
+
+Count of projects using `AWS/CF-Provision-and-Deploy-EC2.gitlab-ci.yml` template in last 28 days.
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216184526_p_ci_templates_aws_cf_deploy_ec2_monthly.yml)
+
+Group: `group::release`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.ci_templates.p_ci_templates_aws_cf_deploy_ec2_weekly`
+
+Count of projects using `AWS/CF-Provision-and-Deploy-EC2.gitlab-ci.yml` template in last 7 days.
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_7d/20210216184524_p_ci_templates_aws_cf_deploy_ec2_weekly.yml)
+
+Group: `group::release`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.ci_templates.p_ci_templates_aws_deploy_ecs_monthly`
+
+Count of projects using `AWS/Deploy-ECS.gitlab-ci.yml` template in last 28 days.
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216184530_p_ci_templates_aws_deploy_ecs_monthly.yml)
+
+Group: `group::release`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.ci_templates.p_ci_templates_aws_deploy_ecs_weekly`
+
+Count of projects using `AWS/Deploy-ECS.gitlab-ci.yml` template in last 7 days.
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_7d/20210216184528_p_ci_templates_aws_deploy_ecs_weekly.yml)
+
+Group: `group::release`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.ci_templates.p_ci_templates_implicit_auto_devops_build_monthly`
+
+Count of pipelines with implicit Auto Build runs
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216184502_p_ci_templates_implicit_auto_devops_build_monthly.yml)
+
+Group: `group::configure`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.ci_templates.p_ci_templates_implicit_auto_devops_build_weekly`
+
+Missing description
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_7d/20210216184500_p_ci_templates_implicit_auto_devops_build_weekly.yml)
+
+Group: ``
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers:
+
+### `redis_hll_counters.ci_templates.p_ci_templates_implicit_auto_devops_deploy_monthly`
+
+Count of pipelines with implicit Auto Deploy runs
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216184506_p_ci_templates_implicit_auto_devops_deploy_monthly.yml)
+
+Group: `group::configure`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.ci_templates.p_ci_templates_implicit_auto_devops_deploy_weekly`
+
+Missing description
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_7d/20210216184504_p_ci_templates_implicit_auto_devops_deploy_weekly.yml)
+
+Group: ``
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers:
+
+### `redis_hll_counters.ci_templates.p_ci_templates_implicit_auto_devops_monthly`
+
+Count of pipelines with implicit Auto DevOps runs
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216184458_p_ci_templates_implicit_auto_devops_monthly.yml)
+
+Group: `group::configure`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.ci_templates.p_ci_templates_implicit_auto_devops_weekly`
+
+Missing description
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_7d/20210216184456_p_ci_templates_implicit_auto_devops_weekly.yml)
+
+Group: ``
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers:
+
+### `redis_hll_counters.ci_templates.p_ci_templates_implicit_security_sast_monthly`
+
+Missing description
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216184510_p_ci_templates_implicit_security_sast_monthly.yml)
+
+Group: ``
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`
+
+### `redis_hll_counters.ci_templates.p_ci_templates_implicit_security_sast_weekly`
+
+Missing description
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_7d/20210216184508_p_ci_templates_implicit_security_sast_weekly.yml)
+
+Group: ``
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers:
+
+### `redis_hll_counters.ci_templates.p_ci_templates_implicit_security_secret_detection_monthly`
+
+Missing description
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216184513_p_ci_templates_implicit_security_secret_detection_monthly.yml)
+
+Group: ``
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`
+
+### `redis_hll_counters.ci_templates.p_ci_templates_implicit_security_secret_detection_weekly`
+
+Missing description
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_7d/20210216184512_p_ci_templates_implicit_security_secret_detection_weekly.yml)
+
+Group: ``
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers:
+
+### `redis_hll_counters.ci_templates.p_ci_templates_security_sast_monthly`
+
+Missing description
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216184546_p_ci_templates_security_sast_monthly.yml)
+
+Group: ``
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`
+
+### `redis_hll_counters.ci_templates.p_ci_templates_security_sast_weekly`
+
+Missing description
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_7d/20210216184544_p_ci_templates_security_sast_weekly.yml)
+
+Group: ``
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers:
+
+### `redis_hll_counters.ci_templates.p_ci_templates_security_secret_detection_monthly`
+
+Missing description
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216184551_p_ci_templates_security_secret_detection_monthly.yml)
+
+Group: ``
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`
+
+### `redis_hll_counters.ci_templates.p_ci_templates_security_secret_detection_weekly`
+
+Missing description
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_7d/20210216184549_p_ci_templates_security_secret_detection_weekly.yml)
+
+Group: ``
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers:
+
+### `redis_hll_counters.ci_templates.p_ci_templates_terraform_base_latest_monthly`
+
+Count of pipelines that include the terraform base template from GitLab
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216184555_p_ci_templates_terraform_base_latest_monthly.yml)
+
+Group: `group::configure`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.ci_templates.p_ci_templates_terraform_base_latest_weekly`
+
+Missing description
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_7d/20210216184553_p_ci_templates_terraform_base_latest_weekly.yml)
+
+Group: ``
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers:
+
+### `redis_hll_counters.code_review.code_review_total_unique_counts_monthly`
+
+Count of unique users per month who interact with a merge request
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216184454_code_review_total_unique_counts_monthly.yml)
+
+Group: `group::code review`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.code_review.code_review_total_unique_counts_weekly`
+
+Count of unique users per week who interact with a merge request
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_7d/20210216184452_code_review_total_unique_counts_weekly.yml)
+
+Group: `group::code review`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.code_review.i_code_review_click_diff_view_setting_monthly`
+
+Count of users clicking diff view setting
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210607113556_i_code_review_click_diff_view_setting_monthly.yml)
+
+Group: `group::code review`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.code_review.i_code_review_click_diff_view_setting_weekly`
+
+Count of users clicking diff view setting
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_7d/20210607113552_i_code_review_click_diff_view_setting_weekly.yml)
+
+Group: `group::code review`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.code_review.i_code_review_click_file_browser_setting_monthly`
+
+Count of users clicking merge request file browser setting
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210421145818_i_code_review_click_file_browser_setting_monthly.yml)
+
+Group: `group::code review`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.code_review.i_code_review_click_file_browser_setting_weekly`
+
+Count of users with merge request file list setting
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_7d/20210421145814_i_code_review_click_file_browser_setting_weekly.yml)
+
+Group: `group::code review`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.code_review.i_code_review_click_single_file_mode_setting_monthly`
+
+Count of users clicking single file mode setting
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210421144352_i_code_review_click_single_file_mode_setting_monthly.yml)
+
+Group: `group::code review`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.code_review.i_code_review_click_single_file_mode_setting_weekly`
+
+Count of users clicking single file mode setting
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_7d/20210421144349_i_code_review_click_single_file_mode_setting_weekly.yml)
+
+Group: `group::code review`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.code_review.i_code_review_click_whitespace_setting_monthly`
+
+Count of users clicking merge request whitespae setting
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210421145945_i_code_review_click_whitespace_setting_monthly.yml)
+
+Group: `group::code review`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.code_review.i_code_review_click_whitespace_setting_weekly`
+
+Count of users clicking merge request whitespae setting
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_7d/20210421145942_i_code_review_click_whitespace_setting_weekly.yml)
+
+Group: `group::code review`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.code_review.i_code_review_diff_hide_whitespace_monthly`
+
+Count of users with show whitespace disabled
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210422102010_i_code_review_diff_hide_whitespace_monthly.yml)
+
+Group: `group::code review`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.code_review.i_code_review_diff_hide_whitespace_weekly`
+
+Count of users with show whitespace disabled
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_7d/20210422102007_i_code_review_diff_hide_whitespace_weekly.yml)
+
+Group: `group::code review`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.code_review.i_code_review_diff_multiple_files_monthly`
+
+Count of users with single mode disabled
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210422102202_i_code_review_diff_multiple_files_monthly.yml)
+
+Group: `group::code review`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.code_review.i_code_review_diff_multiple_files_weekly`
+
+Count of users with single mode disabled
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_7d/20210422102159_i_code_review_diff_multiple_files_weekly.yml)
+
+Group: `group::code review`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.code_review.i_code_review_diff_show_whitespace_monthly`
+
+Count of users with show whitespace enabled
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210422101928_i_code_review_diff_show_whitespace_monthly.yml)
+
+Group: `group::code review`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.code_review.i_code_review_diff_show_whitespace_weekly`
+
+Count of users with show whitespace enabled
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_7d/20210422101925_i_code_review_diff_show_whitespace_weekly.yml)
+
+Group: `group::code review`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.code_review.i_code_review_diff_single_file_monthly`
+
+Count of users with single file mode enabled
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210422102121_i_code_review_diff_single_file_monthly.yml)
+
+Group: `group::code review`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.code_review.i_code_review_diff_single_file_weekly`
+
+Count of users with single file mode enabled
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_7d/20210422102118_i_code_review_diff_single_file_weekly.yml)
+
+Group: `group::code review`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.code_review.i_code_review_diff_view_inline_monthly`
+
+Count of users with merge request view type as inline
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210422101516_i_code_review_diff_view_inline_monthly.yml)
+
+Group: `group::code review`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.code_review.i_code_review_diff_view_inline_weekly`
+
+Count of users with merge request view type as inline
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_7d/20210422101512_i_code_review_diff_view_inline_weekly.yml)
+
+Group: `group::code review`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.code_review.i_code_review_diff_view_parallel_monthly`
+
+Count of users with merge request view type as parallel
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210422101613_i_code_review_diff_view_parallel_monthly.yml)
+
+Group: `group::code review`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.code_review.i_code_review_diff_view_parallel_weekly`
+
+Count of users with merge request view type as parallel
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_7d/20210422101609_i_code_review_diff_view_parallel_weekly.yml)
+
+Group: `group::code review`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.code_review.i_code_review_edit_mr_desc_monthly`
+
+Count of unique users per month who edit the description of a merge request
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216184342_i_code_review_edit_mr_desc_monthly.yml)
+
+Group: `group::code review`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.code_review.i_code_review_edit_mr_desc_weekly`
+
+Count of unique users per week who edit the description of a merge request
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_7d/20210216184340_i_code_review_edit_mr_desc_weekly.yml)
+
+Group: `group::code review`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.code_review.i_code_review_edit_mr_title_monthly`
+
+Count of unique users per month who edit the title of a merge request
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216184338_i_code_review_edit_mr_title_monthly.yml)
+
+Group: `group::code review`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.code_review.i_code_review_edit_mr_title_weekly`
+
+Count of unique users per week who edit the title of a merge request
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_7d/20210216184336_i_code_review_edit_mr_title_weekly.yml)
+
+Group: `group::code review`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.code_review.i_code_review_file_browser_list_view_monthly`
+
+Count of users with merge request file list setting
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210422101852_i_code_review_file_browser_list_view_monthly.yml)
+
+Group: `group::code review`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.code_review.i_code_review_file_browser_list_view_weekly`
+
+Count of users with merge request file list setting
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_7d/20210422101849_i_code_review_file_browser_list_view_weekly.yml)
+
+Group: `group::code review`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.code_review.i_code_review_file_browser_tree_view_monthly`
+
+Count of users with merge request file tree setting
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210422101753_i_code_review_file_browser_tree_view_monthly.yml)
+
+Group: `group::code review`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.code_review.i_code_review_file_browser_tree_view_weekly`
+
+Count of users with merge request file tree setting
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_7d/20210422101750_i_code_review_file_browser_tree_view_weekly.yml)
+
+Group: `group::code review`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.code_review.i_code_review_mr_diffs_monthly`
+
+Count of unique merge requests per month with diffs viewed
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216175120_i_code_review_mr_diffs_monthly.yml)
+
+Group: `group::code review`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.code_review.i_code_review_mr_diffs_weekly`
+
+Count of unique merge requests per week with diffs viewed
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_7d/20210216175118_i_code_review_mr_diffs_weekly.yml)
+
+Group: `group::code review`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.code_review.i_code_review_mr_single_file_diffs_monthly`
+
+Count of unique merge requests per month with diffs viewed file by file
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216175128_i_code_review_mr_single_file_diffs_monthly.yml)
+
+Group: `group::code review`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.code_review.i_code_review_mr_single_file_diffs_weekly`
+
+Count of unique merge requests per week with diffs viewed file by file
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_7d/20210216175126_i_code_review_mr_single_file_diffs_weekly.yml)
+
+Group: `group::code review`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.code_review.i_code_review_user_add_suggestion_monthly`
+
+Count of unique users per month who added a suggestion
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216175159_i_code_review_user_add_suggestion_monthly.yml)
+
+Group: `group::code review`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.code_review.i_code_review_user_add_suggestion_weekly`
+
+Count of unique users per week who added a suggestion
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_7d/20210216175158_i_code_review_user_add_suggestion_weekly.yml)
+
+Group: `group::code review`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.code_review.i_code_review_user_apply_suggestion_monthly`
+
+Count of unique users per month who applied a suggestion
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216175203_i_code_review_user_apply_suggestion_monthly.yml)
+
+Group: `group::code review`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.code_review.i_code_review_user_apply_suggestion_weekly`
+
+Count of unique users per week who applied a suggestion
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_7d/20210216175201_i_code_review_user_apply_suggestion_weekly.yml)
+
+Group: `group::code review`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.code_review.i_code_review_user_approval_rule_added_monthly`
+
+Count of unique users per month who add an approval rule to a merge request
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216184434_i_code_review_user_approval_rule_added_monthly.yml)
+
+Group: `group::code review`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.code_review.i_code_review_user_approval_rule_added_weekly`
+
+Count of unique users per week who add an approval rule to a merge request
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_7d/20210216184432_i_code_review_user_approval_rule_added_weekly.yml)
+
+Group: `group::code review`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.code_review.i_code_review_user_approval_rule_deleted_monthly`
+
+Count of unique users per month who delete an approval rule to a merge request
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216184438_i_code_review_user_approval_rule_deleted_monthly.yml)
+
+Group: `group::code review`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.code_review.i_code_review_user_approval_rule_deleted_weekly`
+
+Count of unique users per week who delete an approval rule to a merge request
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_7d/20210216184436_i_code_review_user_approval_rule_deleted_weekly.yml)
+
+Group: `group::code review`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.code_review.i_code_review_user_approval_rule_edited_monthly`
+
+Count of unique users per month who delete an approval rule to a merge request
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216184442_i_code_review_user_approval_rule_edited_monthly.yml)
+
+Group: `group::code review`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.code_review.i_code_review_user_approval_rule_edited_weekly`
+
+Count of unique users per week who edit an approval rule to a merge request
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_7d/20210216184440_i_code_review_user_approval_rule_edited_weekly.yml)
+
+Group: `group::code review`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.code_review.i_code_review_user_approve_mr_monthly`
+
+Count of unique users per month who approve a merge request
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216184322_i_code_review_user_approve_mr_monthly.yml)
+
+Group: `group::code review`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.code_review.i_code_review_user_approve_mr_weekly`
+
+Count of unique users per week who approve a merge request
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_7d/20210216184320_i_code_review_user_approve_mr_weekly.yml)
+
+Group: `group::code review`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.code_review.i_code_review_user_assigned_monthly`
+
+Count of unique users per month who are assigned to a merge request
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216184418_i_code_review_user_assigned_monthly.yml)
+
+Group: `group::code review`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.code_review.i_code_review_user_assigned_weekly`
+
+Count of unique users per week who are assigned to a merge request
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_7d/20210216184416_i_code_review_user_assigned_weekly.yml)
+
+Group: `group::code review`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.code_review.i_code_review_user_assignees_changed_monthly`
+
+Count of unique users per month who changed assignees of a MR
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210302114145_i_code_review_user_assignees_changed_monthly.yml)
+
+Group: `group::code review`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.code_review.i_code_review_user_assignees_changed_weekly`
+
+Count of unique users per week who changed assignees of a MR
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_7d/20210302114202_i_code_review_user_assignees_changed_weekly.yml)
+
+Group: `group::code review`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.code_review.i_code_review_user_close_mr_monthly`
+
+Count of unique users per month who closed a MR
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216175136_i_code_review_user_close_mr_monthly.yml)
+
+Group: `group::code review`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.code_review.i_code_review_user_close_mr_weekly`
+
+Count of unique users per week who closed a MR
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_7d/20210216175134_i_code_review_user_close_mr_weekly.yml)
+
+Group: `group::code review`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.code_review.i_code_review_user_create_mr_comment_monthly`
+
+Count of unique users per month who commented on a MR
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216175148_i_code_review_user_create_mr_comment_monthly.yml)
+
+Group: `group::code review`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.code_review.i_code_review_user_create_mr_comment_weekly`
+
+Count of unique users per week who commented on a MR
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_7d/20210216175146_i_code_review_user_create_mr_comment_weekly.yml)
+
+Group: `group::code review`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.code_review.i_code_review_user_create_mr_from_issue_monthly`
+
+Count of unique users per month who create a merge request from an issue
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216184450_i_code_review_user_create_mr_from_issue_monthly.yml)
+
+Group: `group::code review`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.code_review.i_code_review_user_create_mr_from_issue_weekly`
+
+Count of unique users per week who create a merge request from an issue
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_7d/20210216184448_i_code_review_user_create_mr_from_issue_weekly.yml)
+
+Group: `group::code review`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.code_review.i_code_review_user_create_mr_monthly`
+
+Count of unique users per month who created a MR
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216175132_i_code_review_user_create_mr_monthly.yml)
+
+Group: `group::code review`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.code_review.i_code_review_user_create_mr_weekly`
+
+Count of unique users per week who created a MR
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_7d/20210216175130_i_code_review_user_create_mr_weekly.yml)
+
+Group: `group::code review`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.code_review.i_code_review_user_create_multiline_mr_comment_monthly`
+
+Count of unique users per month who create a multiline comment in a merge request
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216184401_i_code_review_user_create_multiline_mr_comment_monthly.yml)
+
+Group: `group::code review`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.code_review.i_code_review_user_create_multiline_mr_comment_weekly`
+
+Count of unique users per week who create a multiline comment in a merge request
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_7d/20210216184359_i_code_review_user_create_multiline_mr_comment_weekly.yml)
+
+Group: `group::code review`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.code_review.i_code_review_user_create_review_note_monthly`
+
+Count of unique users per month who create a note as part of a merge request review
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216184353_i_code_review_user_create_review_note_monthly.yml)
+
+Group: `group::code review`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.code_review.i_code_review_user_create_review_note_weekly`
+
+Count of unique users per week who create a note as part of a merge request review
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_7d/20210216184351_i_code_review_user_create_review_note_weekly.yml)
+
+Group: `group::code review`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.code_review.i_code_review_user_edit_mr_comment_monthly`
+
+Count of unique users per month who edited a comment on a MR
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216175152_i_code_review_user_edit_mr_comment_monthly.yml)
+
+Group: `group::code review`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.code_review.i_code_review_user_edit_mr_comment_weekly`
+
+Count of unique users per week who edited a comment on a MR
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_7d/20210216175150_i_code_review_user_edit_mr_comment_weekly.yml)
+
+Group: `group::code review`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.code_review.i_code_review_user_edit_multiline_mr_comment_monthly`
+
+Count of unique users per week who edit a multiline comment in a merge request
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216184405_i_code_review_user_edit_multiline_mr_comment_monthly.yml)
+
+Group: `group::code review`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.code_review.i_code_review_user_edit_multiline_mr_comment_weekly`
+
+Count of unique users per week who edit a multiline comment in a merge request
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_7d/20210216184403_i_code_review_user_edit_multiline_mr_comment_weekly.yml)
+
+Group: `group::code review`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.code_review.i_code_review_user_labels_changed_monthly`
+
+Count of unique users per month who changed labels of a MR
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210302110607_i_code_review_user_labels_changed_monthly.yml)
+
+Group: `group::code review`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.code_review.i_code_review_user_labels_changed_weekly`
+
+Count of unique users per week who changed labels of a MR
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_7d/20210302110548_i_code_review_user_labels_changed_weekly.yml)
+
+Group: `group::code review`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.code_review.i_code_review_user_load_conflict_ui_monthly`
+
+Count of unique users per week who load the conflict resolution page
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210514013549_i_code_review_user_load_conflict_ui_monthly.yml)
+
+Group: `group::code review`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.code_review.i_code_review_user_load_conflict_ui_weekly`
+
+Count of unique users per week who load the conflict resolution page
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_7d/20210514013544_i_code_review_user_load_conflict_ui_weekly.yml)
+
+Group: `group::code review`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.code_review.i_code_review_user_marked_as_draft_monthly`
+
+Count of unique users per month who mark a merge request as a draft
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216184422_i_code_review_user_marked_as_draft_monthly.yml)
+
+Group: `group::code review`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.code_review.i_code_review_user_marked_as_draft_weekly`
+
+Count of unique users per week who mark a merge request as a draft
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_7d/20210216184420_i_code_review_user_marked_as_draft_weekly.yml)
+
+Group: `group::code review`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.code_review.i_code_review_user_merge_mr_monthly`
+
+Count of unique users per month who merged a MR
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216175144_i_code_review_user_merge_mr_monthly.yml)
+
+Group: `group::code review`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.code_review.i_code_review_user_merge_mr_weekly`
+
+Count of unique users per week who merged a MR
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_7d/20210216175142_i_code_review_user_merge_mr_weekly.yml)
+
+Group: `group::code review`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.code_review.i_code_review_user_milestone_changed_monthly`
+
+Count of unique users per month who changed milestone of a MR
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210302110520_i_code_review_user_milestone_changed_monthly.yml)
+
+Group: `group::code review`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.code_review.i_code_review_user_milestone_changed_weekly`
+
+Count of unique users per week who changed milestone of a MR
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_7d/20210302110403_i_code_review_user_milestone_changed_weekly.yml)
+
+Group: `group::code review`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.code_review.i_code_review_user_mr_discussion_locked_monthly`
+
+Count of unique users per month who locked a MR
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210301103859_i_code_review_user_mr_discussion_locked_monthly.yml)
+
+Group: `group::code review`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.code_review.i_code_review_user_mr_discussion_locked_weekly`
+
+Count of unique users per week who locked a MR
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_7d/20210302105318_i_code_review_user_mr_discussion_locked_weekly.yml)
+
+Group: `group::code review`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.code_review.i_code_review_user_mr_discussion_unlocked_monthly`
+
+Count of unique users per month who unlocked a MR
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210301103925_i_code_review_user_mr_discussion_unlocked_monthly.yml)
+
+Group: `group::code review`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.code_review.i_code_review_user_mr_discussion_unlocked_weekly`
+
+Count of unique users per week who unlocked a MR
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_7d/20210302105258_i_code_review_user_mr_discussion_unlocked_weekly.yml)
+
+Group: `group::code review`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.code_review.i_code_review_user_publish_review_monthly`
+
+Count of unique users per month who publish their review as part of a merge request review
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216184357_i_code_review_user_publish_review_monthly.yml)
+
+Group: `group::code review`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.code_review.i_code_review_user_publish_review_weekly`
+
+Count of unique users per week who publish their review as part of a merge request review
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_7d/20210216184355_i_code_review_user_publish_review_weekly.yml)
+
+Group: `group::code review`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.code_review.i_code_review_user_remove_mr_comment_monthly`
+
+Count of unique users per month who removed a comment on a MR
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216175156_i_code_review_user_remove_mr_comment_monthly.yml)
+
+Group: `group::code review`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.code_review.i_code_review_user_remove_mr_comment_weekly`
+
+Count of unique users per month who removed a comment on a MR
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_7d/20210216175154_i_code_review_user_remove_mr_comment_weekly.yml)
+
+Group: `group::code review`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.code_review.i_code_review_user_remove_multiline_mr_comment_monthly`
+
+Count of unique users per month who remove a multiline comment in a merge request
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216184409_i_code_review_user_remove_multiline_mr_comment_monthly.yml)
+
+Group: `group::code review`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.code_review.i_code_review_user_remove_multiline_mr_comment_weekly`
+
+Count of unique users per week who remove a multiline comment in a merge request
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_7d/20210216184407_i_code_review_user_remove_multiline_mr_comment_weekly.yml)
+
+Group: `group::code review`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.code_review.i_code_review_user_reopen_mr_monthly`
+
+Count of unique users per month who reopened a MR
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216175140_i_code_review_user_reopen_mr_monthly.yml)
+
+Group: `group::code review`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.code_review.i_code_review_user_reopen_mr_weekly`
+
+Count of unique users per week who reopened a MR
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_7d/20210216175138_i_code_review_user_reopen_mr_weekly.yml)
+
+Group: `group::code review`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.code_review.i_code_review_user_resolve_conflict_monthly`
+
+Count of unique users per week who attempt to resolve a conflict through the ui
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210514013545_i_code_review_user_resolve_conflict_monthly.yml)
+
+Group: `group::code review`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.code_review.i_code_review_user_resolve_conflict_weekly`
+
+Count of unique users per week who attempt to resolve a conflict through the ui
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_7d/20210514013545_i_code_review_user_resolve_conflict_weekly.yml)
+
+Group: `group::code review`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.code_review.i_code_review_user_resolve_thread_monthly`
+
+Count of unique users per month who resolve a thread in a merge request
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216184330_i_code_review_user_resolve_thread_monthly.yml)
+
+Group: `group::code review`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.code_review.i_code_review_user_resolve_thread_weekly`
+
+Count of unique users per week who resolve a thread in a merge request
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_7d/20210216184328_i_code_review_user_resolve_thread_weekly.yml)
+
+Group: `group::code review`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.code_review.i_code_review_user_review_requested_monthly`
+
+Count of unique users per month who request a review of a merge request
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216184430_i_code_review_user_review_requested_monthly.yml)
+
+Group: `group::code review`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.code_review.i_code_review_user_review_requested_weekly`
+
+Count of unique users per week who request a review of a merge request
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_7d/20210216184428_i_code_review_user_review_requested_weekly.yml)
+
+Group: `group::code review`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.code_review.i_code_review_user_reviewers_changed_monthly`
+
+Count of unique users per month who changed reviewers of a MR
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210302114219_i_code_review_user_reviewers_changed_monthly.yml)
+
+Group: `group::code review`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.code_review.i_code_review_user_reviewers_changed_weekly`
+
+Count of unique users per week who changed reviewers of a MR
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_7d/20210302114235_i_code_review_user_reviewers_changed_weekly.yml)
+
+Group: `group::code review`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.code_review.i_code_review_user_single_file_diffs_monthly`
+
+Count of unique users per month with diffs viewed file by file
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216175124_i_code_review_user_single_file_diffs_monthly.yml)
+
+Group: `group::code review`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.code_review.i_code_review_user_single_file_diffs_weekly`
+
+Count of unique users per week with diffs viewed file by file
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_7d/20210216175122_i_code_review_user_single_file_diffs_weekly.yml)
+
+Group: `group::code review`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.code_review.i_code_review_user_time_estimate_changed_monthly`
+
+Count of unique users per month who changed time estimate of a MR
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210301102134_i_code_review_user_time_estimate_changed_monthly.yml)
+
+Group: `group::code review`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.code_review.i_code_review_user_time_estimate_changed_weekly`
+
+Count of unique users per week who changed time estimate of a MR
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_7d/20210302103539_i_code_review_user_time_estimate_changed_weekly.yml)
+
+Group: `group::code review`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.code_review.i_code_review_user_time_spent_changed_monthly`
+
+Count of unique users per month who changed time spent on a MR
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210301102204_i_code_review_user_time_spent_changed_monthly.yml)
+
+Group: `group::code review`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.code_review.i_code_review_user_time_spent_changed_weekly`
+
+Count of unique users per week who changed time spent on a MR
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_7d/20210302103615_i_code_review_user_time_spent_changed_weekly.yml)
+
+Group: `group::code review`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.code_review.i_code_review_user_toggled_task_item_status_monthly`
+
+Count of unique users per month who toggled a task item in a merge request
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216184312_i_code_review_user_toggled_task_item_status_monthly.yml)
+
+Group: `group::code review`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.code_review.i_code_review_user_toggled_task_item_status_weekly`
+
+Count of unique users per week who toggled a task item in a merge request
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_7d/20210216184310_i_code_review_user_toggled_task_item_status_weekly.yml)
+
+Group: `group::code review`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.code_review.i_code_review_user_unapprove_mr_monthly`
+
+Count of unique users per month who unapprove a merge request
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216184326_i_code_review_user_unapprove_mr_monthly.yml)
+
+Group: `group::code review`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.code_review.i_code_review_user_unapprove_mr_weekly`
+
+Count of unique users per week who unapprove a merge request
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_7d/20210216184324_i_code_review_user_unapprove_mr_weekly.yml)
+
+Group: `group::code review`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.code_review.i_code_review_user_unmarked_as_draft_monthly`
+
+Count of unique users per month who unmark a merge request as a draft
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216184426_i_code_review_user_unmarked_as_draft_monthly.yml)
+
+Group: `group::code review`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.code_review.i_code_review_user_unmarked_as_draft_weekly`
+
+Count of unique users per week who unmark a merge request as a draft
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_7d/20210216184424_i_code_review_user_unmarked_as_draft_weekly.yml)
+
+Group: `group::code review`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.code_review.i_code_review_user_unresolve_thread_monthly`
+
+Count of unique users per month who unresolve a thread in a merge request
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216184334_i_code_review_user_unresolve_thread_monthly.yml)
+
+Group: `group::code review`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.code_review.i_code_review_user_unresolve_thread_weekly`
+
+Count of unique users per week who unresolve a thread in a merge request
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_7d/20210216184332_i_code_review_user_unresolve_thread_weekly.yml)
+
+Group: `group::code review`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.code_review.i_code_review_user_vs_code_api_request_monthly`
+
+Count of unique users per month who use GitLab Workflow for VS Code
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216184446_i_code_review_user_vs_code_api_request_monthly.yml)
+
+Group: `group::code review`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.code_review.i_code_review_user_vs_code_api_request_weekly`
+
+Count of unique users per week who use GitLab Workflow for VS Code
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_7d/20210216184444_i_code_review_user_vs_code_api_request_weekly.yml)
+
+Group: `group::code review`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.compliance.a_compliance_audit_events_api_monthly`
+
+Unique users that have used the Audit Events API in a given month.
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_28d/20210216183942_a_compliance_audit_events_api_monthly.yml)
+
+Group: `group::compliance`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `premium`, `ultimate`
+
+### `redis_hll_counters.compliance.a_compliance_audit_events_api_weekly`
+
+Unique users that have used the Audit Events API in a given week.
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_7d/20210216183940_a_compliance_audit_events_api_weekly.yml)
+
+Group: `group::compliance`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `premium`, `ultimate`
+
+### `redis_hll_counters.compliance.compliance_total_unique_counts_monthly`
+
+Unique count of compliance actions in a given month
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_28d/20210216183946_compliance_total_unique_counts_monthly.yml)
+
+Group: `group::compliance`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `premium`, `ultimate`
+
+### `redis_hll_counters.compliance.compliance_total_unique_counts_weekly`
+
+Unique count of compliance actions in a given week
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_7d/20210216183944_compliance_total_unique_counts_weekly.yml)
+
+Group: `group::compliance`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `premium`, `ultimate`
+
+### `redis_hll_counters.compliance.g_compliance_audit_events_monthly`
+
+Unique users who have viewed the audit event screen in a given month.
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_28d/20210216183930_g_compliance_audit_events_monthly.yml)
+
+Group: `group::compliance`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `premium`, `ultimate`
+
+### `redis_hll_counters.compliance.g_compliance_audit_events_weekly`
+
+Number of unique visitors to group-level audit events screen in a given week
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_7d/20210216183928_g_compliance_audit_events_weekly.yml)
+
+Group: `group::compliance`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `premium`, `ultimate`
+
+### `redis_hll_counters.compliance.g_compliance_dashboard_monthly`
+
+Unique users who have viewed the compliance dashboard in a given month.
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_28d/20210216183926_g_compliance_dashboard_monthly.yml)
+
+Group: `group::compliance`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `premium`, `ultimate`
+
+### `redis_hll_counters.compliance.g_compliance_dashboard_weekly`
+
+Unique users who have looked at the compliance dashboard in a given week
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_7d/20210216183924_g_compliance_dashboard_weekly.yml)
+
+Group: `group::compliance`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `premium`, `ultimate`
+
+### `redis_hll_counters.compliance.i_compliance_audit_events_monthly`
+
+Unique users that have viewed the instance-level audit events screen
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_28d/20210216183934_i_compliance_audit_events_monthly.yml)
+
+Group: `group::compliance`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `premium`, `ultimate`
+
+### `redis_hll_counters.compliance.i_compliance_audit_events_weekly`
+
+Unique users that have viewed the instance-level audit events screen
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_7d/20210216183932_i_compliance_audit_events_weekly.yml)
+
+Group: `group::compliance`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `premium`, `ultimate`
+
+### `redis_hll_counters.compliance.i_compliance_credential_inventory_monthly`
+
+Unique users who have viewed the credential inventory in a given month.
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_28d/20210216183938_i_compliance_credential_inventory_monthly.yml)
+
+Group: `group::compliance`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `ultimate`
+
+### `redis_hll_counters.compliance.i_compliance_credential_inventory_weekly`
+
+Unique visitors to the credential inventory screen in a given week
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_7d/20210216183936_i_compliance_credential_inventory_weekly.yml)
+
+Group: `group::compliance`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `ultimate`
+
+### `redis_hll_counters.deploy_token_packages.deploy_token_packages_total_unique_counts_monthly`
+
+A monthly count of packages published to the registry using a deploy token
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216184850_deploy_token_packages_total_unique_counts_monthly.yml)
+
+Group: `group::package`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.deploy_token_packages.deploy_token_packages_total_unique_counts_weekly`
+
+A weekly count of packages published to the registry using a deploy token
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_7d/20210216184848_deploy_token_packages_total_unique_counts_weekly.yml)
+
+Group: `group::package`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.deploy_token_packages.i_package_composer_deploy_token_monthly`
+
+A monthly count of Composer packages published to the registry using a deploy token
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216184806_i_package_composer_deploy_token_monthly.yml)
+
+Group: `group::package`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.deploy_token_packages.i_package_composer_deploy_token_weekly`
+
+A weekly count of Composer packages published to the registry using a deploy token
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_7d/20210216184805_i_package_composer_deploy_token_weekly.yml)
+
+Group: `group::package`
+
+Data Category: `Optional`
+
+Status: `deprecated`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.deploy_token_packages.i_package_conan_deploy_token_monthly`
+
+A monthly count of Conan packages published to the registry using a deploy token
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216184810_i_package_conan_deploy_token_monthly.yml)
+
+Group: `group::package`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.deploy_token_packages.i_package_conan_deploy_token_weekly`
+
+A weekly count of Conan packages published to the registry using a deploy token
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_7d/20210216184808_i_package_conan_deploy_token_weekly.yml)
+
+Group: `group::package`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.deploy_token_packages.i_package_container_deploy_token_monthly`
+
+A monthly count of container images published to the registry using a deploy token
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216184814_i_package_container_deploy_token_monthly.yml)
+
+Group: `group::package`
+
+Data Category: `Optional`
+
+Status: `deprecated`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.deploy_token_packages.i_package_container_deploy_token_weekly`
+
+A weekly count of container images published to the registry using a deploy token
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_7d/20210216184812_i_package_container_deploy_token_weekly.yml)
+
+Group: `group::package`
+
+Data Category: `Optional`
+
+Status: `deprecated`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.deploy_token_packages.i_package_debian_deploy_token_monthly`
+
+A monthly count of Debian packages published to the registry using a deploy token
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216184818_i_package_debian_deploy_token_monthly.yml)
+
+Group: `group::package`
+
+Data Category: `Optional`
+
+Status: `deprecated`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.deploy_token_packages.i_package_debian_deploy_token_weekly`
+
+A weekly count of Debian packages published to the registry using a deploy token
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_7d/20210216184816_i_package_debian_deploy_token_weekly.yml)
+
+Group: `group::package`
+
+Data Category: `Optional`
+
+Status: `deprecated`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.deploy_token_packages.i_package_generic_deploy_token_monthly`
+
+A monthly count of generic packages published to the registry using a deploy token
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216184822_i_package_generic_deploy_token_monthly.yml)
+
+Group: `group::package`
+
+Data Category: `Optional`
+
+Status: `broken`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.deploy_token_packages.i_package_generic_deploy_token_weekly`
+
+A weekly count of generic packages published to the registry using a deploy token
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_7d/20210216184820_i_package_generic_deploy_token_weekly.yml)
+
+Group: `group::package`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.deploy_token_packages.i_package_golang_deploy_token_monthly`
+
+A monthly count of Go modules published to the registry using a deploy token
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216184826_i_package_golang_deploy_token_monthly.yml)
+
+Group: `group::package`
+
+Data Category: `Optional`
+
+Status: `deprecated`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.deploy_token_packages.i_package_golang_deploy_token_weekly`
+
+A weekly count of Go modules published to the registry using a deploy token
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_7d/20210216184824_i_package_golang_deploy_token_weekly.yml)
+
+Group: `group::package`
+
+Data Category: `Optional`
+
+Status: `deprecated`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.deploy_token_packages.i_package_helm_deploy_token_monthly`
+
+Distinct Helm pakages deployed in recent 28 days
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210517074859_i_package_helm_deploy_token_monthly.yml)
+
+Group: `group::package`
+
+Data Category: `Optional`
+
+Status: `implemented`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.deploy_token_packages.i_package_helm_deploy_token_weekly`
+
+Distinct Helm pakages deployed in recent 7 days
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_7d/20210517074851_i_package_helm_deploy_token_weekly.yml)
+
+Group: `group::package`
+
+Data Category: `Optional`
+
+Status: `implemented`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.deploy_token_packages.i_package_maven_deploy_token_monthly`
+
+A monthly count of Maven packages published to the registry using a deploy token
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216184830_i_package_maven_deploy_token_monthly.yml)
+
+Group: `group::package`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.deploy_token_packages.i_package_maven_deploy_token_weekly`
+
+A weekly count of Maven packages published to the registry using a deploy token
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_7d/20210216184828_i_package_maven_deploy_token_weekly.yml)
+
+Group: `group::package`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.deploy_token_packages.i_package_npm_deploy_token_monthly`
+
+A monthly count of npm packages published to the registry using a deploy token
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216184834_i_package_npm_deploy_token_monthly.yml)
+
+Group: `group::package`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.deploy_token_packages.i_package_npm_deploy_token_weekly`
+
+A weekly count of npm packages published to the registry using a deploy token
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_7d/20210216184832_i_package_npm_deploy_token_weekly.yml)
+
+Group: `group::package`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.deploy_token_packages.i_package_nuget_deploy_token_monthly`
+
+A monthly count of NuGet packages published to the registry using a deploy token
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216184838_i_package_nuget_deploy_token_monthly.yml)
+
+Group: `group::package`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.deploy_token_packages.i_package_nuget_deploy_token_weekly`
+
+A weekly count of NuGet packages published to the registry using a deploy token
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_7d/20210216184836_i_package_nuget_deploy_token_weekly.yml)
+
+Group: `group::package`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.deploy_token_packages.i_package_pypi_deploy_token_monthly`
+
+A monthly count of PyPI packages published to the registry using a deploy token
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216184842_i_package_pypi_deploy_token_monthly.yml)
+
+Group: `group::package`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.deploy_token_packages.i_package_pypi_deploy_token_weekly`
+
+A weekly count of Python packages published to the registry using a deploy token
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_7d/20210216184840_i_package_pypi_deploy_token_weekly.yml)
+
+Group: `group::package`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.deploy_token_packages.i_package_rubygems_deploy_token_monthly`
+
+Distinct count events for RubyGems packages published using a Deploy token in recent 28 days
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210303154626_i_package_rubygems_deploy_token_monthly.yml)
+
+Group: `group::package`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.deploy_token_packages.i_package_rubygems_deploy_token_weekly`
+
+A weekly count of distinct RubyGems packages published using a deploy token
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_7d/20210303154624_i_package_rubygems_deploy_token_weekly.yml)
+
+Group: `group::package`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.deploy_token_packages.i_package_tag_deploy_token_monthly`
+
+A monthly count of package tags published to the registry using a deploy token
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216184846_i_package_tag_deploy_token_monthly.yml)
+
+Group: `group::package`
+
+Data Category: `Optional`
+
+Status: `deprecated`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.deploy_token_packages.i_package_tag_deploy_token_weekly`
+
+A weekly count of users that have published a package tag to the registry using a deploy token
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_7d/20210216184844_i_package_tag_deploy_token_weekly.yml)
+
+Group: `group::package`
+
+Data Category: `Optional`
+
+Status: `deprecated`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.deploy_token_packages.i_package_terraform_module_deploy_token_monthly`
+
+Number of distinct users authorized via deploy token creating Terraform Module packages in recent 28 days
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210410012206_i_package_terraform_module_deploy_token_monthly.yml)
+
+Group: `group::configure`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.deploy_token_packages.i_package_terraform_module_deploy_token_weekly`
+
+Number of distinct users authorized via deploy token creating Terraform Module packages in recent 7 days
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_7d/20210410012207_i_package_terraform_module_deploy_token_weekly.yml)
+
+Group: `group::configure`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.ecosystem.ecosystem_total_unique_counts_monthly`
+
+Number of users performing actions on Jira issues by month
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216184957_ecosystem_total_unique_counts_monthly.yml)
+
+Group: `group::ecosystem`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.ecosystem.ecosystem_total_unique_counts_weekly`
+
+Number of users performing actions on Jira issues by week
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_7d/20210216184955_ecosystem_total_unique_counts_weekly.yml)
+
+Group: `group::ecosystem`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.ecosystem.i_ecosystem_jira_service_close_issue_monthly`
+
+Number of users closing Jira issues by month
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216184941_i_ecosystem_jira_service_close_issue_monthly.yml)
+
+Group: `group::ecosystem`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.ecosystem.i_ecosystem_jira_service_close_issue_weekly`
+
+Number of users closing Jira issues by week
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_7d/20210216184939_i_ecosystem_jira_service_close_issue_weekly.yml)
+
+Group: `group::ecosystem`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.ecosystem.i_ecosystem_jira_service_create_issue_monthly`
+
+Number of users creating Jira issues by month
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_28d/20210216184953_i_ecosystem_jira_service_create_issue_monthly.yml)
+
+Group: `group::ecosystem`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `premium`, `ultimate`
+
+### `redis_hll_counters.ecosystem.i_ecosystem_jira_service_create_issue_weekly`
+
+Number of users creating Jira issues by week
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_7d/20210216184951_i_ecosystem_jira_service_create_issue_weekly.yml)
+
+Group: `group::ecosystem`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `premium`, `ultimate`
+
+### `redis_hll_counters.ecosystem.i_ecosystem_jira_service_cross_reference_monthly`
+
+Number of users that cross-referenced Jira issues by month
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216184945_i_ecosystem_jira_service_cross_reference_monthly.yml)
+
+Group: `group::ecosystem`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.ecosystem.i_ecosystem_jira_service_cross_reference_weekly`
+
+Number of users that cross-referenced Jira issues by week
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_7d/20210216184943_i_ecosystem_jira_service_cross_reference_weekly.yml)
+
+Group: `group::ecosystem`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.ecosystem.i_ecosystem_jira_service_list_issues_monthly`
+
+Count of Jira Issue List visits by month
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_28d/20210216184949_i_ecosystem_jira_service_list_issues_monthly.yml)
+
+Group: `group::ecosystem`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `premium`, `ultimate`
+
+### `redis_hll_counters.ecosystem.i_ecosystem_jira_service_list_issues_weekly`
+
+Count of Jira Issue List visits by week
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_7d/20210216184947_i_ecosystem_jira_service_list_issues_weekly.yml)
+
+Group: `group::ecosystem`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `premium`, `ultimate`
+
+### `redis_hll_counters.ecosystem.i_ecosystem_slack_service_confidential_issue_notification_monthly`
+
+Calculated unique users to trigger a Slack message by performing an action on a confidential issue by month
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210303152233_i_ecosystem_slack_service_confidential_issue_notification_monthly.yml)
+
+Group: `group::ecosystem`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.ecosystem.i_ecosystem_slack_service_confidential_issue_notification_weekly`
+
+Calculated unique users to trigger a Slack message by performing an action on a confidential issue by week
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_7d/20210302104814_i_ecosystem_slack_service_confidential_issue_notification_weekly.yml)
+
+Group: `group::ecosystem`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.ecosystem.i_ecosystem_slack_service_confidential_note_notification_monthly`
+
+Calculated unique users to trigger a Slack message by creating a confidential note by month
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210303152144_i_ecosystem_slack_service_confidential_note_notification_monthly.yml)
+
+Group: `group::ecosystem`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.ecosystem.i_ecosystem_slack_service_confidential_note_notification_weekly`
+
+Calculated unique users to trigger a Slack message by creating a confidential note by week
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_7d/20210302104556_i_ecosystem_slack_service_confidential_note_notification_weekly.yml)
+
+Group: `group::ecosystem`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.ecosystem.i_ecosystem_slack_service_deployment_notification_monthly`
+
+Calculated unique users to trigger a Slack message by performing a deployment by month
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210303150912_i_ecosystem_slack_service_deployment_notification_monthly.yml)
+
+Group: `group::ecosystem`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.ecosystem.i_ecosystem_slack_service_deployment_notification_weekly`
+
+Calculated unique users to trigger a Slack message by performing a deployment by week
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_7d/20210302103755_i_ecosystem_slack_service_deployment_notification_weekly.yml)
+
+Group: `group::ecosystem`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.ecosystem.i_ecosystem_slack_service_issue_notification_monthly`
+
+Calculated unique users to trigger a Slack message by performing an action on an issue by month
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210303150507_i_ecosystem_slack_service_issue_notification_monthly.yml)
+
+Group: `group::ecosystem`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.ecosystem.i_ecosystem_slack_service_issue_notification_weekly`
+
+Calculated unique users to trigger a Slack message by performing an action on an issue by week
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_7d/20210302103002_i_ecosystem_slack_service_issue_notification_weekly.yml)
+
+Group: `group::ecosystem`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.ecosystem.i_ecosystem_slack_service_merge_request_notification_monthly`
+
+Calculated unique users to trigger a Slack message by performing an action on a merge request by month
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210303151831_i_ecosystem_slack_service_merge_request_notification_monthly.yml)
+
+Group: `group::ecosystem`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.ecosystem.i_ecosystem_slack_service_merge_request_notification_weekly`
+
+Calculated unique users to trigger a Slack message by performing an action on a merge request by week
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_7d/20210302104007_i_ecosystem_slack_service_merge_request_notification_weekly.yml)
+
+Group: `group::ecosystem`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.ecosystem.i_ecosystem_slack_service_note_notification_monthly`
+
+Calculated unique users to trigger a Slack message by creating a note by month
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210303151946_i_ecosystem_slack_service_note_notification_monthly.yml)
+
+Group: `group::ecosystem`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.ecosystem.i_ecosystem_slack_service_note_notification_weekly`
+
+Calculated unique users to trigger a Slack message by creating a note by week
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_7d/20210302104047_i_ecosystem_slack_service_note_notification_weekly.yml)
+
+Group: `group::ecosystem`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.ecosystem.i_ecosystem_slack_service_push_notification_monthly`
+
+Calculated unique users to trigger a Slack message by performing a Git push by month
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210303150654_i_ecosystem_slack_service_push_notification_monthly.yml)
+
+Group: `group::ecosystem`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.ecosystem.i_ecosystem_slack_service_push_notification_weekly`
+
+Calculated unique users to trigger a Slack message by performing a Git push by week
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_7d/20210302103629_i_ecosystem_slack_service_push_notification_weekly.yml)
+
+Group: `group::ecosystem`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.ecosystem.i_ecosystem_slack_service_tag_push_notification_monthly`
+
+Calculated unique users to trigger a Slack message by performing a tag push by month
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210303152049_i_ecosystem_slack_service_tag_push_notification_monthly.yml)
+
+Group: `group::ecosystem`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.ecosystem.i_ecosystem_slack_service_tag_push_notification_weekly`
+
+Calculated unique users to trigger a Slack message by performing a tag push by week
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_7d/20210302104144_i_ecosystem_slack_service_tag_push_notification_weekly.yml)
+
+Group: `group::ecosystem`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.ecosystem.i_ecosystem_slack_service_wiki_page_notification_monthly`
+
+Calculated unique users to trigger a Slack message by performing an action on a wiki page by month
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210303151609_i_ecosystem_slack_service_wiki_page_notification_monthly.yml)
+
+Group: `group::ecosystem`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.ecosystem.i_ecosystem_slack_service_wiki_page_notification_weekly`
+
+Calculated unique users to trigger a Slack message by performing an action on a wiki page by week
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_7d/20210302103907_i_ecosystem_slack_service_wiki_page_notification_weekly.yml)
+
+Group: `group::ecosystem`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.epic_boards_usage.epic_boards_usage_total_unique_counts_monthly`
+
+Missing description
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_28d/20210507171840_epic_boards_usage_total_unique_counts_monthly.yml)
+
+Group: ``
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `ultimate`
+
+### `redis_hll_counters.epic_boards_usage.epic_boards_usage_total_unique_counts_weekly`
+
+Missing description
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_7d/20210507171838_epic_boards_usage_total_unique_counts_weekly.yml)
+
+Group: ``
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `ultimate`
+
+### `redis_hll_counters.epic_boards_usage.g_project_management_users_creating_epic_boards_monthly`
+
+Count of MAU creating epic boards
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_28d/20210428072511_g_project_management_users_creating_epic_boards_monthly.yml)
+
+Group: `group::product planning`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `premium`, `ultimate`
+
+### `redis_hll_counters.epic_boards_usage.g_project_management_users_creating_epic_boards_weekly`
+
+Count of WAU creating epic boards
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_7d/20210428072508_g_project_management_users_creating_epic_boards_weekly.yml)
+
+Group: `group::product planning`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `premium`, `ultimate`
+
+### `redis_hll_counters.epic_boards_usage.g_project_management_users_updating_epic_board_names_monthly`
+
+Count of MAU updating epic board names
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_28d/20210428073607_g_project_management_users_updating_epic_board_names_monthly.yml)
+
+Group: `group::product planning`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `premium`, `ultimate`
+
+### `redis_hll_counters.epic_boards_usage.g_project_management_users_updating_epic_board_names_weekly`
+
+Count of WAU updating epic board names
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_7d/20210428073604_g_project_management_users_updating_epic_board_names_weekly.yml)
+
+Group: `group::product planning`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `premium`, `ultimate`
+
+### `redis_hll_counters.epic_boards_usage.g_project_management_users_viewing_epic_boards_monthly`
+
+Count of MAU viewing epic boards
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_28d/20210428073329_g_project_management_users_viewing_epic_boards_monthly.yml)
+
+Group: `group::product planning`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `premium`, `ultimate`
+
+### `redis_hll_counters.epic_boards_usage.g_project_management_users_viewing_epic_boards_weekly`
+
+Count of WAU viewing epic boards
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_7d/20210428073327_g_project_management_users_viewing_epic_boards_weekly.yml)
+
+Group: `group::product planning`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `premium`, `ultimate`
+
+### `redis_hll_counters.epics_usage.epics_usage_total_unique_counts_monthly`
+
+Total monthly users count for epics_usage
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_28d/20210318183733_epics_usage_total_unique_counts_monthly.yml)
+
+Group: `group::product planning`
+
+Data Category: `Operational`
+
+Status: `data_available`
+
+Tiers: `premium`, `ultimate`
+
+### `redis_hll_counters.epics_usage.epics_usage_total_unique_counts_weekly`
+
+Total weekly users count for epics_usage
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_7d/20210318183220_epics_usage_total_unique_counts_weekly.yml)
+
+Group: `group::product planning`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `premium`, `ultimate`
+
+### `redis_hll_counters.epics_usage.g_project_management_epic_closed_monthly`
+
+Counts of MAU closing epics
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_28d/20210310163213_g_project_management_epic_closed_monthly.yml)
+
+Group: `group::product planning`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `premium`, `ultimate`
+
+### `redis_hll_counters.epics_usage.g_project_management_epic_closed_weekly`
+
+Counts of WAU closing epics
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_7d/20210310162703_g_project_management_epic_closed_weekly.yml)
+
+Group: `group::product planning`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `premium`, `ultimate`
+
+### `redis_hll_counters.epics_usage.g_project_management_epic_created_monthly`
+
+Count of MAU creating epics
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_28d/20210305144719_g_product_planning_epic_created_monthly.yml)
+
+Group: `group::product planning`
+
+Data Category: `Operational`
+
+Status: `data_available`
+
+Tiers: `premium`, `ultimate`
+
+### `redis_hll_counters.epics_usage.g_project_management_epic_created_weekly`
+
+Count of WAU creating epics
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_7d/20210305145820_g_product_planning_epic_created_weekly.yml)
+
+Group: `group::product planning`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `premium`, `ultimate`
+
+### `redis_hll_counters.epics_usage.g_project_management_epic_cross_referenced_monthly`
+
+Count of MAU cross referencing epics
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_28d/20210430174100_g_project_management_epic_cross_referenced_monthly.yml)
+
+Group: `group::product planning`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `premium`, `ultimate`
+
+### `redis_hll_counters.epics_usage.g_project_management_epic_cross_referenced_weekly`
+
+Counts of WAU cross referencing epics
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_7d/20210430173650_g_project_management_epic_cross_referenced_weekly.yml)
+
+Group: `group::product planning`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `premium`, `ultimate`
+
+### `redis_hll_counters.epics_usage.g_project_management_epic_destroyed_monthly`
+
+Count of MAU destroying epics
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_28d/20210413174710_g_project_management_epic_destroyed_monthly.yml)
+
+Group: `group::product planning`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `premium`, `ultimate`
+
+### `redis_hll_counters.epics_usage.g_project_management_epic_destroyed_weekly`
+
+Count of WAU destroying epics
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_7d/20210413174449_g_project_management_epic_destroyed_weekly.yml)
+
+Group: `group::product planning`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `premium`, `ultimate`
+
+### `redis_hll_counters.epics_usage.g_project_management_epic_issue_added_monthly`
+
+Count of MAU adding issues to epics
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_28d/20210312144719_g_product_planning_epic_issue_added_monthly.yml)
+
+Group: `group::product planning`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `premium`, `ultimate`
+
+### `redis_hll_counters.epics_usage.g_project_management_epic_issue_added_weekly`
+
+Count of WAU adding issues to epics
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_7d/20210312181918_g_product_planning_epic_issue_added_weekly.yml)
+
+Group: `group::product planning`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `premium`, `ultimate`
+
+### `redis_hll_counters.epics_usage.g_project_management_epic_issue_moved_from_project_monthly`
+
+Counts of MAU moving epic issues between projects
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_28d/20210405190240_g_project_management_epic_issue_moved_from_project_monthly.yml)
+
+Group: `group::product planning`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `premium`, `ultimate`
+
+### `redis_hll_counters.epics_usage.g_project_management_epic_issue_moved_from_project_weekly`
+
+Counts of WAU moving epic issues between projects
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_7d/20210405185814_g_project_management_epic_issue_moved_from_project_weekly.yml)
+
+Group: `group::product planning`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `premium`, `ultimate`
+
+### `redis_hll_counters.epics_usage.g_project_management_epic_issue_removed_monthly`
+
+Count of MAU removing issues from epics
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_28d/20210401183230_g_project_management_epic_issue_removed_monthly.yml)
+
+Group: `group::product planning`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `premium`, `ultimate`
+
+### `redis_hll_counters.epics_usage.g_project_management_epic_issue_removed_weekly`
+
+Counts of WAU removing issues from epics
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_7d/20210401182457_g_project_management_g_project_management_epic_issue_removed_weekly.yml)
+
+Group: `group::product planning`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `premium`, `ultimate`
+
+### `redis_hll_counters.epics_usage.g_project_management_epic_reopened_monthly`
+
+Counts of MAU closing epics
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_28d/20210310164247_g_project_management_epic_reopened_monthly.yml)
+
+Group: `group::product planning`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `premium`, `ultimate`
+
+### `redis_hll_counters.epics_usage.g_project_management_epic_reopened_weekly`
+
+Counts of WAU re-opening epics
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_7d/20210310164112_g_project_management_epic_reopened_weekly.yml)
+
+Group: `group::product planning`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `premium`, `ultimate`
+
+### `redis_hll_counters.epics_usage.g_project_management_epic_users_changing_labels_monthly`
+
+Count of MAU chaging the epic lables
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_28d/20210312195730_g_project_management_epic_labels_monthly.yml)
+
+Group: `group::product planning`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `premium`, `ultimate`
+
+### `redis_hll_counters.epics_usage.g_project_management_epic_users_changing_labels_weekly`
+
+Count of WAU chaging the epic lables
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_7d/20210312195849_g_project_management_epic_labels_weekly.yml)
+
+Group: `group::product planning`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `premium`, `ultimate`
+
+### `redis_hll_counters.epics_usage.g_project_management_issue_promoted_to_epic_monthly`
+
+Count of MAU promoting issues to epics
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_28d/20210331193236_g_project_management_issue_promoted_to_epic_monthly.yml)
+
+Group: `group::product planning`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `premium`, `ultimate`
+
+### `redis_hll_counters.epics_usage.g_project_management_issue_promoted_to_epic_weekly`
+
+Counts of WAU promoting issues to epics
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_7d/20210331192332_g_project_management_issue_promoted_to_epic_weekly.yml)
+
+Group: `group::product planning`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `premium`, `ultimate`
+
+### `redis_hll_counters.epics_usage.g_project_management_users_awarding_epic_emoji_monthly`
+
+Counts of MAU awarding emoji on epic
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_28d/20210503011217_g_project_management_users_awarding_epic_emoji_monthly.yml)
+
+Group: `group::product planning`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `premium`, `ultimate`
+
+### `redis_hll_counters.epics_usage.g_project_management_users_awarding_epic_emoji_weekly`
+
+Counts of WAU awarding emoji on epic
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_7d/20210503011355_g_project_management_users_awarding_epic_emoji_weekly.yml)
+
+Group: `group::product planning`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `premium`, `ultimate`
+
+### `redis_hll_counters.epics_usage.g_project_management_users_creating_epic_notes_monthly`
+
+Counts of MAU adding epic notes
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_28d/20210314215451_g_project_management_users_creating_epic_notes_monthly.yml)
+
+Group: `group::product planning`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `premium`, `ultimate`
+
+### `redis_hll_counters.epics_usage.g_project_management_users_creating_epic_notes_weekly`
+
+Counts of WAU adding epic notes
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_7d/20210314231518_g_project_management_users_creating_epic_notes_weekly.yml)
+
+Group: `group::product planning`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `premium`, `ultimate`
+
+### `redis_hll_counters.epics_usage.g_project_management_users_destroying_epic_notes_monthly`
+
+Counts of MAU destroying epic notes
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_28d/20210315034808_g_project_management_users_destroying_epic_notes_monthly.yml)
+
+Group: `group::product planning`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `premium`, `ultimate`
+
+### `redis_hll_counters.epics_usage.g_project_management_users_destroying_epic_notes_weekly`
+
+Counts of WAU destroying epic notes
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_7d/20210315034846_g_project_management_users_destroying_epic_notes_weekly.yml)
+
+Group: `group::product planning`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `premium`, `ultimate`
+
+### `redis_hll_counters.epics_usage.g_project_management_users_epic_issue_added_from_epic_monthly`
+
+Number of users creating an issue from an epic
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_28d/20210608191652_g_project_management_users_epic_issue_added_from_epic_monthly.yml)
+
+Group: `group::product planning`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `premium`
+
+### `redis_hll_counters.epics_usage.g_project_management_users_epic_issue_added_from_epic_weekly`
+
+Number of users creating an issue from an epic
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_7d/20210608191647_g_project_management_users_epic_issue_added_from_epic_weekly.yml)
+
+Group: `group::product planning`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `premium`
+
+### `redis_hll_counters.epics_usage.g_project_management_users_removing_epic_emoji_monthly`
+
+Counts of MAU removing emoji on epic
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_28d/20210505071850_g_project_management_users_removing_epic_emoji_monthly.yml)
+
+Group: `group::product planning`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `premium`, `ultimate`
+
+### `redis_hll_counters.epics_usage.g_project_management_users_removing_epic_emoji_weekly`
+
+Counts of WAU removing emoji on epic
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_7d/20210505071932_g_project_management_users_removing_epic_emoji_weekly.yml)
+
+Group: `group::product planning`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `premium`, `ultimate`
+
+### `redis_hll_counters.epics_usage.g_project_management_users_setting_epic_confidential_monthly`
+
+Count of MAU making epics confidential
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_28d/20210310203049_g_project_management_epic_confidential_monthly.yml)
+
+Group: `group::product planning`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `premium`, `ultimate`
+
+### `redis_hll_counters.epics_usage.g_project_management_users_setting_epic_confidential_weekly`
+
+Count of WAU making epics confidential
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_7d/20210310203225_g_project_management_epic_confidential_weekly.yml)
+
+Group: `group::product planning`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `premium`, `ultimate`
+
+### `redis_hll_counters.epics_usage.g_project_management_users_setting_epic_due_date_as_fixed_monthly`
+
+Counts of MAU setting epic due date as inherited
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_28d/20210325060507_g_project_management_users_setting_epic_due_date_as_fixed_monthly.yml)
+
+Group: `group::product planning`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `premium`, `ultimate`
+
+### `redis_hll_counters.epics_usage.g_project_management_users_setting_epic_due_date_as_fixed_weekly`
+
+Counts of WAU setting epic due date as fixed
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_7d/20210325060623_g_project_management_users_setting_epic_due_date_as_fixed_weekly.yml)
+
+Group: `group::product planning`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `premium`, `ultimate`
+
+### `redis_hll_counters.epics_usage.g_project_management_users_setting_epic_due_date_as_inherited_monthly`
+
+Counts of MAU setting epic due date as inherited
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_28d/20210325060315_g_project_management_users_setting_epic_due_date_as_inherited_monthly.yml)
+
+Group: `group::product planning`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `premium`, `ultimate`
+
+### `redis_hll_counters.epics_usage.g_project_management_users_setting_epic_due_date_as_inherited_weekly`
+
+Counts of WAU setting epic due date as inherited
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_7d/20210325060903_g_project_management_users_setting_epic_due_date_as_inherited_weekly.yml)
+
+Group: `group::product planning`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `premium`, `ultimate`
+
+### `redis_hll_counters.epics_usage.g_project_management_users_setting_epic_start_date_as_fixed_monthly`
+
+Counts of MAU setting epic start date as fixed
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_28d/20210315055624_g_project_management_users_setting_epic_start_date_as_fixed_monthly.yml)
+
+Group: `group::product planning`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `premium`, `ultimate`
+
+### `redis_hll_counters.epics_usage.g_project_management_users_setting_epic_start_date_as_fixed_weekly`
+
+Counts of WAU setting epic start date as fixed
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_7d/20210315054905_g_project_management_users_setting_epic_start_date_as_fixed_weekly.yml)
+
+Group: `group::product planning`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `premium`, `ultimate`
+
+### `redis_hll_counters.epics_usage.g_project_management_users_setting_epic_start_date_as_inherited_monthly`
+
+Counts of MAU setting epic start date as inherited
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_28d/20210315055439_g_project_management_users_setting_epic_start_date_as_inherited_monthly.yml)
+
+Group: `group::product planning`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `premium`, `ultimate`
+
+### `redis_hll_counters.epics_usage.g_project_management_users_setting_epic_start_date_as_inherited_weekly`
+
+Counts of WAU setting epic start date as inherited
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_7d/20210315055342_g_project_management_users_setting_epic_start_date_as_inherited_weekly.yml)
+
+Group: `group::product planning`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `premium`, `ultimate`
+
+### `redis_hll_counters.epics_usage.g_project_management_users_setting_epic_visible_monthly`
+
+Count of MAU making epics visible
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_28d/20210312093611_g_project_management_epic_visible_monthly.yml)
+
+Group: `group::product planning`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `premium`, `ultimate`
+
+### `redis_hll_counters.epics_usage.g_project_management_users_setting_epic_visible_weekly`
+
+Count of WAU making epics visible
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_7d/20210312093243_g_poject_management_epic_visible_weekly.yml)
+
+Group: `group::product planning`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `premium`, `ultimate`
+
+### `redis_hll_counters.epics_usage.g_project_management_users_updating_epic_descriptions_monthly`
+
+Counts of MAU changing epic descriptions
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_28d/20210312102051_g_project_management_users_updating_epic_descriptions_monthly.yml)
+
+Group: `group::product planning`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `premium`, `ultimate`
+
+### `redis_hll_counters.epics_usage.g_project_management_users_updating_epic_descriptions_weekly`
+
+Counts of WAU changing epic descriptions
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_7d/20210312101753_g_project_management_users_updating_epic_descriptions_weekly.yml)
+
+Group: `group::product planning`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `premium`, `ultimate`
+
+### `redis_hll_counters.epics_usage.g_project_management_users_updating_epic_notes_monthly`
+
+Counts of MAU updating epic notes
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_28d/20210314234202_g_project_management_users_updating_epic_notes_monthly.yml)
+
+Group: `group::product planning`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `premium`, `ultimate`
+
+### `redis_hll_counters.epics_usage.g_project_management_users_updating_epic_notes_weekly`
+
+Counts of WAU updating epic notes
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_7d/20210314234041_g_project_management_users_updating_epic_notes_weekly.yml)
+
+Group: `group::product planning`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `premium`, `ultimate`
+
+### `redis_hll_counters.epics_usage.g_project_management_users_updating_epic_parent_monthly`
+
+Counts of MAU updating parent on epic
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_28d/20210423011841_g_project_management_users_updating_epic_parent_monthly.yml)
+
+Group: `group::product planning`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `premium`, `ultimate`
+
+### `redis_hll_counters.epics_usage.g_project_management_users_updating_epic_parent_weekly`
+
+Counts of WAU updating parent on epic
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_7d/20210423012053_g_project_management_users_updating_epic_parent_weekly.yml)
+
+Group: `group::product planning`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `premium`, `ultimate`
+
+### `redis_hll_counters.epics_usage.g_project_management_users_updating_epic_titles_monthly`
+
+Counts of MAU changing epic titles
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_28d/20210312101935_g_project_management_users_updating_epic_titles_monthly.yml)
+
+Group: `group::product planning`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `premium`, `ultimate`
+
+### `redis_hll_counters.epics_usage.g_project_management_users_updating_epic_titles_weekly`
+
+Counts of WAU changing epic titles
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_7d/20210312101826_g_project_management_users_updating_epic_titles_weekly.yml)
+
+Group: `group::product planning`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `premium`, `ultimate`
+
+### `redis_hll_counters.epics_usage.g_project_management_users_updating_fixed_epic_due_date_monthly`
+
+Counts of MAU manually updating fixed due date
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_28d/20210329043548_g_project_management_users_updating_fixed_epic_due_date_monthly.yml)
+
+Group: `group::product planning`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `premium`, `ultimate`
+
+### `redis_hll_counters.epics_usage.g_project_management_users_updating_fixed_epic_due_date_weekly`
+
+Counts of WAU manually updating fixed due date
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_7d/20210329042536_g_project_management_users_updating_fixed_epic_due_date_weekly.yml)
+
+Group: `group::product planning`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `premium`, `ultimate`
+
+### `redis_hll_counters.epics_usage.g_project_management_users_updating_fixed_epic_start_date_monthly`
+
+Counts of MAU manually updating fixed start date
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_28d/20210329043509_g_project_management_users_updating_fixed_epic_start_date_monthly.yml)
+
+Group: `group::product planning`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `premium`, `ultimate`
+
+### `redis_hll_counters.epics_usage.g_project_management_users_updating_fixed_epic_start_date_weekly`
+
+Counts of WAU manually updating fixed start date
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_7d/20210329043402_g_project_management_users_updating_fixed_epic_start_date_weekly.yml)
+
+Group: `group::product planning`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `premium`, `ultimate`
+
+### `redis_hll_counters.epics_usage.project_management_users_checking_epic_task_monthly`
+
+Counts of MAU checking epic task
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_28d/20210421080207_g_project_management_users_checking_epic_task_monthly.yml)
+
+Group: `group::product planning`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `premium`, `ultimate`
+
+### `redis_hll_counters.epics_usage.project_management_users_checking_epic_task_weekly`
+
+Counts of WAU checking epic task
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_7d/20210421075943_g_project_management_users_checking_epic_task_weekly.yml)
+
+Group: `group::product planning`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `premium`, `ultimate`
+
+### `redis_hll_counters.epics_usage.project_management_users_unchecking_epic_task_monthly`
+
+Counts of MAU unchecking epic task
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_28d/20210421102516_g_project_management_users_unchecking_epic_task_monthly.yml)
+
+Group: `group::product planning`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `premium`, `ultimate`
+
+### `redis_hll_counters.epics_usage.project_management_users_unchecking_epic_task_weekly`
+
+Counts of WAU unchecking epic task
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_7d/20210421102812_g_project_management_users_unchecking_epic_task_weekly.yml)
+
+Group: `group::product planning`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `premium`, `ultimate`
+
+### `redis_hll_counters.ide_edit.g_edit_by_sfe_monthly`
+
+Number of users editing a file from the single file editor
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216180334_g_edit_by_sfe_monthly.yml)
+
+Group: `group::editor`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.ide_edit.g_edit_by_sfe_weekly`
+
+Weekly number of users editing from the single file editor
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_7d/20210216180332_g_edit_by_sfe_weekly.yml)
+
+Group: `group::editor`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.ide_edit.g_edit_by_snippet_ide_monthly`
+
+Count of monthly edits to a snippet
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216180338_g_edit_by_snippet_ide_monthly.yml)
+
+Group: `group::editor`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.ide_edit.g_edit_by_snippet_ide_weekly`
+
+Weekly number of users editing Snippets
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_7d/20210216180336_g_edit_by_snippet_ide_weekly.yml)
+
+Group: `group::editor`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.ide_edit.g_edit_by_sse_monthly`
+
+Number of user editing files using the Static Site Editor
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216184024_g_edit_by_sse_monthly.yml)
+
+Group: `group::editor`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.ide_edit.g_edit_by_sse_weekly`
+
+Weekly number of users editing using the Static Site Editor
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_7d/20210216184022_g_edit_by_sse_weekly.yml)
+
+Group: `group::editor`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.ide_edit.g_edit_by_web_ide_monthly`
+
+Number of users editing a file from the Web IDE
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216180330_g_edit_by_web_ide_monthly.yml)
+
+Group: `group::editor`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.ide_edit.g_edit_by_web_ide_weekly`
+
+Weekly number of users editing using the Web IDE
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_7d/20210216180328_g_edit_by_web_ide_weekly.yml)
+
+Group: `group::editor`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.ide_edit.ide_edit_total_unique_counts_monthly`
+
+Count of unique users per month who edited a file from the Web IDE
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216180341_ide_edit_total_unique_counts_monthly.yml)
+
+Group: `group::editor`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.ide_edit.ide_edit_total_unique_counts_weekly`
+
+Weekly number of users editing a file using the Web IDE
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_7d/20210216180339_ide_edit_total_unique_counts_weekly.yml)
+
+Group: `group::editor`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.incident_management.incident_management_alert_assigned_monthly`
+
+Count of unique users assigning an alert per month
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216180533_incident_management_alert_assigned_monthly.yml)
+
+Group: `group::monitor`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.incident_management.incident_management_alert_assigned_weekly`
+
+Count of unique users assigning an alert per week
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_7d/20210216180532_incident_management_alert_assigned_weekly.yml)
+
+Group: `group::monitor`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.incident_management.incident_management_alert_status_changed_monthly`
+
+Count of unique users changing alert's status changes per month
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216180530_incident_management_alert_status_changed_monthly.yml)
+
+Group: `group::monitor`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.incident_management.incident_management_alert_status_changed_weekly`
+
+Count of unique users changing alert's status per week
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_7d/20210216180528_incident_management_alert_status_changed_weekly.yml)
+
+Group: `group::monitor`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.incident_management.incident_management_alert_todo_monthly`
+
+Count of unique users adding alerts to the TODO list per month
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216180537_incident_management_alert_todo_monthly.yml)
+
+Group: `group::monitor`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.incident_management.incident_management_alert_todo_weekly`
+
+Count of unique users adding alerts to the TODO list per week
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_7d/20210216180535_incident_management_alert_todo_weekly.yml)
+
+Group: `group::monitor`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.incident_management.incident_management_incident_assigned_monthly`
+
+Count of users assigning incidents per month
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216180552_incident_management_incident_assigned_monthly.yml)
+
+Group: `group::monitor`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.incident_management.incident_management_incident_assigned_weekly`
+
+Count of unique users assiging incidents per week
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_7d/20210216180550_incident_management_incident_assigned_weekly.yml)
+
+Group: `group::monitor`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.incident_management.incident_management_incident_change_confidential_monthly`
+
+Count of users changing incidents to confidential per month
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216180618_incident_management_incident_change_confidential_monthly.yml)
+
+Group: `group::monitor`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.incident_management.incident_management_incident_change_confidential_weekly`
+
+Count of unique users changing incidents to confidential per week
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_7d/20210216180616_incident_management_incident_change_confidential_weekly.yml)
+
+Group: `group::monitor`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.incident_management.incident_management_incident_closed_monthly`
+
+Count of users closing incidents per month
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216180548_incident_management_incident_closed_monthly.yml)
+
+Group: `group::monitor`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.incident_management.incident_management_incident_closed_weekly`
+
+Count of users closing incidents per week
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_7d/20210216180546_incident_management_incident_closed_weekly.yml)
+
+Group: `group::monitor`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.incident_management.incident_management_incident_comment_monthly`
+
+Count of unique users adding comments per month on incidents
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216180559_incident_management_incident_comment_monthly.yml)
+
+Group: `group::monitor`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.incident_management.incident_management_incident_comment_weekly`
+
+Count of unique users adding comments on incidents per week
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_7d/20210216180558_incident_management_incident_comment_weekly.yml)
+
+Group: `group::monitor`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.incident_management.incident_management_incident_created_monthly`
+
+Count of unique users creating incidents per month
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216180541_incident_management_incident_created_monthly.yml)
+
+Group: `group::monitor`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.incident_management.incident_management_incident_created_weekly`
+
+Count of unique users creating incidents per week
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_7d/20210216180539_incident_management_incident_created_weekly.yml)
+
+Group: `group::monitor`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.incident_management.incident_management_incident_published_monthly`
+
+Count of unique users that published incidents per month
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_28d/20210216180607_incident_management_incident_published_monthly.yml)
+
+Group: `group::monitor`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.incident_management.incident_management_incident_published_weekly`
+
+Count of unique users that published incidents per week
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_7d/20210216180605_incident_management_incident_published_weekly.yml)
+
+Group: `group::monitor`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.incident_management.incident_management_incident_relate_monthly`
+
+Count of unique users adding issues per month that are related to an incident
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216180611_incident_management_incident_relate_monthly.yml)
+
+Group: `group::monitor`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.incident_management.incident_management_incident_relate_weekly`
+
+Count of unique users adding issues per that are related to an incident week
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_7d/20210216180609_incident_management_incident_relate_weekly.yml)
+
+Group: `group::monitor`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.incident_management.incident_management_incident_reopened_monthly`
+
+Count of unique users reopening incidents per month
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216180545_incident_management_incident_reopened_monthly.yml)
+
+Group: `group::monitor`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.incident_management.incident_management_incident_reopened_weekly`
+
+Count of unique users reopening incidents per week
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_7d/20210216180543_incident_management_incident_reopened_weekly.yml)
+
+Group: `group::monitor`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.incident_management.incident_management_incident_todo_monthly`
+
+Count of unique users adding incidents to the TODO list per month
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216180556_incident_management_incident_todo_monthly.yml)
+
+Group: `group::monitor`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.incident_management.incident_management_incident_todo_weekly`
+
+Count of unique users adding incidents to the TODO list per week
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_7d/20210216180554_incident_management_incident_todo_weekly.yml)
+
+Group: `group::monitor`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.incident_management.incident_management_incident_unrelate_monthly`
+
+Count of users removing issues that are related to an incident per month
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216180614_incident_management_incident_unrelate_monthly.yml)
+
+Group: `group::monitor`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.incident_management.incident_management_incident_unrelate_weekly`
+
+Count of unique users removing issue that are related to an incident per week
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_7d/20210216180612_incident_management_incident_unrelate_weekly.yml)
+
+Group: `group::monitor`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.incident_management.incident_management_incident_zoom_meeting_monthly`
+
+Count of users creating Zoom meetings about incidents per month
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216180603_incident_management_incident_zoom_meeting_monthly.yml)
+
+Group: `group::monitor`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.incident_management.incident_management_incident_zoom_meeting_weekly`
+
+Count of unique users creating Zoom meetings about incidents per week
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_7d/20210216180601_incident_management_incident_zoom_meeting_weekly.yml)
+
+Group: `group::monitor`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.incident_management.incident_management_total_unique_counts_monthly`
+
+Count of unique users performing events related with incidents per month
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216180622_incident_management_total_unique_counts_monthly.yml)
+
+Group: `group::monitor`
+
+Data Category: `Operational`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.incident_management.incident_management_total_unique_counts_weekly`
+
+Count of unique users performing events related to the incident management
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_7d/20210216180620_incident_management_total_unique_counts_weekly.yml)
+
+Group: `group::monitor`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.incident_management_alerts.incident_management_alert_create_incident_monthly`
+
+Count of unique users per month to create an incident corresponding to an alert
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216180625_incident_management_alert_create_incident_monthly.yml)
+
+Group: `group::monitor`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.incident_management_alerts.incident_management_alert_create_incident_weekly`
+
+Count of unique users per week to create an incident corresponding to an alert
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_7d/20210216180623_incident_management_alert_create_incident_weekly.yml)
+
+Group: `group::monitor`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.incident_management_oncall.i_incident_management_oncall_notification_sent_monthly`
+
+Count of unique users to receive a notification while on-call
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_28d/20210405222005_i_incident_management_oncall_notification_sent_monthly.yml)
+
+Group: `group::monitor`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `premium`, `ultimate`
+
+### `redis_hll_counters.incident_management_oncall.i_incident_management_oncall_notification_sent_weekly`
+
+Count of unique users to receive a notification while on-call
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_7d/20210405220139_i_incident_management_oncall_notification_sent_weekly.yml)
+
+Group: `group::monitor`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `premium`, `ultimate`
+
+### `redis_hll_counters.issues_edit.g_project_management_issue_added_to_epic_monthly`
+
+Count of MAU adding an issue to an epic
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_28d/20210216181414_g_project_management_issue_added_to_epic_monthly.yml)
+
+Group: `group::project management`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `premium`, `ultimate`
+
+### `redis_hll_counters.issues_edit.g_project_management_issue_added_to_epic_weekly`
+
+Count of WAU adding an issue to an epic
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_7d/20210216181413_g_project_management_issue_added_to_epic_weekly.yml)
+
+Group: `group::project management`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `premium`, `ultimate`
+
+### `redis_hll_counters.issues_edit.g_project_management_issue_assignee_changed_monthly`
+
+Count of MAU changing issue assignees
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216181311_g_project_management_issue_assignee_changed_monthly.yml)
+
+Group: `group::project management`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.issues_edit.g_project_management_issue_assignee_changed_weekly`
+
+Count of WAU changing issue assignees
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_7d/20210216181310_g_project_management_issue_assignee_changed_weekly.yml)
+
+Group: `group::project management`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.issues_edit.g_project_management_issue_changed_epic_monthly`
+
+Count of MAU changing the epic on an issue
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_28d/20210216181420_g_project_management_issue_changed_epic_monthly.yml)
+
+Group: `group::project management`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `premium`, `ultimate`
+
+### `redis_hll_counters.issues_edit.g_project_management_issue_changed_epic_weekly`
+
+Count of WAU changing the epic on an issue
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_7d/20210216181418_g_project_management_issue_changed_epic_weekly.yml)
+
+Group: `group::project management`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `premium`, `ultimate`
+
+### `redis_hll_counters.issues_edit.g_project_management_issue_cloned_monthly`
+
+Count of MAU cloning an issue
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216181501_g_project_management_issue_cloned_monthly.yml)
+
+Group: `group::project management`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.issues_edit.g_project_management_issue_cloned_weekly`
+
+Count of WAU cloning an issue
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_7d/20210216181459_g_project_management_issue_cloned_weekly.yml)
+
+Group: `group::project management`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.issues_edit.g_project_management_issue_closed_monthly`
+
+Count of MAU closing an issue
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216181326_g_project_management_issue_closed_monthly.yml)
+
+Group: `group::project management`
+
+Data Category: `Operational`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.issues_edit.g_project_management_issue_closed_weekly`
+
+Count of WAU closing an issue
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_7d/20210216181324_g_project_management_issue_closed_weekly.yml)
+
+Group: `group::project management`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.issues_edit.g_project_management_issue_comment_added_monthly`
+
+Count of MAU commenting on an issue
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216181446_g_project_management_issue_comment_added_monthly.yml)
+
+Group: `group::project management`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.issues_edit.g_project_management_issue_comment_added_weekly`
+
+Count of WAU commenting on an issue
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_7d/20210216181444_g_project_management_issue_comment_added_weekly.yml)
+
+Group: `group::project management`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.issues_edit.g_project_management_issue_comment_edited_monthly`
+
+Count of MAU editing a comment on an issue
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216181450_g_project_management_issue_comment_edited_monthly.yml)
+
+Group: `group::project management`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.issues_edit.g_project_management_issue_comment_edited_weekly`
+
+Count of WAU editing a comment on an issue
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_7d/20210216181448_g_project_management_issue_comment_edited_weekly.yml)
+
+Group: `group::project management`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.issues_edit.g_project_management_issue_comment_removed_monthly`
+
+Count of MAU deleting a comment from an issue
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216181453_g_project_management_issue_comment_removed_monthly.yml)
+
+Group: `group::project management`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.issues_edit.g_project_management_issue_comment_removed_weekly`
+
+Count of WAU deleting a comment from an issue
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_7d/20210216181451_g_project_management_issue_comment_removed_weekly.yml)
+
+Group: `group::project management`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.issues_edit.g_project_management_issue_created_monthly`
+
+Count of MAU creating new issues
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216181323_g_project_management_issue_created_monthly.yml)
+
+Group: `group::project management`
+
+Data Category: `Operational`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.issues_edit.g_project_management_issue_created_weekly`
+
+Count of WAU creating issues
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_7d/20210216181321_g_project_management_issue_created_weekly.yml)
+
+Group: `group::project management`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.issues_edit.g_project_management_issue_cross_referenced_monthly`
+
+Count of MAU referencing an issue from somewhere else
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216181348_g_project_management_issue_cross_referenced_monthly.yml)
+
+Group: `group::project management`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.issues_edit.g_project_management_issue_cross_referenced_weekly`
+
+Count of WAU referencing an issue from somewhere else
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_7d/20210216181347_g_project_management_issue_cross_referenced_weekly.yml)
+
+Group: `group::project management`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.issues_edit.g_project_management_issue_description_changed_monthly`
+
+Count of MAU editing an issue description
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216181308_g_project_management_issue_description_changed_monthly.yml)
+
+Group: `group::project management`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.issues_edit.g_project_management_issue_description_changed_weekly`
+
+Count of WAU editing an issue description
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_7d/20210216181306_g_project_management_issue_description_changed_weekly.yml)
+
+Group: `group::project management`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.issues_edit.g_project_management_issue_designs_added_monthly`
+
+Count of MAU adding a design to an issue
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216181424_g_project_management_issue_designs_added_monthly.yml)
+
+Group: `group::project management`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.issues_edit.g_project_management_issue_designs_added_weekly`
+
+Count of WAU adding a design to an issue
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_7d/20210216181422_g_project_management_issue_designs_added_weekly.yml)
+
+Group: `group::project management`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.issues_edit.g_project_management_issue_designs_modified_monthly`
+
+Count of MAU modifying a design on an issue
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216181427_g_project_management_issue_designs_modified_monthly.yml)
+
+Group: `group::project management`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.issues_edit.g_project_management_issue_designs_modified_weekly`
+
+Count of WAU modifying a design on an issue
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_7d/20210216181425_g_project_management_issue_designs_modified_weekly.yml)
+
+Group: `group::project management`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.issues_edit.g_project_management_issue_designs_removed_monthly`
+
+Count of MAU removing a design from an issue
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216181431_g_project_management_issue_designs_removed_monthly.yml)
+
+Group: `group::project management`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.issues_edit.g_project_management_issue_designs_removed_weekly`
+
+Count of WAU removing a design from an issue
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_7d/20210216181429_g_project_management_issue_designs_removed_weekly.yml)
+
+Group: `group::project management`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.issues_edit.g_project_management_issue_due_date_changed_monthly`
+
+Count of MAU changing an issue due date
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216181435_g_project_management_issue_due_date_changed_monthly.yml)
+
+Group: `group::project management`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.issues_edit.g_project_management_issue_due_date_changed_weekly`
+
+Count of WAU changing an issue due date
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_7d/20210216181433_g_project_management_issue_due_date_changed_weekly.yml)
+
+Group: `group::project management`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.issues_edit.g_project_management_issue_health_status_changed_monthly`
+
+Count of MAU changing the health status on an issue
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_28d/20210216181457_g_project_management_issue_health_status_changed_monthly.yml)
+
+Group: `group::product planning`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `ultimate`
+
+### `redis_hll_counters.issues_edit.g_project_management_issue_health_status_changed_weekly`
+
+Count of WAU changing the health status on an issue
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_7d/20210216181455_g_project_management_issue_health_status_changed_weekly.yml)
+
+Group: `group::product planning`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `ultimate`
+
+### `redis_hll_counters.issues_edit.g_project_management_issue_iteration_changed_monthly`
+
+Count of MAU changing an issue's iteration
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_28d/20210216181341_g_project_management_issue_iteration_changed_monthly.yml)
+
+Group: `group::project management`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `premium`, `ultimate`
+
+### `redis_hll_counters.issues_edit.g_project_management_issue_iteration_changed_weekly`
+
+Count of WAU changing an issue's iteration
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_7d/20210216181339_g_project_management_issue_iteration_changed_weekly.yml)
+
+Group: `group::project management`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `premium`, `ultimate`
+
+### `redis_hll_counters.issues_edit.g_project_management_issue_label_changed_monthly`
+
+Count of MAU changing an issue's label
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216181334_g_project_management_issue_label_changed_monthly.yml)
+
+Group: `group::project management`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.issues_edit.g_project_management_issue_label_changed_weekly`
+
+Count of WAU changing an issue's label
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_7d/20210216181332_g_project_management_issue_label_changed_weekly.yml)
+
+Group: `group::project management`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.issues_edit.g_project_management_issue_locked_monthly`
+
+Count of MAU locking an issue
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216181407_g_project_management_issue_locked_monthly.yml)
+
+Group: `group::project management`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.issues_edit.g_project_management_issue_locked_weekly`
+
+Count of WAU locking an issue
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_7d/20210216181405_g_project_management_issue_locked_weekly.yml)
+
+Group: `group::project management`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.issues_edit.g_project_management_issue_made_confidential_monthly`
+
+Count of MAU making an issue confidential
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216181315_g_project_management_issue_made_confidential_monthly.yml)
+
+Group: `group::project management`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.issues_edit.g_project_management_issue_made_confidential_weekly`
+
+Count of WAU making an issue confidential
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_7d/20210216181313_g_project_management_issue_made_confidential_weekly.yml)
+
+Group: `group::project management`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.issues_edit.g_project_management_issue_made_visible_monthly`
+
+Count of MAU making an issue not confidential
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216181319_g_project_management_issue_made_visible_monthly.yml)
+
+Group: `group::project management`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.issues_edit.g_project_management_issue_made_visible_weekly`
+
+Count of WAU making an issue not confidential
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_7d/20210216181317_g_project_management_issue_made_visible_weekly.yml)
+
+Group: `group::project management`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.issues_edit.g_project_management_issue_marked_as_duplicate_monthly`
+
+Count of MAU marking an issue as a duplicate
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216181403_g_project_management_issue_marked_as_duplicate_monthly.yml)
+
+Group: `group::project management`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.issues_edit.g_project_management_issue_marked_as_duplicate_weekly`
+
+Count of WAU marking an issue as a duplicate
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_7d/20210216181401_g_project_management_issue_marked_as_duplicate_weekly.yml)
+
+Group: `group::project management`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.issues_edit.g_project_management_issue_milestone_changed_monthly`
+
+Count of MAU changing an issue's milestone
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216181337_g_project_management_issue_milestone_changed_monthly.yml)
+
+Group: `group::project management`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.issues_edit.g_project_management_issue_milestone_changed_weekly`
+
+Count of WAU changing an issue's milestone
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_7d/20210216181336_g_project_management_issue_milestone_changed_weekly.yml)
+
+Group: `group::project management`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.issues_edit.g_project_management_issue_moved_monthly`
+
+Count of MAU moving an issue to another project
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216181352_g_project_management_issue_moved_monthly.yml)
+
+Group: `group::project management`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.issues_edit.g_project_management_issue_moved_weekly`
+
+Count of WAU moving an issue to another project
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_7d/20210216181350_g_project_management_issue_moved_weekly.yml)
+
+Group: `group::project management`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.issues_edit.g_project_management_issue_related_monthly`
+
+Count of MAU relating an issue to another issue
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216181356_g_project_management_issue_related_monthly.yml)
+
+Group: `group::project management`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.issues_edit.g_project_management_issue_related_weekly`
+
+Count of WAU relating an issue to another issue
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_7d/20210216181354_g_project_management_issue_related_weekly.yml)
+
+Group: `group::project management`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.issues_edit.g_project_management_issue_removed_from_epic_monthly`
+
+Count of MAU removing an issue from an epic
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_28d/20210216181416_g_project_management_issue_removed_from_epic_monthly.yml)
+
+Group: `group::project management`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `premium`, `ultimate`
+
+### `redis_hll_counters.issues_edit.g_project_management_issue_removed_from_epic_weekly`
+
+Missing description
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_7d/20210216184221_g_project_management_issue_removed_from_epic_weekly.yml)
+
+Group: ``
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers:
+
+### `redis_hll_counters.issues_edit.g_project_management_issue_reopened_monthly`
+
+Count of MAU re-opening a closed issue
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216181330_g_project_management_issue_reopened_monthly.yml)
+
+Group: `group::project management`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.issues_edit.g_project_management_issue_reopened_weekly`
+
+Count of WAU re-opening a closed issue
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_7d/20210216181328_g_project_management_issue_reopened_weekly.yml)
+
+Group: `group::project management`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.issues_edit.g_project_management_issue_time_estimate_changed_monthly`
+
+Count of MAU changing an issue time estimate
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216181438_g_project_management_issue_time_estimate_changed_monthly.yml)
+
+Group: `group::project management`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.issues_edit.g_project_management_issue_time_estimate_changed_weekly`
+
+Count of WAU changing an issue time estimate
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_7d/20210216181437_g_project_management_issue_time_estimate_changed_weekly.yml)
+
+Group: `group::project management`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.issues_edit.g_project_management_issue_time_spent_changed_monthly`
+
+Count of MAU recording time spent on an issue
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216181442_g_project_management_issue_time_spent_changed_monthly.yml)
+
+Group: `group::project management`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.issues_edit.g_project_management_issue_time_spent_changed_weekly`
+
+Count of WAU recording time spent on an issue
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_7d/20210216181440_g_project_management_issue_time_spent_changed_weekly.yml)
+
+Group: `group::project management`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.issues_edit.g_project_management_issue_title_changed_monthly`
+
+Count of MAU editing an issue title
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216181304_g_project_management_issue_title_changed_monthly.yml)
+
+Group: `group::project management`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.issues_edit.g_project_management_issue_title_changed_weekly`
+
+Count of WAU editing an issue title
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_7d/20210201124931_g_project_management_issue_title_changed_weekly.yml)
+
+Group: `group::project management`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.issues_edit.g_project_management_issue_unlocked_monthly`
+
+Count of MAU unlocking an issue
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216181411_g_project_management_issue_unlocked_monthly.yml)
+
+Group: `group::project management`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.issues_edit.g_project_management_issue_unlocked_weekly`
+
+Count of WAU unlocking an issue
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_7d/20210216181409_g_project_management_issue_unlocked_weekly.yml)
+
+Group: `group::project management`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.issues_edit.g_project_management_issue_unrelated_monthly`
+
+Count of MAU unrelating an issue to another issue
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216181400_g_project_management_issue_unrelated_monthly.yml)
+
+Group: `group::project management`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.issues_edit.g_project_management_issue_unrelated_weekly`
+
+Count of WAU unrelating an issue to another issue
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_7d/20210216181358_g_project_management_issue_unrelated_weekly.yml)
+
+Group: `group::project management`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.issues_edit.g_project_management_issue_weight_changed_monthly`
+
+Count of MAU changing an issue's weight
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_28d/20210216181345_g_project_management_issue_weight_changed_monthly.yml)
+
+Group: `group::project management`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `premium`, `ultimate`
+
+### `redis_hll_counters.issues_edit.g_project_management_issue_weight_changed_weekly`
+
+Count of WAU changing an issue's weight
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_7d/20210216181343_g_project_management_issue_weight_changed_weekly.yml)
+
+Group: `group::project management`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `premium`, `ultimate`
+
+### `redis_hll_counters.issues_edit.issues_edit_total_unique_counts_monthly`
+
+Aggregate count of MAU taking an action related to an issue
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216181504_issues_edit_total_unique_counts_monthly.yml)
+
+Group: `group::project management`
+
+Data Category: `Operational`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.issues_edit.issues_edit_total_unique_counts_weekly`
+
+Aggregate count of WAU taking an action related to an issue
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_7d/20210216181503_issues_edit_total_unique_counts_weekly.yml)
+
+Group: `group::project management`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.network_policies.clusters_using_network_policies_ui_monthly`
+
+Monthly number of distinct clusters with network policies using the network policies UI
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_28d/20210623202402_clusters_using_network_policies_ui_monthly.yml)
+
+Group: `group::container security`
+
+Data Category: `Operational`
+
+Status: `implemented`
+
+Tiers: `ultimate`
+
+### `redis_hll_counters.network_policies.clusters_using_network_policies_ui_weekly`
+
+Weekly number of distinct clusters with network policies using the network policies UI
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_7d/20210623202358_clusters_using_network_policies_ui_weekly.yml)
+
+Group: `group::container security`
+
+Data Category: `Operational`
+
+Status: `implemented`
+
+Tiers: `ultimate`
+
+### `redis_hll_counters.pipeline_authoring.o_pipeline_authoring_unique_users_committing_ciconfigfile_monthly`
+
+Monthly unique user count doing commits which contains the CI config file
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216184303_o_pipeline_authoring_unique_users_committing_ciconfigfile_monthly.yml)
+
+Group: `group::pipeline authoring`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.pipeline_authoring.o_pipeline_authoring_unique_users_committing_ciconfigfile_weekly`
+
+Weekly unique user count doing commits which contains the CI config file
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_7d/20210216184301_o_pipeline_authoring_unique_users_committing_ciconfigfile_weekly.yml)
+
+Group: `group::pipeline authoring`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.pipeline_authoring.o_pipeline_authoring_unique_users_pushing_mr_ciconfigfile_monthly`
+
+Monthly unique user count having merge requests which contains the CI config file
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210301144228_o_pipeline_authoring_unique_users_pushing_mr_ciconfigfile_monthly.yml)
+
+Group: `group::pipeline authoring`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.pipeline_authoring.o_pipeline_authoring_unique_users_pushing_mr_ciconfigfile_weekly`
+
+Weekly unique user count having merge requests which contains the CI config file
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_7d/20210301144209_o_pipeline_authoring_unique_users_pushing_mr_ciconfigfile_weekly.yml)
+
+Group: `group::pipeline authoring`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.pipeline_authoring.pipeline_authoring_total_unique_counts_monthly`
+
+Missing description
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210427105033_pipeline_authoring_total_unique_counts_monthly.yml)
+
+Group: ``
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.pipeline_authoring.pipeline_authoring_total_unique_counts_weekly`
+
+Missing description
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_7d/20210427105030_pipeline_authoring_total_unique_counts_weekly.yml)
+
+Group: ``
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.quickactions.i_quickactions_approve_monthly`
+
+Count of MAU using the `/approve` quick action
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216181508_i_quickactions_approve_monthly.yml)
+
+Group: `group::code review`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.quickactions.i_quickactions_approve_weekly`
+
+Count of WAU using the `/approve` quick action
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_7d/20210216181506_i_quickactions_approve_weekly.yml)
+
+Group: `group::code review`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.quickactions.i_quickactions_assign_multiple_monthly`
+
+Count of MAU using the `/assign @user1 @user2` quick action
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_28d/20210216181516_i_quickactions_assign_multiple_monthly.yml)
+
+Group: `group::project management`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `premium`, `ultimate`
+
+### `redis_hll_counters.quickactions.i_quickactions_assign_multiple_weekly`
+
+Count of WAU using the `/assign @user1 @user2` quick action
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_7d/20210216181514_i_quickactions_assign_multiple_weekly.yml)
+
+Group: `group::project management`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `premium`, `ultimate`
+
+### `redis_hll_counters.quickactions.i_quickactions_assign_reviewer_monthly`
+
+Count of MAU using the `/assign_reviewer` or `request_reviewer` quick action
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216181523_i_quickactions_assign_reviewer_monthly.yml)
+
+Group: `group::code review`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.quickactions.i_quickactions_assign_reviewer_weekly`
+
+Count of WAU using the `/assign_reviewer` or `request_reviewer` quick action
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_7d/20210216181521_i_quickactions_assign_reviewer_weekly.yml)
+
+Group: `group::code review`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.quickactions.i_quickactions_assign_self_monthly`
+
+Count of MAU using the `/assign me` quick action to assign self to an issuable
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216181519_i_quickactions_assign_self_monthly.yml)
+
+Group: `group::project management`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.quickactions.i_quickactions_assign_self_weekly`
+
+Count of WAU using the `/assign me` quick action to assign self to an issuable
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_7d/20210216181517_i_quickactions_assign_self_weekly.yml)
+
+Group: `group::project management`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.quickactions.i_quickactions_assign_single_monthly`
+
+Count of MAU using the `/assign @user1` quick action to assign a single individual to an issuable
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216181512_i_quickactions_assign_single_monthly.yml)
+
+Group: `group::project management`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.quickactions.i_quickactions_assign_single_weekly`
+
+Count of WAU using the `/assign @user1` quick action to assign a single individual to an issuable
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_7d/20210216181510_i_quickactions_assign_single_weekly.yml)
+
+Group: `group::project management`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.quickactions.i_quickactions_award_monthly`
+
+Count of MAU using the `/award` quick action to set an award emoji on an issuable
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216181527_i_quickactions_award_monthly.yml)
+
+Group: `group::project management`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.quickactions.i_quickactions_award_weekly`
+
+Count of WAU using the `/award` quick action to set an award emoji on an issuable
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_7d/20210216181525_i_quickactions_award_weekly.yml)
+
+Group: `group::project management`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.quickactions.i_quickactions_board_move_monthly`
+
+Count of MAU using the `/board_move` quick action
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216181530_i_quickactions_board_move_monthly.yml)
+
+Group: `group::project management`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.quickactions.i_quickactions_board_move_weekly`
+
+Count of WAU using the `/board_move` quick action
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_7d/20210216181529_i_quickactions_board_move_weekly.yml)
+
+Group: `group::project management`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.quickactions.i_quickactions_child_epic_monthly`
+
+Count of MAU using the `/child_epic` quick action
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_28d/20210216181534_i_quickactions_child_epic_monthly.yml)
+
+Group: `group::product planning`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `ultimate`
+
+### `redis_hll_counters.quickactions.i_quickactions_child_epic_weekly`
+
+Count of WAU using the `/child_epic` quick action
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_7d/20210216181532_i_quickactions_child_epic_weekly.yml)
+
+Group: `group::product planning`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `ultimate`
+
+### `redis_hll_counters.quickactions.i_quickactions_clear_weight_monthly`
+
+Count of MAU using the `/clear_weight` quick action
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_28d/20210216181538_i_quickactions_clear_weight_monthly.yml)
+
+Group: `group::project management`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `premium`, `ultimate`
+
+### `redis_hll_counters.quickactions.i_quickactions_clear_weight_weekly`
+
+Count of WAU using the `/clear_weight` quick action
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_7d/20210216181536_i_quickactions_clear_weight_weekly.yml)
+
+Group: `group::project management`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `premium`, `ultimate`
+
+### `redis_hll_counters.quickactions.i_quickactions_clone_monthly`
+
+Count of MAU using the `/clone` quick action to clone an issue.
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216181541_i_quickactions_clone_monthly.yml)
+
+Group: `group::project management`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.quickactions.i_quickactions_clone_weekly`
+
+Count of WAU using the `/clone` quick action to clone an issue.
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_7d/20210216181540_i_quickactions_clone_weekly.yml)
+
+Group: `group::project management`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.quickactions.i_quickactions_close_monthly`
+
+Count of MAU using the `/close` quick action to close an issuable
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216181545_i_quickactions_close_monthly.yml)
+
+Group: `group::project management`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.quickactions.i_quickactions_close_weekly`
+
+Count of WAU using the `/close` quick action to close an issuable
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_7d/20210216181543_i_quickactions_close_weekly.yml)
+
+Group: `group::project management`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.quickactions.i_quickactions_confidential_monthly`
+
+Count of MAU using the `/confidential` quick action to set an issue as confidential
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216181549_i_quickactions_confidential_monthly.yml)
+
+Group: `group::project management`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.quickactions.i_quickactions_confidential_weekly`
+
+Count of WAU using the `/confidential` quick action to set an issue as confidential
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_7d/20210216181547_i_quickactions_confidential_weekly.yml)
+
+Group: `group::project management`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.quickactions.i_quickactions_copy_metadata_issue_monthly`
+
+Count of MAU using the `/copy_metadata` quick action on an issue
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216181556_i_quickactions_copy_metadata_issue_monthly.yml)
+
+Group: `group::project management`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.quickactions.i_quickactions_copy_metadata_issue_weekly`
+
+Count of WAU using the `/copy_metadata` quick action on an issue
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_7d/20210216181554_i_quickactions_copy_metadata_issue_weekly.yml)
+
+Group: `group::project management`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.quickactions.i_quickactions_copy_metadata_merge_request_monthly`
+
+Count of MAU using the `/copy_metadata` quick action on a Merge Request
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216181553_i_quickactions_copy_metadata_merge_request_monthly.yml)
+
+Group: `group::source code`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.quickactions.i_quickactions_copy_metadata_merge_request_weekly`
+
+Count of WAU using the `/copy_metadata` quick action on a Merge Request
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_7d/20210216181551_i_quickactions_copy_metadata_merge_request_weekly.yml)
+
+Group: `group::source code`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.quickactions.i_quickactions_create_merge_request_monthly`
+
+Count of MAU using the `/create_merge_request` quick action
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216181600_i_quickactions_create_merge_request_monthly.yml)
+
+Group: `group::project management`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.quickactions.i_quickactions_create_merge_request_weekly`
+
+Count of WAU using the `/create_merge_request` quick action
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_7d/20210216181558_i_quickactions_create_merge_request_weekly.yml)
+
+Group: `group::project management`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.quickactions.i_quickactions_done_monthly`
+
+Count of MAU using the `/done` quick action to mark a todo as done
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216181604_i_quickactions_done_monthly.yml)
+
+Group: `group::project management`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.quickactions.i_quickactions_done_weekly`
+
+Count of WAU using the `/done` quick action to mark a todo as done
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_7d/20210216181602_i_quickactions_done_weekly.yml)
+
+Group: `group::project management`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.quickactions.i_quickactions_draft_monthly`
+
+Count of MAU using the `/draft` quick action on a Merge Request
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216181607_i_quickactions_draft_monthly.yml)
+
+Group: `group::source code`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.quickactions.i_quickactions_draft_weekly`
+
+Count of WAU using the `/draft` quick action on a Merge Request
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_7d/20210216181605_i_quickactions_draft_weekly.yml)
+
+Group: `group::source code`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.quickactions.i_quickactions_due_monthly`
+
+Count of MAU using the `/due` quick action to change the due date on an issuable
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216181611_i_quickactions_due_monthly.yml)
+
+Group: `group::project management`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.quickactions.i_quickactions_due_weekly`
+
+Count of WAU using the `/due` quick action to change the due date on an issuable
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_7d/20210216181609_i_quickactions_due_weekly.yml)
+
+Group: `group::project management`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.quickactions.i_quickactions_duplicate_monthly`
+
+Count of MAU using the `/duplicate` quick action to mark an issue as a duplicate of another
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216181615_i_quickactions_duplicate_monthly.yml)
+
+Group: `group::project management`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.quickactions.i_quickactions_duplicate_weekly`
+
+Count of WAU using the `/duplicate` quick action to mark an issue as a duplicate of another
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_7d/20210216181613_i_quickactions_duplicate_weekly.yml)
+
+Group: `group::project management`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.quickactions.i_quickactions_epic_monthly`
+
+Count of MAU using the `/epic` quick action
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_28d/20210216181618_i_quickactions_epic_monthly.yml)
+
+Group: `group::project management`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `premium`, `ultimate`
+
+### `redis_hll_counters.quickactions.i_quickactions_epic_weekly`
+
+Count of WAU using the `/epic` quick action
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_7d/20210216181617_i_quickactions_epic_weekly.yml)
+
+Group: `group::project management`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `premium`, `ultimate`
+
+### `redis_hll_counters.quickactions.i_quickactions_estimate_monthly`
+
+Count of MAU using the `/estimate` quick action to set a time estimate on an issue
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216181622_i_quickactions_estimate_monthly.yml)
+
+Group: `group::project management`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.quickactions.i_quickactions_estimate_weekly`
+
+Count of WAU using the `/estimate` quick action to set a time estimate on an issue
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_7d/20210216181620_i_quickactions_estimate_weekly.yml)
+
+Group: `group::project management`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.quickactions.i_quickactions_invite_email_multiple_monthly`
+
+Unique users using the /invite_email quick action to add a multiple email participants to an issue within 28 days
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210222041235_i_quickactions_invite_email_multiple_monthly.yml)
+
+Group: `group::product planning`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.quickactions.i_quickactions_invite_email_multiple_weekly`
+
+Unique users using the /invite_email quick action to add a multiple email participants to an issue within 7 days
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_7d/20210303154600_i_quickactions_invite_email_multiple_weekly.yml)
+
+Group: `group::product planning`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.quickactions.i_quickactions_invite_email_single_monthly`
+
+Unique users using the /invite_email quick action to add a single email participant to an issue within 28 days
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210222041219_i_quickactions_invite_email_single_monthly.yml)
+
+Group: `group::product planning`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.quickactions.i_quickactions_invite_email_single_weekly`
+
+Unique users using the /invite_email quick action to add a single email participant to an issue within 7 days
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_7d/20210303154557_i_quickactions_invite_email_single_weekly.yml)
+
+Group: `group::product planning`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.quickactions.i_quickactions_iteration_monthly`
+
+Count of MAU using the `/iteration` quick action
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_28d/20210216181626_i_quickactions_iteration_monthly.yml)
+
+Group: `group::project management`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `premium`, `ultimate`
+
+### `redis_hll_counters.quickactions.i_quickactions_iteration_weekly`
+
+Count of WAU using the `/iteration` quick action
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_7d/20210216181624_i_quickactions_iteration_weekly.yml)
+
+Group: `group::project management`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `premium`, `ultimate`
+
+### `redis_hll_counters.quickactions.i_quickactions_label_monthly`
+
+Count of MAU using the `/label` quick action
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216181629_i_quickactions_label_monthly.yml)
+
+Group: `group::project management`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.quickactions.i_quickactions_label_weekly`
+
+Count of WAU using the `/label` quick action
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_7d/20210216181628_i_quickactions_label_weekly.yml)
+
+Group: `group::project management`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.quickactions.i_quickactions_lock_monthly`
+
+Count of MAU using the `/lock` quick action
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216181633_i_quickactions_lock_monthly.yml)
+
+Group: `group::project management`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.quickactions.i_quickactions_lock_weekly`
+
+Count of WAU using the `/lock` quick action
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_7d/20210216181631_i_quickactions_lock_weekly.yml)
+
+Group: `group::project management`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.quickactions.i_quickactions_merge_monthly`
+
+Count of MAU using the `/merge` quick action
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216181637_i_quickactions_merge_monthly.yml)
+
+Group: `group::source code`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.quickactions.i_quickactions_merge_weekly`
+
+Count of WAU using the `/merge` quick action
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_7d/20210216181635_i_quickactions_merge_weekly.yml)
+
+Group: `group::source code`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.quickactions.i_quickactions_milestone_monthly`
+
+Count of MAU using the `/milestone` quick action
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216181641_i_quickactions_milestone_monthly.yml)
+
+Group: `group::project management`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.quickactions.i_quickactions_milestone_weekly`
+
+Count of WAU using the `/milestone` quick action
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_7d/20210216181639_i_quickactions_milestone_weekly.yml)
+
+Group: `group::project management`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.quickactions.i_quickactions_move_monthly`
+
+Count of MAU using the `/move` quick action
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216181644_i_quickactions_move_monthly.yml)
+
+Group: `group::project management`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.quickactions.i_quickactions_move_weekly`
+
+Count of WAU using the `/move` quick action
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_7d/20210216181642_i_quickactions_move_weekly.yml)
+
+Group: `group::project management`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.quickactions.i_quickactions_parent_epic_monthly`
+
+Count of MAU using the `/parent_epic` quick action
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_28d/20210216181648_i_quickactions_parent_epic_monthly.yml)
+
+Group: `group::product planning`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `ultimate`
+
+### `redis_hll_counters.quickactions.i_quickactions_parent_epic_weekly`
+
+Count of WAU using the `/parent_epic` quick action
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_7d/20210216181646_i_quickactions_parent_epic_weekly.yml)
+
+Group: `group::product planning`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `ultimate`
+
+### `redis_hll_counters.quickactions.i_quickactions_promote_monthly`
+
+Count of MAU using the `/promote` quick action
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_28d/20210216181652_i_quickactions_promote_monthly.yml)
+
+Group: `group::project management`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `premium`, `ultimate`
+
+### `redis_hll_counters.quickactions.i_quickactions_promote_weekly`
+
+Count of WAU using the `/promote` quick action
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_7d/20210216181650_i_quickactions_promote_weekly.yml)
+
+Group: `group::project management`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `premium`, `ultimate`
+
+### `redis_hll_counters.quickactions.i_quickactions_publish_monthly`
+
+Count of MAU using the `/publish` quick action
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_28d/20210216181655_i_quickactions_publish_monthly.yml)
+
+Group: `group::monitor`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `ultimate`
+
+### `redis_hll_counters.quickactions.i_quickactions_publish_weekly`
+
+Count of WAU using the `/publish` quick action
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_7d/20210216181654_i_quickactions_publish_weekly.yml)
+
+Group: `group::monitor`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `ultimate`
+
+### `redis_hll_counters.quickactions.i_quickactions_reassign_monthly`
+
+Count of MAU using the `/reassign @user1` quick action
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216181659_i_quickactions_reassign_monthly.yml)
+
+Group: `group::project management`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.quickactions.i_quickactions_reassign_reviewer_monthly`
+
+Count of MAU using the `/reassign_reviewer` quick action
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216181703_i_quickactions_reassign_reviewer_monthly.yml)
+
+Group: `group::code review`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.quickactions.i_quickactions_reassign_reviewer_weekly`
+
+Count of WAU using the `/reassign_reviewer` quick action
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_7d/20210216181701_i_quickactions_reassign_reviewer_weekly.yml)
+
+Group: `group::code review`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.quickactions.i_quickactions_reassign_weekly`
+
+Count of WAU using the `/reassign @user1` quick action
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_7d/20210216181657_i_quickactions_reassign_weekly.yml)
+
+Group: `group::project management`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.quickactions.i_quickactions_rebase_monthly`
+
+Count of MAU using the `/rebase` quick action on a Merge Request
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216181707_i_quickactions_rebase_monthly.yml)
+
+Group: `group::source code`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.quickactions.i_quickactions_rebase_weekly`
+
+Count of WAU using the `/rebase` quick action on a Merge Request
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_7d/20210216181705_i_quickactions_rebase_weekly.yml)
+
+Group: `group::source code`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.quickactions.i_quickactions_relabel_monthly`
+
+Count of MAU using the `/relabel` quick action
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216181710_i_quickactions_relabel_monthly.yml)
+
+Group: `group::project management`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.quickactions.i_quickactions_relabel_weekly`
+
+Count of WAU using the `/relabel` quick action
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_7d/20210216181708_i_quickactions_relabel_weekly.yml)
+
+Group: `group::project management`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.quickactions.i_quickactions_relate_monthly`
+
+Count of MAU using the `/relate` quick action
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216181714_i_quickactions_relate_monthly.yml)
+
+Group: `group::project management`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.quickactions.i_quickactions_relate_weekly`
+
+Count of WAU using the `/relate` quick action
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_7d/20210216181712_i_quickactions_relate_weekly.yml)
+
+Group: `group::project management`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.quickactions.i_quickactions_remove_child_epic_monthly`
+
+Count of MAU using the `/remove_child_epic` quick action
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_28d/20210216181718_i_quickactions_remove_child_epic_monthly.yml)
+
+Group: `group::product planning`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `ultimate`
+
+### `redis_hll_counters.quickactions.i_quickactions_remove_child_epic_weekly`
+
+Count of WAU using the `/remove_child_epic` quick action
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_7d/20210216181716_i_quickactions_remove_child_epic_weekly.yml)
+
+Group: `group::product planning`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `ultimate`
+
+### `redis_hll_counters.quickactions.i_quickactions_remove_due_date_monthly`
+
+Count of MAU using the `/remove_due_date` quick action
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216181721_i_quickactions_remove_due_date_monthly.yml)
+
+Group: `group::project management`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.quickactions.i_quickactions_remove_due_date_weekly`
+
+Count of WAU using the `/remove_due_date` quick action
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_7d/20210216181719_i_quickactions_remove_due_date_weekly.yml)
+
+Group: `group::project management`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.quickactions.i_quickactions_remove_epic_monthly`
+
+Count of MAU using the `/remove_epic` quick action
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_28d/20210216181725_i_quickactions_remove_epic_monthly.yml)
+
+Group: `group::project management`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `premium`, `ultimate`
+
+### `redis_hll_counters.quickactions.i_quickactions_remove_epic_weekly`
+
+Count of WAU using the `/remove_epic` quick action
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_7d/20210216181723_i_quickactions_remove_epic_weekly.yml)
+
+Group: `group::project management`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `premium`, `ultimate`
+
+### `redis_hll_counters.quickactions.i_quickactions_remove_estimate_monthly`
+
+Count of MAU using the `/remove_estimate` quick action
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216181729_i_quickactions_remove_estimate_monthly.yml)
+
+Group: `group::project management`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.quickactions.i_quickactions_remove_estimate_weekly`
+
+Count of WAU using the `/remove_estimate` quick action
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_7d/20210216181727_i_quickactions_remove_estimate_weekly.yml)
+
+Group: `group::project management`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.quickactions.i_quickactions_remove_iteration_monthly`
+
+Count of MAU using the `/remove_iteration` quick action
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_28d/20210216181732_i_quickactions_remove_iteration_monthly.yml)
+
+Group: `group::project management`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `premium`, `ultimate`
+
+### `redis_hll_counters.quickactions.i_quickactions_remove_iteration_weekly`
+
+Count of WAU using the `/remove_iteration` quick action
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_7d/20210216181731_i_quickactions_remove_iteration_weekly.yml)
+
+Group: `group::project management`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `premium`, `ultimate`
+
+### `redis_hll_counters.quickactions.i_quickactions_remove_milestone_monthly`
+
+Count of MAU using the `/remove_milestone` quick action
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216181736_i_quickactions_remove_milestone_monthly.yml)
+
+Group: `group::project management`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.quickactions.i_quickactions_remove_milestone_weekly`
+
+Count of WAU using the `/remove_milestone` quick action
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_7d/20210216181734_i_quickactions_remove_milestone_weekly.yml)
+
+Group: `group::project management`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.quickactions.i_quickactions_remove_parent_epic_monthly`
+
+Count of MAU using the `/remove_parent_epic` quick action
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_28d/20210216181740_i_quickactions_remove_parent_epic_monthly.yml)
+
+Group: `group::product planning`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `ultimate`
+
+### `redis_hll_counters.quickactions.i_quickactions_remove_parent_epic_weekly`
+
+Count of WAU using the `/remove_parent_epic` quick action
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_7d/20210216181738_i_quickactions_remove_parent_epic_weekly.yml)
+
+Group: `group::product planning`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `ultimate`
+
+### `redis_hll_counters.quickactions.i_quickactions_remove_time_spent_monthly`
+
+Count of MAU using the `/remove_time_spent` quick action
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216181744_i_quickactions_remove_time_spent_monthly.yml)
+
+Group: `group::project management`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.quickactions.i_quickactions_remove_time_spent_weekly`
+
+Count of WAU using the `/remove_time_spent` quick action
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_7d/20210216181742_i_quickactions_remove_time_spent_weekly.yml)
+
+Group: `group::project management`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.quickactions.i_quickactions_remove_zoom_monthly`
+
+Count of MAU using the `/remove_zoom` quick action
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216181747_i_quickactions_remove_zoom_monthly.yml)
+
+Group: `group::project management`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.quickactions.i_quickactions_remove_zoom_weekly`
+
+Count of WAU using the `/remove_zoom` quick action
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_7d/20210216181745_i_quickactions_remove_zoom_weekly.yml)
+
+Group: `group::project management`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.quickactions.i_quickactions_reopen_monthly`
+
+Count of MAU using the `/reopen` quick action
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216181751_i_quickactions_reopen_monthly.yml)
+
+Group: `group::project management`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.quickactions.i_quickactions_reopen_weekly`
+
+Count of WAU using the `/reopen` quick action
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_7d/20210216181749_i_quickactions_reopen_weekly.yml)
+
+Group: `group::project management`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.quickactions.i_quickactions_shrug_monthly`
+
+Count of MAU using the `/shrug` quick action
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216181755_i_quickactions_shrug_monthly.yml)
+
+Group: `group::project management`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.quickactions.i_quickactions_shrug_weekly`
+
+Count of WAU using the `/shrug` quick action
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_7d/20210216181753_i_quickactions_shrug_weekly.yml)
+
+Group: `group::project management`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.quickactions.i_quickactions_spend_add_monthly`
+
+Count of MAU using the `/spend` quick action to add time spent
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216181802_i_quickactions_spend_add_monthly.yml)
+
+Group: `group::project management`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.quickactions.i_quickactions_spend_add_weekly`
+
+Count of WAU using the `/spend` quick action to add time spent
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_7d/20210216181800_i_quickactions_spend_add_weekly.yml)
+
+Group: `group::project management`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.quickactions.i_quickactions_spend_subtract_monthly`
+
+Count of MAU using the `/spend` quick action to subtract time spent
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216181758_i_quickactions_spend_subtract_monthly.yml)
+
+Group: `group::project management`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.quickactions.i_quickactions_spend_subtract_weekly`
+
+Count of WAU using the `/spend` quick action to subtract time spent
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_7d/20210216181756_i_quickactions_spend_subtract_weekly.yml)
+
+Group: `group::project management`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.quickactions.i_quickactions_submit_review_monthly`
+
+Count of MAU using the `/submit_review` quick action on Merge Requests
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216181806_i_quickactions_submit_review_monthly.yml)
+
+Group: `group::code review`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.quickactions.i_quickactions_submit_review_weekly`
+
+Count of WAU using the `/submit_review` quick action on Merge Requests
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_7d/20210216181804_i_quickactions_submit_review_weekly.yml)
+
+Group: `group::code review`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.quickactions.i_quickactions_subscribe_monthly`
+
+Count of MAU using the `/subscribe` quick action
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216181809_i_quickactions_subscribe_monthly.yml)
+
+Group: `group::project management`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.quickactions.i_quickactions_subscribe_weekly`
+
+Count of WAU using the `/subscribe` quick action
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_7d/20210216181808_i_quickactions_subscribe_weekly.yml)
+
+Group: `group::project management`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.quickactions.i_quickactions_tableflip_monthly`
+
+Count of MAU using the `/tableflip` quick action
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216181813_i_quickactions_tableflip_monthly.yml)
+
+Group: `group::project management`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.quickactions.i_quickactions_tableflip_weekly`
+
+Count of WAU using the `/tableflip` quick action
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_7d/20210216181811_i_quickactions_tableflip_weekly.yml)
+
+Group: `group::project management`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.quickactions.i_quickactions_tag_monthly`
+
+Count of MAU using the `/tag` quick action
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216181817_i_quickactions_tag_monthly.yml)
+
+Group: `group::source code`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.quickactions.i_quickactions_tag_weekly`
+
+Count of WAU using the `/tag` quick action
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_7d/20210216181815_i_quickactions_tag_weekly.yml)
+
+Group: `group::source code`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.quickactions.i_quickactions_target_branch_monthly`
+
+Count of MAU using the `/target_branch` quick action on Merge Requests
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216181821_i_quickactions_target_branch_monthly.yml)
+
+Group: `group::source code`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.quickactions.i_quickactions_target_branch_weekly`
+
+Count of WAU using the `/target_branch` quick action on Merge Requests
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_7d/20210216181819_i_quickactions_target_branch_weekly.yml)
+
+Group: `group::source code`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.quickactions.i_quickactions_title_monthly`
+
+Count of MAU using the `/title` quick action
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216181824_i_quickactions_title_monthly.yml)
+
+Group: `group::project management`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.quickactions.i_quickactions_title_weekly`
+
+Count of WAU using the `/title` quick action
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_7d/20210216181822_i_quickactions_title_weekly.yml)
+
+Group: `group::project management`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.quickactions.i_quickactions_todo_monthly`
+
+Count of MAU using the `/todo` quick action
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216181828_i_quickactions_todo_monthly.yml)
+
+Group: `group::project management`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.quickactions.i_quickactions_todo_weekly`
+
+Count of WAU using the `/todo` quick action
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_7d/20210216181826_i_quickactions_todo_weekly.yml)
+
+Group: `group::project management`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.quickactions.i_quickactions_unassign_all_monthly`
+
+Count of MAU using the `/unassign` quick action on Merge Requests
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216181835_i_quickactions_unassign_all_monthly.yml)
+
+Group: `group::source code`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.quickactions.i_quickactions_unassign_all_weekly`
+
+Count of WAU using the `/unassign` quick action on Merge Requests
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_7d/20210216181833_i_quickactions_unassign_all_weekly.yml)
+
+Group: `group::source code`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.quickactions.i_quickactions_unassign_reviewer_monthly`
+
+Count of MAU using the `/unassign_reviewer` or `/remove_reviewer` quick action on Merge Requests
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216181839_i_quickactions_unassign_reviewer_monthly.yml)
+
+Group: `group::code review`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.quickactions.i_quickactions_unassign_reviewer_weekly`
+
+Count of WAU using the `/unassign_reviewer` or `/remove_reviewer` quick action on Merge Requests
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_7d/20210216181837_i_quickactions_unassign_reviewer_weekly.yml)
+
+Group: `group::code review`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.quickactions.i_quickactions_unassign_specific_monthly`
+
+Count of MAU using the `/unassign @user1` quick action on Merge Requests
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216181832_i_quickactions_unassign_specific_monthly.yml)
+
+Group: `group::source code`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.quickactions.i_quickactions_unassign_specific_weekly`
+
+Count of WAU using the `/unassign @user1` quick action on Merge Requests
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_7d/20210216181830_i_quickactions_unassign_specific_weekly.yml)
+
+Group: `group::source code`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.quickactions.i_quickactions_unlabel_all_monthly`
+
+Count of MAU using the `/unlabel` quick action to remove all labels
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216181846_i_quickactions_unlabel_all_monthly.yml)
+
+Group: `group::project management`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.quickactions.i_quickactions_unlabel_all_weekly`
+
+Count of WAU using the `/unlabel` quick action to remove all labels
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_7d/20210216181845_i_quickactions_unlabel_all_weekly.yml)
+
+Group: `group::project management`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.quickactions.i_quickactions_unlabel_specific_monthly`
+
+Count of MAU using the `/unlabel` or `/remove_label` quick action to remove one or more specific labels
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216181843_i_quickactions_unlabel_specific_monthly.yml)
+
+Group: `group::project management`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.quickactions.i_quickactions_unlabel_specific_weekly`
+
+Count of WAU using the `/unlabel` or `/remove_label` quick action to remove one or more specific labels
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_7d/20210216181841_i_quickactions_unlabel_specific_weekly.yml)
+
+Group: `group::project management`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.quickactions.i_quickactions_unlock_monthly`
+
+Count of MAU using the `/unlock` quick action
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216181850_i_quickactions_unlock_monthly.yml)
+
+Group: `group::project management`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.quickactions.i_quickactions_unlock_weekly`
+
+Count of WAU using the `/unlock` quick action
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_7d/20210216181848_i_quickactions_unlock_weekly.yml)
+
+Group: `group::project management`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.quickactions.i_quickactions_unsubscribe_monthly`
+
+Count of MAU using the `/unsubscribe` quick action
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216181854_i_quickactions_unsubscribe_monthly.yml)
+
+Group: `group::project management`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.quickactions.i_quickactions_unsubscribe_weekly`
+
+Count of WAU using the `/unsubscribe` quick action
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_7d/20210216181852_i_quickactions_unsubscribe_weekly.yml)
+
+Group: `group::project management`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.quickactions.i_quickactions_weight_monthly`
+
+Count of MAU using the `/weight` quick action
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_28d/20210216181857_i_quickactions_weight_monthly.yml)
+
+Group: `group::project management`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `premium`, `ultimate`
+
+### `redis_hll_counters.quickactions.i_quickactions_weight_weekly`
+
+Count of WAU using the `/weight` quick action
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_7d/20210216181856_i_quickactions_weight_weekly.yml)
+
+Group: `group::project management`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `premium`, `ultimate`
+
+### `redis_hll_counters.quickactions.i_quickactions_wip_monthly`
+
+Count of MAU using the `/wip` quick action on Merge Requests
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216181901_i_quickactions_wip_monthly.yml)
+
+Group: `group::source code`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.quickactions.i_quickactions_wip_weekly`
+
+Count of WAU using the `/wip` quick action on Merge Requests
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_7d/20210216181859_i_quickactions_wip_weekly.yml)
+
+Group: `group::source code`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.quickactions.i_quickactions_zoom_monthly`
+
+Count of MAU using the `/zoom` quick action on Issues
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216181905_i_quickactions_zoom_monthly.yml)
+
+Group: `group::project management`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.quickactions.i_quickactions_zoom_weekly`
+
+Count of WAU using the `/zoom` quick action on Issues
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_7d/20210216181903_i_quickactions_zoom_weekly.yml)
+
+Group: `group::project management`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.quickactions.quickactions_total_unique_counts_monthly`
+
+Count of MAU using one or more quick actions
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216184803_quickactions_total_unique_counts_monthly.yml)
+
+Group: `group::project management`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.quickactions.quickactions_total_unique_counts_weekly`
+
+Missing description
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_7d/20210216184801_quickactions_total_unique_counts_weekly.yml)
+
+Group: ``
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers:
+
+### `redis_hll_counters.search.i_search_advanced_monthly`
+
+Calculated unique users to perform Advanced searches by month
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_28d/20210216180427_i_search_advanced_monthly.yml)
+
+Group: `group::global search`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `premium`, `ultimate`
+
+### `redis_hll_counters.search.i_search_advanced_weekly`
+
+Calculated unique users to perform Advanced searches by week
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_7d/20210216180425_i_search_advanced_weekly.yml)
+
+Group: `group::global search`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `premium`, `ultimate`
+
+### `redis_hll_counters.search.i_search_paid_monthly`
+
+Calculated unique users to perform a search with a paid license enabled by month
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_all/20210216184035_i_search_paid_monthly.yml)
+
+Group: `group::global search`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `premium`, `ultimate`
+
+### `redis_hll_counters.search.i_search_paid_weekly`
+
+Calculated unique users to perform a search with a paid license enabled by week
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_7d/20210216184033_i_search_paid_weekly.yml)
+
+Group: `group::global search`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `premium`, `ultimate`
+
+### `redis_hll_counters.search.i_search_total_monthly`
+
+Calculated unique users to perform Basic or Advanced searches by month
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216180424_i_search_total_monthly.yml)
+
+Group: `group::global search`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.search.i_search_total_weekly`
+
+Calculated unique users to perform Basic or Advanced searches by week
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_7d/20210216180422_i_search_total_weekly.yml)
+
+Group: `group::global search`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.search.search_total_unique_counts_monthly`
+
+Total unique users for i_search_total, i_search_advanced, i_search_paid for recent 28 days. This metric is redundant because advanced will be a subset of paid and paid will be a subset of total. i_search_total is more appropriate if you just want the total
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216180431_search_total_unique_counts_monthly.yml)
+
+Group: `group::global search`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.search.search_total_unique_counts_weekly`
+
+Calculated unique users to perform Basic or Advanced searches by week
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_7d/20210216180429_search_total_unique_counts_weekly.yml)
+
+Group: `group::global search`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.secure.users_expanding_secure_security_report_monthly`
+
+Count of expanding the security report widget
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210409095855_users_expanding_secure_security_report_monthly.yml)
+
+Group: `group::static analysis`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.secure.users_expanding_secure_security_report_weekly`
+
+Count of expanding the security report widget
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_7d/20210409095855_users_expanding_secure_security_report_weekly.yml)
+
+Group: `group::static analysis`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.snippets.i_snippets_show_monthly`
+
+Monthly number of users viewing snippets
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216184255_i_snippets_show_monthly.yml)
+
+Group: `group::editor`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.snippets.i_snippets_show_weekly`
+
+Weekly number of users viewing snippets
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_7d/20210216184253_i_snippets_show_weekly.yml)
+
+Group: `group::editor`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.source_code.design_action_monthly`
+
+Count of total design actions (upload, delete, comment, reply)
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216182106_design_action_monthly.yml)
+
+Group: `group::source code`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.source_code.design_action_weekly`
+
+Count of total design actions (upload, delete, comment, reply)
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_7d/20210216182104_design_action_weekly.yml)
+
+Group: `group::source code`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.source_code.git_write_action_monthly`
+
+Count of unique Git write actions
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216184047_git_write_action_monthly.yml)
+
+Group: `group::source code`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.source_code.git_write_action_weekly`
+
+Count of unique Git write actions
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_7d/20210216184045_git_write_action_weekly.yml)
+
+Group: `group::source code`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.source_code.i_source_code_code_intelligence_monthly`
+
+Count of unique users who use code intelligence
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216175117_i_source_code_code_intelligence_monthly.yml)
+
+Group: `group::source code`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.source_code.i_source_code_code_intelligence_weekly`
+
+Count of unique users who use code intelligence
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_7d/20210216175114_i_source_code_code_intelligence_weekly.yml)
+
+Group: `group::source code`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.source_code.merge_request_action_monthly`
+
+Count of unique users who perform an action on a merge request
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216175113_merge_request_action_monthly.yml)
+
+Group: `group::code review`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.source_code.merge_request_action_weekly`
+
+Count of unique users who perform an action on a merge request
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_7d/20210216175111_merge_request_action_weekly.yml)
+
+Group: `group::code review`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.source_code.project_action_monthly`
+
+Count of unique actions done on projects and related resources (create, edit, delete, comment)
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216182109_project_action_monthly.yml)
+
+Group: `group::source code`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.source_code.project_action_weekly`
+
+Count of unique actions done on projects and related resources (create, edit, delete, comment)
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_7d/20210216182107_project_action_weekly.yml)
+
+Group: `group::source code`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.source_code.wiki_action_monthly`
+
+Count of unique actions done on a wiki (create, edit, delete)
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216182102_wiki_action_monthly.yml)
+
+Group: `group::source code`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.source_code.wiki_action_weekly`
+
+Count of unique actions done on a wiki (create, edit, delete)
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_7d/20210216182100_wiki_action_weekly.yml)
+
+Group: `group::source code`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.terraform.p_terraform_state_api_unique_users_monthly`
+
+Monthly active users of GitLab Managed Terraform states
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216184259_p_terraform_state_api_unique_users_monthly.yml)
+
+Group: `group::configure`
+
+Data Category: `Operational`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.terraform.p_terraform_state_api_unique_users_weekly`
+
+Missing description
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_7d/20210216184257_p_terraform_state_api_unique_users_weekly.yml)
+
+Group: ``
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers:
+
+### `redis_hll_counters.testing.i_testing_full_code_quality_report_total_monthly`
+
+Count of unique users per week|month who visit the full code quality report
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_28d/20210216182147_i_testing_full_code_quality_report_total_monthly.yml)
+
+Group: `group::testing`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `premium`, `ultimate`
+
+### `redis_hll_counters.testing.i_testing_full_code_quality_report_total_weekly`
+
+Count of unique users per week who visit the full code quality report
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_7d/20210216182145_i_testing_full_code_quality_report_total_weekly.yml)
+
+Group: `group::testing`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `premium`, `ultimate`
+
+### `redis_hll_counters.testing.i_testing_group_code_coverage_project_click_total_monthly`
+
+Aggregated count of unique users who have clicked from group code coverage page to an individual project page each month.
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_28d/20210216182153_i_testing_group_code_coverage_project_click_total_monthly.yml)
+
+Group: `group::testing`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `premium`, `ultimate`
+
+### `redis_hll_counters.testing.i_testing_group_code_coverage_project_click_total_weekly`
+
+Aggregated count of unique users who have clicked from group code coverage page to an individual project page each week.
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_7d/20210216184132_i_testing_group_code_coverage_project_click_total_weekly.yml)
+
+Group: `group::testing`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `premium`, `ultimate`
+
+### `redis_hll_counters.testing.i_testing_group_code_coverage_visit_total_monthly`
+
+Count of unique users per month who visited the group code coverage page
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_28d/20210216182143_i_testing_group_code_coverage_visit_total_monthly.yml)
+
+Group: `group::testing`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `premium`, `ultimate`
+
+### `redis_hll_counters.testing.i_testing_group_code_coverage_visit_total_weekly`
+
+Count of unique users per week who visited the group code coverage page
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_7d/20210216182141_i_testing_group_code_coverage_visit_total_weekly.yml)
+
+Group: `group::testing`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `premium`, `ultimate`
+
+### `redis_hll_counters.testing.i_testing_load_performance_widget_total_monthly`
+
+Count of unique users per month who expanded the load performance report MR widget
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_28d/20210216182156_i_testing_load_performance_widget_total_monthly.yml)
+
+Group: `group::testing`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `premium`, `ultimate`
+
+### `redis_hll_counters.testing.i_testing_load_performance_widget_total_weekly`
+
+Count of unique users per week who expanded the load performance report MR widget
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_7d/20210216182154_i_testing_load_performance_widget_total_weekly.yml)
+
+Group: `group::testing`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `premium`, `ultimate`
+
+### `redis_hll_counters.testing.i_testing_metrics_report_artifact_uploaders_monthly`
+
+Tracks number of metrics reports uploaded monthly.
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_28d/20210216182200_i_testing_metrics_report_artifact_uploaders_monthly.yml)
+
+Group: `group::testing`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `premium`, `ultimate`
+
+### `redis_hll_counters.testing.i_testing_metrics_report_artifact_uploaders_weekly`
+
+Count of unique users per week who trigger a pipeline that uploads a metrics report.
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_7d/20210216182158_i_testing_metrics_report_artifact_uploaders_weekly.yml)
+
+Group: `group::testing`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `premium`, `ultimate`
+
+### `redis_hll_counters.testing.i_testing_metrics_report_widget_total_monthly`
+
+Count of unique users per month who expanded the metrics report MR widget
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_28d/20210216182139_i_testing_metrics_report_widget_total_monthly.yml)
+
+Group: `group::testing`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `premium`, `ultimate`
+
+### `redis_hll_counters.testing.i_testing_metrics_report_widget_total_weekly`
+
+Count of unique users per week who expanded the metrics report MR widget
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_7d/20210216182138_i_testing_metrics_report_widget_total_weekly.yml)
+
+Group: `group::testing`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `premium`, `ultimate`
+
+### `redis_hll_counters.testing.i_testing_summary_widget_total_monthly`
+
+Unique users that expand the test summary merge request widget by month
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210413205507_i_testing_summary_widget_total_monthly.yml)
+
+Group: `group::testing`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.testing.i_testing_summary_widget_total_weekly`
+
+Unique users that expand the test summary merge request widget by week
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_7d/20210413205507_i_testing_summary_widget_total_weekly.yml)
+
+Group: `group::testing`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.testing.i_testing_test_case_parsed_monthly`
+
+Internal Tracking to count number of unit tests parsed for planning of future code testing features. Data available [here](https://app.periscopedata.com/app/gitlab/788674/Verify:Testing-Group-Metrics?widget=10454394&udv=0)
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216182136_i_testing_test_case_parsed_monthly.yml)
+
+Group: `group::testing`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.testing.i_testing_test_case_parsed_weekly`
+
+Internal Tracking to count number of unit tests parsed for planning of future code testing features. Data available [here](https://app.periscopedata.com/app/gitlab/788674/Verify:Testing-Group-Metrics?widget=10454394&udv=0)
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_7d/20210216182134_i_testing_test_case_parsed_weekly.yml)
+
+Group: `group::testing`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.testing.i_testing_web_performance_widget_total_monthly`
+
+Count of unique users per month who expanded the browser performance report MR widget
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_28d/20210216182151_i_testing_web_performance_widget_total_monthly.yml)
+
+Group: `group::testing`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `premium`, `ultimate`
+
+### `redis_hll_counters.testing.i_testing_web_performance_widget_total_weekly`
+
+Count of unique users per week who expanded the browser performance report MR widget
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_7d/20210216182149_i_testing_web_performance_widget_total_weekly.yml)
+
+Group: `group::testing`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `premium`, `ultimate`
+
+### `redis_hll_counters.testing.testing_total_unique_counts_monthly`
+
+Missing description
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216184140_testing_total_unique_counts_monthly.yml)
+
+Group: ``
+
+Data Category: `Optional`
+
+Status: `removed`
+
+Tiers: `free`
+
+### `redis_hll_counters.testing.testing_total_unique_counts_weekly`
+
+Missing description
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_7d/20210216184138_testing_total_unique_counts_weekly.yml)
+
+Group: ``
+
+Data Category: `Optional`
+
+Status: `removed`
+
+Tiers: `premium`, `ultimate`
+
+### `redis_hll_counters.testing.users_expanding_testing_accessibility_report_monthly`
+
+Count of expanding the accessibility report widget
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210409100628_users_expanding_testing_accessibility_report_monthly.yml)
+
+Group: `group::testing`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.testing.users_expanding_testing_accessibility_report_weekly`
+
+Count of expanding the accessibility report widget
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_7d/20210409100628_users_expanding_testing_accessibility_report_weekly.yml)
+
+Group: `group::testing`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.testing.users_expanding_testing_code_quality_report_monthly`
+
+Count of expanding the code quality widget
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210409100451_users_expanding_testing_code_quality_report_monthly.yml)
+
+Group: `group::testing`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.testing.users_expanding_testing_code_quality_report_weekly`
+
+Count of expanding the code quality widget
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_7d/20210409100451_users_expanding_testing_code_quality_report_weekly.yml)
+
+Group: `group::testing`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.user_packages.i_package_composer_user_monthly`
+
+A monthly count of users that have published a Composer package to the registry
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216184854_i_package_composer_user_monthly.yml)
+
+Group: `group::package`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.user_packages.i_package_composer_user_weekly`
+
+A weekly count of users that have published a Composer package to the registry
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_7d/20210216184852_i_package_composer_user_weekly.yml)
+
+Group: `group::package`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.user_packages.i_package_conan_user_monthly`
+
+A monthly count of users that have published a Conan package to the registry
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216184858_i_package_conan_user_monthly.yml)
+
+Group: `group::package`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.user_packages.i_package_conan_user_weekly`
+
+A weekly count of users that have published a Conan package to the registry
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_7d/20210216184856_i_package_conan_user_weekly.yml)
+
+Group: `group::package`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.user_packages.i_package_container_user_monthly`
+
+A monthly count of users that have published a container image to the registry
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216184902_i_package_container_user_monthly.yml)
+
+Group: `group::package`
+
+Data Category: `Optional`
+
+Status: `deprecated`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.user_packages.i_package_container_user_weekly`
+
+A weekly count of users that have published a container image to the registry
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_7d/20210216184900_i_package_container_user_weekly.yml)
+
+Group: `group::package`
+
+Data Category: `Optional`
+
+Status: `deprecated`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.user_packages.i_package_debian_user_monthly`
+
+A monthly count of users that have published a Debian package to the registry
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216184906_i_package_debian_user_monthly.yml)
+
+Group: `group::package`
+
+Data Category: `Optional`
+
+Status: `deprecated`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.user_packages.i_package_debian_user_weekly`
+
+A weekly count of users that have published a Debian package to the registry
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_7d/20210216184904_i_package_debian_user_weekly.yml)
+
+Group: `group::package`
+
+Data Category: `Optional`
+
+Status: `deprecated`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.user_packages.i_package_generic_user_monthly`
+
+A monthly count of users that have published a generic package to the registry
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216184910_i_package_generic_user_monthly.yml)
+
+Group: `group::package`
+
+Data Category: `Optional`
+
+Status: `broken`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.user_packages.i_package_generic_user_weekly`
+
+A weekly count of users that have published a generic package to the registry
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_7d/20210216184908_i_package_generic_user_weekly.yml)
+
+Group: `group::package`
+
+Data Category: `Optional`
+
+Status: `broken`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.user_packages.i_package_golang_user_monthly`
+
+A monthly count of users that have published a Go moduleto the registry
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216184913_i_package_golang_user_monthly.yml)
+
+Group: `group::package`
+
+Data Category: `Optional`
+
+Status: `deprecated`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.user_packages.i_package_golang_user_weekly`
+
+A weekly count of users that have published a Go module to the registry
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_7d/20210216184911_i_package_golang_user_weekly.yml)
+
+Group: `group::package`
+
+Data Category: `Optional`
+
+Status: `deprecated`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.user_packages.i_package_helm_user_monthly`
+
+Distinct user count events for Helm packages in recent 28 days
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210517075259_i_package_helm_user_monthly.yml)
+
+Group: `group::package`
+
+Data Category: `Optional`
+
+Status: `implemented`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.user_packages.i_package_helm_user_weekly`
+
+Distinct user count events for Helm packages in recent 7 days
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_7d/20210517075252_i_package_helm_user_weekly.yml)
+
+Group: `group::package`
+
+Data Category: `Optional`
+
+Status: `implemented`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.user_packages.i_package_maven_user_monthly`
+
+A monthly count of users that have published a Maven package to the registry
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216184917_i_package_maven_user_monthly.yml)
+
+Group: `group::package`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.user_packages.i_package_maven_user_weekly`
+
+A weekly count of users that have published a Maven package to the registry
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_7d/20210216184916_i_package_maven_user_weekly.yml)
+
+Group: `group::package`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.user_packages.i_package_npm_user_monthly`
+
+A monthly count of users that have published an npm package to the registry
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216184921_i_package_npm_user_monthly.yml)
+
+Group: `group::package`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.user_packages.i_package_npm_user_weekly`
+
+A weekly count of users that have published an npm package to the registry
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_7d/20210216184919_i_package_npm_user_weekly.yml)
+
+Group: `group::package`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.user_packages.i_package_nuget_user_monthly`
+
+A monthly count of users that have published a NuGet package to the registry
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216184925_i_package_nuget_user_monthly.yml)
+
+Group: `group::package`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.user_packages.i_package_nuget_user_weekly`
+
+A weekly count of users that have published a NuGet package to the registry
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_7d/20210216184923_i_package_nuget_user_weekly.yml)
+
+Group: `group::package`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.user_packages.i_package_pypi_user_monthly`
+
+A monthly count of users that have published a PyPI package to the registry
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216184929_i_package_pypi_user_monthly.yml)
+
+Group: `group::package`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.user_packages.i_package_pypi_user_weekly`
+
+A weekly count of users that have published a Python package to the registry
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_7d/20210216184927_i_package_pypi_user_weekly.yml)
+
+Group: `group::package`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.user_packages.i_package_rubygems_user_monthly`
+
+Distinct user count of RubyGems packages published in recent 28 days
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210303154654_i_package_rubygems_user_monthly.yml)
+
+Group: `group::package`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.user_packages.i_package_rubygems_user_weekly`
+
+A weekly count of distinct RubyGems packages published by a user
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_7d/20210303154652_i_package_rubygems_user_weekly.yml)
+
+Group: `group::package`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.user_packages.i_package_tag_user_monthly`
+
+A monthly count of users that have published a package tag to the registry
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216184933_i_package_tag_user_monthly.yml)
+
+Group: `group::package`
+
+Data Category: `Optional`
+
+Status: `deprecated`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.user_packages.i_package_tag_user_weekly`
+
+A weekly count of users that have published a package with a tag to the registry
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_7d/20210216184931_i_package_tag_user_weekly.yml)
+
+Group: `group::package`
+
+Data Category: `Optional`
+
+Status: `deprecated`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.user_packages.i_package_terraform_module_user_monthly`
+
+Number of distinct users creating Terraform Module packages in recent 28 days
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210410012208_i_package_terraform_module_user_monthly.yml)
+
+Group: `group::configure`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.user_packages.i_package_terraform_module_user_weekly`
+
+Number of distinct users creating Terraform Module packages in recent 7 days
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_7d/20210410012209_i_package_terraform_module_user_weekly.yml)
+
+Group: `group::configure`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.user_packages.user_packages_total_unique_counts_monthly`
+
+A monthly count of users that have published a package to the registry
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216184937_user_packages_total_unique_counts_monthly.yml)
+
+Group: `group::package`
+
+Data Category: `Operational`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `redis_hll_counters.user_packages.user_packages_total_unique_counts_weekly`
+
+A weekly count of users that have published a package to the registry
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_7d/20210216184935_user_packages_total_unique_counts_weekly.yml)
+
+Group: `group::package`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `reply_by_email_enabled`
+
+Whether incoming email is setup
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/settings/20210204124916_reply_by_email_enabled.yml)
+
+Group: `group::certify`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `search_unique_visits.i_search_advanced`
+
+Calculated unique users to perform Advanced searches by week
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_all/20210216180418_i_search_advanced.yml)
+
+Group: `group::global search`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `premium`, `ultimate`
+
+### `search_unique_visits.i_search_paid`
+
+Calculated unique users to perform a search with a paid license enabled by week
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_all/20210216180420_i_search_paid.yml)
+
+Group: `group::global search`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `premium`, `ultimate`
+
+### `search_unique_visits.i_search_total`
+
+Calculated unique users to perform Basic or Advanced searches by week
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216180416_i_search_total.yml)
+
+Group: `group::global search`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `search_unique_visits.search_unique_visits_for_any_target_monthly`
+
+Total unique users for i_search_total, i_search_advanced, i_search_paid for recent 28 days. This metric is redundant because advanced will be a subset of paid and paid will be a subset of total. i_search_total is more appropriate if you just want the total
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216183922_search_unique_visits_for_any_target_monthly.yml)
+
+Group: `group::global search`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `search_unique_visits.search_unique_visits_for_any_target_weekly`
+
+Total unique users for i_search_total, i_search_advanced, i_search_paid for recent 7 days. This metric is redundant because advanced will be a subset of paid and paid will be a subset of total. i_search_total is more appropriate if you just want the total
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_7d/20210216183920_search_unique_visits_for_any_target_weekly.yml)
+
+Group: `group::global search`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `settings.gitaly_apdex`
+
+Gitaly application performance
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/settings/20210321224827_gitaly_apdex.yml)
+
+Group: `group::gitaly`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `settings.ldap_encrypted_secrets_enabled`
+
+Is encrypted LDAP secrets configured?
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/settings/20210216175606_ldap_encrypted_secrets_enabled.yml)
+
+Group: `group::distribution`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `settings.operating_system`
+
+Information about the operating system running GitLab
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/settings/20210225045628_operating_system.yml)
+
+Group: `group::distribution`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `signup_enabled`
+
+Whether public signup is enabled
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/settings/20210204124918_signup_enabled.yml)
+
+Group: `group::access`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `topology`
+
+Topology data
+
+[Object JSON schema](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/objects_schemas/topology_schema.json)
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/settings/20210323120839_topology.yml)
+
+Group: `group::memory`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `usage_activity_by_stage.configure.clusters_applications_cert_managers`
+
+Total GitLab Managed clusters with GitLab Managed App:Cert Manager installed
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216175329_clusters_applications_cert_managers.yml)
+
+Group: `group::configure`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `usage_activity_by_stage.configure.clusters_applications_helm`
+
+Total GitLab Managed clusters with GitLab Managed App:Helm enabled
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216175331_clusters_applications_helm.yml)
+
+Group: `group::configure`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `usage_activity_by_stage.configure.clusters_applications_ingress`
+
+Total GitLab Managed clusters with GitLab Managed App:Ingress installed
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216175333_clusters_applications_ingress.yml)
+
+Group: `group::configure`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `usage_activity_by_stage.configure.clusters_applications_knative`
+
+Total GitLab Managed clusters with GitLab Managed App:Knative installed
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216175335_clusters_applications_knative.yml)
+
+Group: `group::configure`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `usage_activity_by_stage.configure.clusters_disabled`
+
+Total GitLab Managed disabled clusters
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216175339_clusters_disabled.yml)
+
+Group: `group::configure`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `usage_activity_by_stage.configure.clusters_enabled`
+
+Total GitLab Managed clusters currently enabled
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216175341_clusters_enabled.yml)
+
+Group: `group::configure`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `usage_activity_by_stage.configure.clusters_management_project`
+
+Total GitLab Managed clusters with defined cluster management project
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216175337_clusters_management_project.yml)
+
+Group: `group::configure`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `usage_activity_by_stage.configure.clusters_platforms_eks`
+
+Total GitLab Managed clusters provisioned with GitLab on AWS EKS
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216175345_clusters_platforms_eks.yml)
+
+Group: `group::configure`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `usage_activity_by_stage.configure.clusters_platforms_gke`
+
+Total GitLab Managed clusters provisioned with GitLab on GCE GKE
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216175343_clusters_platforms_gke.yml)
+
+Group: `group::configure`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `usage_activity_by_stage.configure.clusters_platforms_user`
+
+Total GitLab Managed clusters that are user provisioned
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216175346_clusters_platforms_user.yml)
+
+Group: `group::configure`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `usage_activity_by_stage.configure.group_clusters_disabled`
+
+Total GitLab Managed disabled clusters attached to groups
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216175352_group_clusters_disabled.yml)
+
+Group: `group::configure`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `usage_activity_by_stage.configure.group_clusters_enabled`
+
+Total GitLab Managed enabled clusters attached to groups
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216175354_group_clusters_enabled.yml)
+
+Group: `group::configure`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `usage_activity_by_stage.configure.instance_clusters_disabled`
+
+Total GitLab Managed disabled clusters attached to the instance
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216175348_instance_clusters_disabled.yml)
+
+Group: `group::configure`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `usage_activity_by_stage.configure.instance_clusters_enabled`
+
+Total GitLab Managed enabled clusters attached to the instance
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216175350_instance_clusters_enabled.yml)
+
+Group: `group::configure`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `usage_activity_by_stage.configure.project_clusters_disabled`
+
+Total GitLab Managed disabled clusters attached to projects
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216175356_project_clusters_disabled.yml)
+
+Group: `group::configure`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `usage_activity_by_stage.configure.project_clusters_enabled`
+
+Total GitLab Managed enabled clusters attached to projects
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216175358_project_clusters_enabled.yml)
+
+Group: `group::configure`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `usage_activity_by_stage.configure.projects_slack_notifications_active`
+
+Unique projects with Slack webhook enabled
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_all/20210216175400_projects_slack_notifications_active.yml)
+
+Group: `group::configure`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers:
+
+### `usage_activity_by_stage.configure.projects_slack_slash_active`
+
+Unique projects with Slack ‘/’ commands enabled
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_all/20210216175402_projects_slack_slash_active.yml)
+
+Group: `group::configure`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers:
+
+### `usage_activity_by_stage.configure.projects_with_prometheus_alerts`
+
+Projects with Prometheus alerting enabled
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216175403_projects_with_prometheus_alerts.yml)
+
+Group: `group::configure`
+
+Data Category: `Optional`
+
+Status: `removed`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `usage_activity_by_stage.create.approval_project_rules`
+
+Total number of project approval rules
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_all/20210216182030_approval_project_rules.yml)
+
+Group: `group::source code`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `premium`, `ultimate`
+
+### `usage_activity_by_stage.create.approval_project_rules_with_exact_required_approvers`
+
+Number of approval rules with the exact number of required approvers.
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_all/20210216183355_approval_project_rules_with_exact_required_approvers.yml)
+
+Group: `group::source code`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `premium`, `ultimate`
+
+### `usage_activity_by_stage.create.approval_project_rules_with_less_approvers_than_required`
+
+Number of approval rules with fewer approvers than required.
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_all/20210216183354_approval_project_rules_with_less_approvers_than_required.yml)
+
+Group: `group::source code`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `premium`, `ultimate`
+
+### `usage_activity_by_stage.create.approval_project_rules_with_more_approvers_than_required`
+
+Number of approval rules with more approvers than required.
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_all/20210216183352_approval_project_rules_with_more_approvers_than_required.yml)
+
+Group: `group::source code`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `premium`, `ultimate`
+
+### `usage_activity_by_stage.create.approval_project_rules_with_target_branch`
+
+Number of project approval rules scoped to a specific repo branch.
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_all/20210216182032_approval_project_rules_with_target_branch.yml)
+
+Group: `group::source code`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `premium`, `ultimate`
+
+### `usage_activity_by_stage.create.deploy_keys`
+
+Count of users creating deploy keys.
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216182010_deploy_keys.yml)
+
+Group: `group::source code`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `usage_activity_by_stage.create.keys`
+
+Count of users creating regular keys.
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216182012_keys.yml)
+
+Group: `group::source code`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `usage_activity_by_stage.create.merge_requests`
+
+Count of the number of users creating merge requests
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216175045_merge_requests.yml)
+
+Group: `group::code review`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `usage_activity_by_stage.create.merge_requests_with_added_rules`
+
+Merge requests with added rules
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_all/20210216175047_merge_requests_with_added_rules.yml)
+
+Group: `group::code review`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `premium`, `ultimate`
+
+### `usage_activity_by_stage.create.merge_requests_with_optional_codeowners`
+
+Count of merge requests with optional codeowner approval rules
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_all/20210216175049_merge_requests_with_optional_codeowners.yml)
+
+Group: `group::source code`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `premium`, `ultimate`
+
+### `usage_activity_by_stage.create.merge_requests_with_overridden_project_rules`
+
+Number of merge requests that have overridden rules created at the project level.
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_all/20210216183339_merge_requests_with_overridden_project_rules.yml)
+
+Group: `group::source code`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `premium`, `ultimate`
+
+### `usage_activity_by_stage.create.merge_requests_with_required_codeowners`
+
+Count of merge requests with required codeowner approval rules
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_all/20210216175051_merge_requests_with_required_codeowners.yml)
+
+Group: `group::source code`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `premium`, `ultimate`
+
+### `usage_activity_by_stage.create.projects_enforcing_code_owner_approval`
+
+Count of users creating projects that require approval by code owners for code changes.
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_all/20210216182019_projects_enforcing_code_owner_approval.yml)
+
+Group: `group::source code`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `premium`, `ultimate`
+
+### `usage_activity_by_stage.create.projects_imported_from_github`
+
+Missing description
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216180630_projects_imported_from_github.yml)
+
+Group: `group::import`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`
+
+### `usage_activity_by_stage.create.projects_with_disable_overriding_approvers_per_merge_request`
+
+Total count of projects that do not allow overriding approvers on discrete merge requests
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216182014_projects_with_disable_overriding_approvers_per_merge_request.yml)
+
+Group: `group::source code`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `usage_activity_by_stage.create.projects_with_repositories_enabled`
+
+Count of projects that have a matching Git repository, result of a Git push action
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_all/20210216182023_projects_with_repositories_enabled.yml)
+
+Group: `group::source code`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `premium`, `ultimate`
+
+### `usage_activity_by_stage.create.projects_with_sectional_code_owner_rules`
+
+Count of projects using code owners with code owners section feature
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_all/20210216182021_projects_with_sectional_code_owner_rules.yml)
+
+Group: `group::source code`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `premium`, `ultimate`
+
+### `usage_activity_by_stage.create.projects_without_disable_overriding_approvers_per_merge_request`
+
+Count of total projects that do not disable overriding approvers per discrete merge request
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216182015_projects_without_disable_overriding_approvers_per_merge_request.yml)
+
+Group: `group::source code`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `usage_activity_by_stage.create.protected_branches`
+
+Count of users creating projects with repositories making use of at least one protected branch.
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_all/20210216182025_protected_branches.yml)
+
+Group: `group::source code`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `premium`, `ultimate`
+
+### `usage_activity_by_stage.create.remote_mirrors`
+
+Count of users creating projects with remote mirrors.
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216182017_remote_mirrors.yml)
+
+Group: `group::source code`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `usage_activity_by_stage.create.snippets`
+
+Count of distinct author_id from snippets
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216180316_snippets.yml)
+
+Group: `group::editor`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `usage_activity_by_stage.create.suggestions`
+
+Count of unique users who create suggestions in merge request comments
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216175053_suggestions.yml)
+
+Group: `group::code review`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `usage_activity_by_stage.create.total_number_of_locked_files`
+
+The total number of files which have been locked via the GitLab UI
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_all/20210216182028_total_number_of_locked_files.yml)
+
+Group: `group::source code`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `premium`, `ultimate`
+
+### `usage_activity_by_stage.create.total_number_of_path_locks`
+
+Number of paths/directories manually locked through the UI
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_all/20210216182027_total_number_of_path_locks.yml)
+
+Group: `group::source code`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `premium`, `ultimate`
+
+### `usage_activity_by_stage.create.users_using_lfs_locks`
+
+Number of unique users who have locked files or directories using LFS via the command line
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_all/20210216183346_users_using_lfs_locks.yml)
+
+Group: `group::source code`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `premium`, `ultimate`
+
+### `usage_activity_by_stage.create.users_using_path_locks`
+
+Number of users who have manually locked paths/directories through the UI
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_all/20210216183344_users_using_path_locks.yml)
+
+Group: `group::source code`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `premium`, `ultimate`
+
+### `usage_activity_by_stage.enablement.counts.geo_node_usage.git_fetch_event_count_weekly`
+
+Number of Git fetch events from Prometheus on the Geo secondary
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_7d/20210309194425_git_fetch_event_count_weekly.yml)
+
+Group: `group::geo`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `premium`, `ultimate`
+
+### `usage_activity_by_stage.enablement.counts.geo_node_usage.git_push_event_count_weekly`
+
+Number of Git push events from Prometheus on the Geo secondary
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_7d/20210604110603_git_push_event_count_weekly.yml)
+
+Group: `group::geo`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `premium`, `ultimate`
+
+### `usage_activity_by_stage.enablement.geo_secondary_web_oauth_users`
+
+Missing description
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210427212450_geo_secondary_web_oauth_users.yml)
+
+Group: ``
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `usage_activity_by_stage.manage.bulk_imports.gitlab`
+
+Distinct count of users that triggered an import using the Group Migration tool
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216180634_gitlab.yml)
+
+Group: `group::import`
+
+Data Category: `Optional`
+
+Status: `deprecated`
+
+Tiers: `free`
+
+### `usage_activity_by_stage.manage.bulk_imports.gitlab_v1`
+
+Count of imports using GitLab Migration
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216180636_gitlab_v1.yml)
+
+Group: `group::import`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`
+
+### `usage_activity_by_stage.manage.compliance_frameworks_with_pipeline`
+
+Count of compliance frameworks that have a pipeline configuration
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_all/20210622123800_compliance_frameworks_with_pipeline.yml)
+
+Group: `compliance`
+
+Data Category: `Optional`
+
+Status: `implemented`
+
+Tiers: `ultimate`
+
+### `usage_activity_by_stage.manage.custom_compliance_frameworks`
+
+Total count of all custom compliance framework labels
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_all/20210430081610_custom_compliance_frameworks.yml)
+
+Group: `compliance`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `premium`, `ultimate`
+
+### `usage_activity_by_stage.manage.events`
+
+Missing description
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216180754_events.yml)
+
+Group: `group::manage`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`
+
+### `usage_activity_by_stage.manage.group_imports.gitlab_migration`
+
+Count of groups imported using GitLab Migration
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216180703_gitlab_migration.yml)
+
+Group: `group::import`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`
+
+### `usage_activity_by_stage.manage.group_imports.group_import`
+
+Count of group imports using Group Import/Export
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216180702_group_import.yml)
+
+Group: `group::import`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`
+
+### `usage_activity_by_stage.manage.group_saml_enabled`
+
+Has the instance enabled Group SAML SSO `https://docs.gitlab.com/ee/user/group/saml_sso/` on at least 1 group?
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/settings/20210216180813_group_saml_enabled.yml)
+
+Group: `group::manage`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `premium`
+
+### `usage_activity_by_stage.manage.groups`
+
+Number of users who are group members.
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216180756_groups.yml)
+
+Group: `group::access`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `usage_activity_by_stage.manage.groups_imported`
+
+Distinct count of users that imported groups using Group Import
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216180729_groups_imported.yml)
+
+Group: `group::import`
+
+Data Category: `Optional`
+
+Status: `deprecated`
+
+Tiers: `free`
+
+### `usage_activity_by_stage.manage.issue_imports.csv`
+
+Count of (attempted) imports from csv files
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216180700_csv.yml)
+
+Group: `group::import`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`
+
+### `usage_activity_by_stage.manage.issue_imports.fogbugz`
+
+Count of projects imported from fogbugz
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216180656_fogbugz.yml)
+
+Group: `group::import`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`
+
+### `usage_activity_by_stage.manage.issue_imports.jira`
+
+Count of projects imported from Jira
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216180654_jira.yml)
+
+Group: `group::import`
+
+Data Category: `Operational`
+
+Status: `data_available`
+
+Tiers: `free`
+
+### `usage_activity_by_stage.manage.issue_imports.phabricator`
+
+Count of projects imported from phabricator
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216180658_phabricator.yml)
+
+Group: `group::import`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`
+
+### `usage_activity_by_stage.manage.issues_imported.csv`
+
+Distinct count of users that imported issues into projects using CSV upload
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216180727_csv.yml)
+
+Group: `group::import`
+
+Data Category: `Optional`
+
+Status: `deprecated`
+
+Tiers: `free`
+
+### `usage_activity_by_stage.manage.issues_imported.fogbugz`
+
+Distinct count of users that imported issues into projects using FogBugz
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216180724_fogbugz.yml)
+
+Group: `group::import`
+
+Data Category: `Optional`
+
+Status: `deprecated`
+
+Tiers: `free`
+
+### `usage_activity_by_stage.manage.issues_imported.jira`
+
+Distinct count of users that imported issues into projects using Jira
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216180722_jira.yml)
+
+Group: `group::import`
+
+Data Category: `Optional`
+
+Status: `deprecated`
+
+Tiers: `free`
+
+### `usage_activity_by_stage.manage.issues_imported.phabricator`
+
+Distinct count of users that imported issues into projects using Phabricator
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216180726_phabricator.yml)
+
+Group: `group::import`
+
+Data Category: `Optional`
+
+Status: `deprecated`
+
+Tiers: `free`
+
+### `usage_activity_by_stage.manage.ldap_admin_sync_enabled`
+
+Has the instance configured [LDAP Admin Sync](https://docs.gitlab.com/ee/administration/auth/ldap/#administrator-sync)
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/settings/20210216180811_ldap_admin_sync_enabled.yml)
+
+Group: `group::access`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `premium`, `ultimate`
+
+### `usage_activity_by_stage.manage.ldap_group_sync_enabled`
+
+Has the instance configured [LDAP Group Sync](https://docs.gitlab.com/ee/administration/auth/ldap/#group-sync)
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/settings/20210216180809_ldap_group_sync_enabled.yml)
+
+Group: `group::access`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `premium`, `ultimate`
+
+### `usage_activity_by_stage.manage.ldap_keys`
+
+Number of users creating keys synced as part of LDAP
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_all/20210216180800_ldap_keys.yml)
+
+Group: `group::access`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `premium`, `ultimate`
+
+### `usage_activity_by_stage.manage.ldap_servers`
+
+Number of [LDAP servers configured for the instance](https://docs.gitlab.com/ee/administration/auth/ldap/#multiple-ldap-servers)
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_all/20210216180807_ldap_servers.yml)
+
+Group: `group::access`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `premium`, `ultimate`
+
+### `usage_activity_by_stage.manage.ldap_users`
+
+Number of users that are linked to LDAP
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_all/20210216180801_ldap_users.yml)
+
+Group: `group::access`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `premium`, `ultimate`
+
+### `usage_activity_by_stage.manage.omniauth_providers`
+
+Number of unique user logins using an OmniAuth provider
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216183400_omniauth_providers.yml)
+
+Group: `group::access`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `usage_activity_by_stage.manage.project_imports.bitbucket`
+
+Count of projects imported from Bitbucket
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216180643_bitbucket.yml)
+
+Group: `group::import`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `usage_activity_by_stage.manage.project_imports.bitbucket_server`
+
+Count of projects imported from Bitbucket Server
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216180645_bitbucket_server.yml)
+
+Group: `group::import`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `usage_activity_by_stage.manage.project_imports.git`
+
+Count of projects imported by URL
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216180649_git.yml)
+
+Group: `group::import`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `usage_activity_by_stage.manage.project_imports.gitea`
+
+Count of projects imported from Gitea
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216180647_gitea.yml)
+
+Group: `group::import`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `usage_activity_by_stage.manage.project_imports.github`
+
+Count of projects imported from GitHub
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216180641_github.yml)
+
+Group: `group::import`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `usage_activity_by_stage.manage.project_imports.gitlab`
+
+Count of projects imported from GitLab.com
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216180639_gitlab.yml)
+
+Group: `group::import`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `usage_activity_by_stage.manage.project_imports.gitlab_migration`
+
+Count of projects imported using GitLab Migration
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216180652_gitlab_migration.yml)
+
+Group: `group::import`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `usage_activity_by_stage.manage.project_imports.gitlab_project`
+
+Count of projects imported using Project Import/Export
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216180638_gitlab_project.yml)
+
+Group: `group::import`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `usage_activity_by_stage.manage.project_imports.manifest`
+
+Count of projects imported using manifst file
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216180650_manifest.yml)
+
+Group: `group::import`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `usage_activity_by_stage.manage.project_imports.total`
+
+Count number of projects imported monthly
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210514141520_project_imports_total.yml)
+
+Group: `group::import`
+
+Data Category: `Optional`
+
+Status: `implemented`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `usage_activity_by_stage.manage.projects_imported.bitbucket`
+
+Distinct count of users that imported projects from Bitbucket Cloud
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216180713_bitbucket.yml)
+
+Group: `group::import`
+
+Data Category: `Optional`
+
+Status: `deprecated`
+
+Tiers: `free`
+
+### `usage_activity_by_stage.manage.projects_imported.bitbucket_server`
+
+Distinct count of users that imported projects from Bitbucket Server
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216180715_bitbucket_server.yml)
+
+Group: `group::import`
+
+Data Category: `Optional`
+
+Status: `deprecated`
+
+Tiers: `free`
+
+### `usage_activity_by_stage.manage.projects_imported.git`
+
+Distinct count of users that imported projects using Import by URL
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216180718_git.yml)
+
+Group: `group::import`
+
+Data Category: `Optional`
+
+Status: `deprecated`
+
+Tiers: `free`
+
+### `usage_activity_by_stage.manage.projects_imported.gitea`
+
+Distinct count of users that imported projects from Gitea
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216180716_gitea.yml)
+
+Group: `group::import`
+
+Data Category: `Optional`
+
+Status: `deprecated`
+
+Tiers: `free`
+
+### `usage_activity_by_stage.manage.projects_imported.github`
+
+Distinct count of users that imported projects from GitHub
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216180711_github.yml)
+
+Group: `group::import`
+
+Data Category: `Optional`
+
+Status: `deprecated`
+
+Tiers: `free`
+
+### `usage_activity_by_stage.manage.projects_imported.gitlab`
+
+Distinct count of users that imported projects from GitLab.com
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216180709_gitlab.yml)
+
+Group: `group::import`
+
+Data Category: `Optional`
+
+Status: `deprecated`
+
+Tiers: `free`
+
+### `usage_activity_by_stage.manage.projects_imported.gitlab_project`
+
+Distinct count of users that imported projects using Project Import/Export
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216180707_gitlab_project.yml)
+
+Group: `group::import`
+
+Data Category: `Optional`
+
+Status: `deprecated`
+
+Tiers: `free`
+
+### `usage_activity_by_stage.manage.projects_imported.manifest`
+
+Distinct count of users that imported projects using Manifest file
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216180720_manifest.yml)
+
+Group: `group::import`
+
+Data Category: `Optional`
+
+Status: `deprecated`
+
+Tiers: `free`
+
+### `usage_activity_by_stage.manage.projects_imported.total`
+
+Total count of all projects imported with import_source NOT NULL
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216180705_total.yml)
+
+Group: `group::import`
+
+Data Category: `Optional`
+
+Status: `deprecated`
+
+Tiers: `free`
+
+### `usage_activity_by_stage.manage.projects_with_compliance_framework`
+
+Number of projects labeled with a compliance framework label [see](https://gitlab.com/gitlab-org/gitlab/-/issues/118671)
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_all/20210216180805_projects_with_compliance_framework.yml)
+
+Group: `group::manage`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers:
+
+### `usage_activity_by_stage.manage.unique_users_all_imports`
+
+Distinct count of users that triggered any kind of import
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216180632_unique_users_all_imports.yml)
+
+Group: `group::import`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`
+
+### `usage_activity_by_stage.manage.user_auth_by_provider.google_oauth2`
+
+Number of unique user logins using Google OAuth authentication
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216183410_google_oauth2.yml)
+
+Group: `group::access`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `usage_activity_by_stage.manage.user_auth_by_provider.standard`
+
+Number of unique user logins using password authentication
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216183408_standard.yml)
+
+Group: `group::access`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `usage_activity_by_stage.manage.user_auth_by_provider.two-factor`
+
+Number of unique user logins using two factor authentication
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216183402_two-factor.yml)
+
+Group: `group::access`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `usage_activity_by_stage.manage.user_auth_by_provider.two-factor-via-u2f-device`
+
+Number of unique user logins using two factor via a U2F device
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216183404_two-factor-via-u2f-device.yml)
+
+Group: `group::access`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `usage_activity_by_stage.manage.user_auth_by_provider.two-factor-via-webauthn-device`
+
+Number of unique user logins using two factor via a WebAuthn device
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216183406_two-factor-via-webauthn-device.yml)
+
+Group: `group::access`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `usage_activity_by_stage.manage.users_created`
+
+Number of users
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216180758_users_created.yml)
+
+Group: `group::access`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `usage_activity_by_stage.manage.value_stream_management_customized_group_stages`
+
+Number of custom value stream analytics stages.
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_all/20210216180803_value_stream_management_customized_group_stages.yml)
+
+Group: `group::optimize`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `premium`, `ultimate`
+
+### `usage_activity_by_stage.monitor.clusters`
+
+Users creating clusters.
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216180945_clusters.yml)
+
+Group: `group::monitor`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `usage_activity_by_stage.monitor.clusters_applications_prometheus`
+
+Users creating clusters with Prometheus enabled.
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216180947_clusters_applications_prometheus.yml)
+
+Group: `group::monitor`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `usage_activity_by_stage.monitor.operations_dashboard_default_dashboard`
+
+Active users with enabled operations dashboard
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216180949_operations_dashboard_default_dashboard.yml)
+
+Group: `group::monitor`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`
+
+### `usage_activity_by_stage.monitor.operations_dashboard_users_with_projects_added`
+
+Active users with projects on operations dashboard
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216180953_operations_dashboard_users_with_projects_added.yml)
+
+Group: `group::monitor`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `usage_activity_by_stage.monitor.projects_incident_sla_enabled`
+
+Projects where Incident SLA is enabled
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_all/20210216180522_projects_incident_sla_enabled.yml)
+
+Group: `group::monitor`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `premium`, `ultimate`
+
+### `usage_activity_by_stage.monitor.projects_with_alert_incidents`
+
+Count of unique projects with an incident from an alert
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216180520_projects_with_alert_incidents.yml)
+
+Group: `group::monitor`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `usage_activity_by_stage.monitor.projects_with_enabled_alert_integrations_histogram`
+
+Histogram (buckets 1 to 100) of projects with at least 1 enabled integration.
+
+[Object JSON schema](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/objects_schemas/projects_with_enabled_alert_integrations_histogram.json)
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210309165717_projects_with_enabled_alert_integrations_histogram.yml)
+
+Group: `group::monitor`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `usage_activity_by_stage.monitor.projects_with_error_tracking_enabled`
+
+Projects where error tracking is enabled
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216180517_projects_with_error_tracking_enabled.yml)
+
+Group: `group::monitor`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `usage_activity_by_stage.monitor.projects_with_incidents`
+
+Count of unique projects with an incident
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216180518_projects_with_incidents.yml)
+
+Group: `group::monitor`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `usage_activity_by_stage.monitor.projects_with_tracing_enabled`
+
+Projects with tracing enabled
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216180951_projects_with_tracing_enabled.yml)
+
+Group: `group::monitor`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `usage_activity_by_stage.package.projects_with_packages`
+
+Projects with package registry enabled
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216181055_projects_with_packages.yml)
+
+Group: `group::package`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `usage_activity_by_stage.plan.assignee_lists`
+
+Count of users creating assignee lists on Boards
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_all/20210216181132_assignee_lists.yml)
+
+Group: `group::project management`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `premium`, `ultimate`
+
+### `usage_activity_by_stage.plan.epics`
+
+Missing description
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216181134_epics.yml)
+
+Group: `group::plan`
+
+Data Category: `Operational`
+
+Status: `data_available`
+
+Tiers: `free`
+
+### `usage_activity_by_stage.plan.issues`
+
+Count of users creating Issues
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216181115_issues.yml)
+
+Group: `group::project management`
+
+Data Category: `Operational`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `usage_activity_by_stage.plan.label_lists`
+
+Count of users creating label lists on Boards
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216181135_label_lists.yml)
+
+Group: `group::project management`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `usage_activity_by_stage.plan.milestone_lists`
+
+Count of users creating milestone lists on Boards
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_all/20210216181137_milestone_lists.yml)
+
+Group: `group::project management`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `premium`, `ultimate`
+
+### `usage_activity_by_stage.plan.notes`
+
+Count of users creating Notes on Issues
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216181117_notes.yml)
+
+Group: `group::project management`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `usage_activity_by_stage.plan.projects`
+
+Count of users creating projects
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216181119_projects.yml)
+
+Group: `group::project management`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `usage_activity_by_stage.plan.projects_jira_active`
+
+Missing description
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216181126_projects_jira_active.yml)
+
+Group: `group::plan`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`
+
+### `usage_activity_by_stage.plan.projects_jira_dvcs_cloud_active`
+
+Missing description
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216181128_projects_jira_dvcs_cloud_active.yml)
+
+Group: `group::plan`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`
+
+### `usage_activity_by_stage.plan.projects_jira_dvcs_server_active`
+
+Missing description
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216181130_projects_jira_dvcs_server_active.yml)
+
+Group: `group::plan`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`
+
+### `usage_activity_by_stage.plan.service_desk_enabled_projects`
+
+Missing description
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216181122_service_desk_enabled_projects.yml)
+
+Group: `group::plan`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`
+
+### `usage_activity_by_stage.plan.service_desk_issues`
+
+Missing description
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216181124_service_desk_issues.yml)
+
+Group: `group::plan`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`
+
+### `usage_activity_by_stage.plan.todos`
+
+Count of users todos created
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216181121_todos.yml)
+
+Group: `group::project management`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `usage_activity_by_stage.release.deployments`
+
+Unique users triggering deployments
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216181926_deployments.yml)
+
+Group: `group::release`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`
+
+### `usage_activity_by_stage.release.failed_deployments`
+
+Total failed deployments
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216181928_failed_deployments.yml)
+
+Group: `group::release`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`
+
+### `usage_activity_by_stage.release.projects_mirrored_with_pipelines_enabled`
+
+Count creator_id from projects with repository mirroring enabled.
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_all/20210216181934_projects_mirrored_with_pipelines_enabled.yml)
+
+Group: `group::pipeline execution`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `premium`, `ultimate`
+
+### `usage_activity_by_stage.release.releases`
+
+Unique users creating release tags
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216181930_releases.yml)
+
+Group: `group::release`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`
+
+### `usage_activity_by_stage.release.successful_deployments`
+
+Total successful deployments
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216181932_successful_deployments.yml)
+
+Group: `group::release`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`
+
+### `usage_activity_by_stage.secure.api_fuzzing_scans`
+
+Counts API fuzzing jobs
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_all/20210216180353_api_fuzzing_scans.yml)
+
+Group: `group::fuzz testing`
+
+Data Category: `Operational`
+
+Status: `data_available`
+
+Tiers:
+
+### `usage_activity_by_stage.secure.cluster_image_scanning_scans`
+
+Counts cluster image scanning jobs
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_all/20210618124854_cluster_image_scanning_scans.yml)
+
+Group: `group::container security`
+
+Data Category: `Optional`
+
+Status: `implemented`
+
+Tiers: `ultimate`
+
+### `usage_activity_by_stage.secure.container_scanning_scans`
+
+Counts container scanning jobs
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_all/20210216175503_container_scanning_scans.yml)
+
+Group: `group::container security`
+
+Data Category: `Operational`
+
+Status: `data_available`
+
+Tiers: `ultimate`
+
+### `usage_activity_by_stage.secure.coverage_fuzzing_scans`
+
+Counts fuzzing jobs
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_all/20210216180352_coverage_fuzzing_scans.yml)
+
+Group: `group::fuzz testing`
+
+Data Category: `Operational`
+
+Status: `data_available`
+
+Tiers:
+
+### `usage_activity_by_stage.secure.dast_scans`
+
+Counts dast jobs
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_all/20210216182122_dast_scans.yml)
+
+Group: `group::dynamic analysis`
+
+Data Category: `Operational`
+
+Status: `data_available`
+
+Tiers: `ultimate`
+
+### `usage_activity_by_stage.secure.dependency_scanning_scans`
+
+Total number of users running Dependency Scanning Scans
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_all/20210216175220_dependency_scanning_scans.yml)
+
+Group: `group::composition analysis`
+
+Data Category: `Operational`
+
+Status: `data_available`
+
+Tiers: `ultimate`
+
+### `usage_activity_by_stage.secure.sast_scans`
+
+Counts sast jobs
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_all/20210216182120_sast_scans.yml)
+
+Group: `group::static analysis`
+
+Data Category: `Operational`
+
+Status: `data_available`
+
+Tiers: `ultimate`
+
+### `usage_activity_by_stage.secure.secret_detection_scans`
+
+counts secret detection jobs
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_all/20210216182123_secret_detection_scans.yml)
+
+Group: `group::static analysis`
+
+Data Category: `Operational`
+
+Status: `data_available`
+
+Tiers: `ultimate`
+
+### `usage_activity_by_stage.secure.user_api_fuzzing_dnd_jobs`
+
+Count of API Fuzzing `docker-in-docker` jobs by job name
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216180350_user_api_fuzzing_dnd_jobs.yml)
+
+Group: `group::fuzz testing`
+
+Data Category: `Operational`
+
+Status: `data_available`
+
+Tiers: `free`
+
+### `usage_activity_by_stage.secure.user_api_fuzzing_jobs`
+
+Count of API Fuzzing jobs by job name
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216180348_user_api_fuzzing_jobs.yml)
+
+Group: `group::fuzz testing`
+
+Data Category: `Operational`
+
+Status: `data_available`
+
+Tiers: `free`
+
+### `usage_activity_by_stage.secure.user_api_fuzzing_scans`
+
+Number of users who have run a API Fuzzing scan
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_all/20210607044126_user_api_fuzzing_scans.yml)
+
+Group: `category::fuzz testing`
+
+Status: `data_available`
+
+Tiers: `ultimate`
+
+### `usage_activity_by_stage.secure.user_container_scanning_jobs`
+
+Distinct count per user of Container Scanning jobs run
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_all/20210216175501_user_container_scanning_jobs.yml)
+
+Group: `group::container security`
+
+Data Category: `Operational`
+
+Status: `data_available`
+
+Tiers: `ultimate`
+
+### `usage_activity_by_stage.secure.user_container_scanning_scans`
+
+Number of users who have run a Container Scanning scan
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_all/20210607043902_user_container_scanning_scans.yml)
+
+Group: `group::composition analysis`
+
+Status: `data_available`
+
+Tiers: `ultimate`
+
+### `usage_activity_by_stage.secure.user_coverage_fuzzing_jobs`
+
+Missing description
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216183514_user_coverage_fuzzing_jobs.yml)
+
+Group: ``
+
+Data Category: `Operational`
+
+Status: `data_available`
+
+Tiers: `free`
+
+### `usage_activity_by_stage.secure.user_coverage_fuzzing_scans`
+
+Number of users who have run a Coverage Fuzzing scan
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_all/20210607044040_user_coverage_fuzzing_scans.yml)
+
+Group: `category::fuzz testing`
+
+Status: `data_available`
+
+Tiers: `ultimate`
+
+### `usage_activity_by_stage.secure.user_dast_jobs`
+
+Count of DAST jobs
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216175614_user_dast_jobs.yml)
+
+Group: `group::dynamic analysis`
+
+Data Category: `Operational`
+
+Status: `data_available`
+
+Tiers: `free`
+
+### `usage_activity_by_stage.secure.user_dast_scans`
+
+Number of users who have run a DAST scan
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_all/20210607043109_user_dast_scans.yml)
+
+Group: `group::dynamic analysis`
+
+Status: `data_available`
+
+Tiers: `ultimate`
+
+### `usage_activity_by_stage.secure.user_dependency_scanning_jobs`
+
+Total number of users running Dependency Scanning jobs
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_all/20210216175216_user_dependency_scanning_jobs.yml)
+
+Group: `group::composition analysis`
+
+Data Category: `Operational`
+
+Status: `data_available`
+
+Tiers: `ultimate`
+
+### `usage_activity_by_stage.secure.user_dependency_scanning_scans`
+
+Number of users who have run a Dependency Scanning scan
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_all/20210607043819_user_dependency_scanning_scans.yml)
+
+Group: `group::composition analysis`
+
+Status: `data_available`
+
+Tiers: `ultimate`
+
+### `usage_activity_by_stage.secure.user_license_management_jobs`
+
+Total number of users running License Scanning jobs
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_all/20210216175218_user_license_management_jobs.yml)
+
+Group: `group::composition analysis`
+
+Data Category: `Operational`
+
+Status: `data_available`
+
+Tiers: `ultimate`
+
+### `usage_activity_by_stage.secure.user_preferences_group_overview_security_dashboard`
+
+Users who set personal preference to see Details on Group information page
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_all/20210216182207_user_preferences_group_overview_security_dashboard.yml)
+
+Group: `group::threat insights`
+
+Data Category: `Operational`
+
+Status: `data_available`
+
+Tiers: `ultimate`
+
+### `usage_activity_by_stage.secure.user_sast_jobs`
+
+Count of SAST jobs per user
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216182116_user_sast_jobs.yml)
+
+Group: `group::static analysis`
+
+Data Category: `Operational`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `usage_activity_by_stage.secure.user_sast_scans`
+
+Number of users who have run a SAST scan
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_all/20210607043741_user_sast_scans.yml)
+
+Group: `group::static analysis`
+
+Status: `data_available`
+
+Tiers: `ultimate`
+
+### `usage_activity_by_stage.secure.user_secret_detection_jobs`
+
+Count of Secret Detection Jobs per user
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216182118_user_secret_detection_jobs.yml)
+
+Group: `group::static analysis`
+
+Data Category: `Operational`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `usage_activity_by_stage.secure.user_secret_detection_scans`
+
+Number of users who have run a Secret Detection scan
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_all/20210607043957_user_secret_detection_scans.yml)
+
+Group: `group::static analysis`
+
+Status: `data_available`
+
+Tiers: `ultimate`
+
+### `usage_activity_by_stage.secure.user_unique_users_all_secure_scanners`
+
+Missing description
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216181954_user_unique_users_all_secure_scanners.yml)
+
+Group: `group::secure`
+
+Data Category: `Operational`
+
+Status: `data_available`
+
+Tiers: `free`
+
+### `usage_activity_by_stage.verify.ci_builds`
+
+Unique count of builds in project
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216175525_ci_builds.yml)
+
+Group: `group::pipeline execution`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `usage_activity_by_stage.verify.ci_external_pipelines`
+
+Total pipelines in external repositories
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216175527_ci_external_pipelines.yml)
+
+Group: `group::pipeline execution`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `usage_activity_by_stage.verify.ci_internal_pipelines`
+
+Total pipelines in GitLab repositories
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216175529_ci_internal_pipelines.yml)
+
+Group: `group::pipeline execution`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `usage_activity_by_stage.verify.ci_pipeline_config_auto_devops`
+
+Total pipelines from an Auto DevOps template
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216175531_ci_pipeline_config_auto_devops.yml)
+
+Group: `group::configure`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `usage_activity_by_stage.verify.ci_pipeline_config_repository`
+
+Total Pipelines from templates in repository
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216175533_ci_pipeline_config_repository.yml)
+
+Group: `group::pipeline execution`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `usage_activity_by_stage.verify.ci_pipeline_schedules`
+
+Pipeline schedules in GitLab
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216175535_ci_pipeline_schedules.yml)
+
+Group: `group::pipeline execution`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `usage_activity_by_stage.verify.ci_pipelines`
+
+Distinct Users triggering Total pipelines
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216175537_ci_pipelines.yml)
+
+Group: `group::pipeline execution`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `usage_activity_by_stage.verify.ci_triggers`
+
+Total configured Triggers in project
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216175539_ci_triggers.yml)
+
+Group: `group::pipeline execution`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `usage_activity_by_stage.verify.clusters_applications_runner`
+
+Count of users creating managed clusters with Runner enabled
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216181949_clusters_applications_runner.yml)
+
+Group: `group::configure`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `usage_activity_by_stage.verify.projects_reporting_ci_cd_back_to_github`
+
+Projects with a GitHub service pipeline enabled
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_all/20210216175540_projects_reporting_ci_cd_back_to_github.yml)
+
+Group: `group::pipeline execution`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `premium`, `ultimate`
+
+### `usage_activity_by_stage_monthly.configure.clusters_applications_cert_managers`
+
+Total GitLab Managed clusters with Cert Manager enabled
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216175405_clusters_applications_cert_managers.yml)
+
+Group: `group::configure`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `usage_activity_by_stage_monthly.configure.clusters_applications_helm`
+
+Total GitLab Managed clusters with Helm enabled
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216175407_clusters_applications_helm.yml)
+
+Group: `group::configure`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `usage_activity_by_stage_monthly.configure.clusters_applications_ingress`
+
+Total GitLab Managed clusters with Ingress enabled
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216175409_clusters_applications_ingress.yml)
+
+Group: `group::configure`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `usage_activity_by_stage_monthly.configure.clusters_applications_knative`
+
+Total GitLab Managed clusters with Knative enabled
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216175411_clusters_applications_knative.yml)
+
+Group: `group::configure`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `usage_activity_by_stage_monthly.configure.clusters_disabled`
+
+Total GitLab Managed disabled clusters
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216175415_clusters_disabled.yml)
+
+Group: `group::configure`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `usage_activity_by_stage_monthly.configure.clusters_enabled`
+
+Total GitLab Managed clusters currently enabled
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216175417_clusters_enabled.yml)
+
+Group: `group::configure`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `usage_activity_by_stage_monthly.configure.clusters_management_project`
+
+Number of Kubernetes clusters with clusters management project being set
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216175413_clusters_management_project.yml)
+
+Group: `group::configure`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `usage_activity_by_stage_monthly.configure.clusters_platforms_eks`
+
+Total GitLab Managed clusters provisioned with GitLab on AWS EKS
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216175420_clusters_platforms_eks.yml)
+
+Group: `group::configure`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `usage_activity_by_stage_monthly.configure.clusters_platforms_gke`
+
+Total GitLab Managed clusters provisioned with GitLab on GCE GKE
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216175419_clusters_platforms_gke.yml)
+
+Group: `group::configure`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `usage_activity_by_stage_monthly.configure.clusters_platforms_user`
+
+Total GitLab Managed clusters that are user provisioned
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216175422_clusters_platforms_user.yml)
+
+Group: `group::configure`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `usage_activity_by_stage_monthly.configure.group_clusters_disabled`
+
+Total GitLab Managed disabled clusters attached to groups
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216175428_group_clusters_disabled.yml)
+
+Group: `group::configure`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `usage_activity_by_stage_monthly.configure.group_clusters_enabled`
+
+Total GitLab Managed enabled clusters attached to groups
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216175430_group_clusters_enabled.yml)
+
+Group: `group::configure`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `usage_activity_by_stage_monthly.configure.instance_clusters_disabled`
+
+Total GitLab Managed disabled clusters attached to the instance
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216175424_instance_clusters_disabled.yml)
+
+Group: `group::configure`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `usage_activity_by_stage_monthly.configure.instance_clusters_enabled`
+
+Total GitLab Managed enabled clusters attached to the instance
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216175426_instance_clusters_enabled.yml)
+
+Group: `group::configure`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `usage_activity_by_stage_monthly.configure.project_clusters_disabled`
+
+Total GitLab Managed disabled clusters attached to projects
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216175432_project_clusters_disabled.yml)
+
+Group: `group::configure`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `usage_activity_by_stage_monthly.configure.project_clusters_enabled`
+
+Total GitLab Managed enabled clusters attached to projects
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216175434_project_clusters_enabled.yml)
+
+Group: `group::configure`
+
+Data Category: `Operational`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `usage_activity_by_stage_monthly.configure.projects_slack_notifications_active`
+
+Unique projects created in the past 28 days that have Slack notifications enabled
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_28d/20210216175436_projects_slack_notifications_active.yml)
+
+Group: `group::configure`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `usage_activity_by_stage_monthly.configure.projects_slack_slash_active`
+
+Unique projects created in the past 28 days that have Slack ‘/’ commands enabled
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_28d/20210216175437_projects_slack_slash_active.yml)
+
+Group: `group::configure`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `usage_activity_by_stage_monthly.configure.projects_with_prometheus_alerts`
+
+Projects with Prometheus alerting enabled
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216180955_projects_with_prometheus_alerts.yml)
+
+Group: `group::monitor`
+
+Data Category: `Optional`
+
+Status: `removed`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `usage_activity_by_stage_monthly.create.action_monthly_active_users_design_management`
+
+Monthly active users for design management
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216180745_action_monthly_active_users_design_management.yml)
+
+Group: `group::product planning`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `usage_activity_by_stage_monthly.create.action_monthly_active_users_git_write`
+
+Aggregated value for wiki, design, and project repo Git write actions
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216182041_action_monthly_active_users_git_write.yml)
+
+Group: `group::source code`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `usage_activity_by_stage_monthly.create.action_monthly_active_users_ide_edit`
+
+Number of unique users per month who edited a file from any web editor
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216180327_action_monthly_active_users_ide_edit.yml)
+
+Group: `group::editor`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `usage_activity_by_stage_monthly.create.action_monthly_active_users_project_repo`
+
+Count of monthly active users who have performed any Git operation (read/write/push)
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216182040_action_monthly_active_users_project_repo.yml)
+
+Group: `group::source code`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `usage_activity_by_stage_monthly.create.action_monthly_active_users_sfe_edit`
+
+Number of users using single file editor
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216180321_action_monthly_active_users_sfe_edit.yml)
+
+Group: `group::editor`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `usage_activity_by_stage_monthly.create.action_monthly_active_users_snippet_editor_edit`
+
+Number of users using the snippet editor
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216180323_action_monthly_active_users_snippet_editor_edit.yml)
+
+Group: `group::editor`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `usage_activity_by_stage_monthly.create.action_monthly_active_users_sse_edit`
+
+Number of users using the static site editor
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216180325_action_monthly_active_users_sse_edit.yml)
+
+Group: `group::editor`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `usage_activity_by_stage_monthly.create.action_monthly_active_users_web_ide_edit`
+
+Number of users editing using web IDE
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216180319_action_monthly_active_users_web_ide_edit.yml)
+
+Group: `group::editor`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `usage_activity_by_stage_monthly.create.action_monthly_active_users_wiki_repo`
+
+Unique monthly active users of the Wiki
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216180747_action_monthly_active_users_wiki_repo.yml)
+
+Group: `group::editor`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `usage_activity_by_stage_monthly.create.approval_project_rules`
+
+Total number of project approval rules
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_28d/20210216182056_approval_project_rules.yml)
+
+Group: `group::source code`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `premium`, `ultimate`
+
+### `usage_activity_by_stage_monthly.create.approval_project_rules_with_exact_required_approvers`
+
+Number of approval rules with the exact number of required approvers.
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_28d/20210216183622_approval_project_rules_with_exact_required_approvers.yml)
+
+Group: `group::source code`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `premium`, `ultimate`
+
+### `usage_activity_by_stage_monthly.create.approval_project_rules_with_less_approvers_than_required`
+
+Number of approval rules with fewer approvers than required.
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_28d/20210216183620_approval_project_rules_with_less_approvers_than_required.yml)
+
+Group: `group::source code`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `premium`, `ultimate`
+
+### `usage_activity_by_stage_monthly.create.approval_project_rules_with_more_approvers_than_required`
+
+Number of approval rules with more approvers than required.
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_28d/20210216183618_approval_project_rules_with_more_approvers_than_required.yml)
+
+Group: `group::source code`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `premium`, `ultimate`
+
+### `usage_activity_by_stage_monthly.create.approval_project_rules_with_target_branch`
+
+Number of project approval rules scoped to a specific repo branch.
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_28d/20210216182058_approval_project_rules_with_target_branch.yml)
+
+Group: `group::source code`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `premium`, `ultimate`
+
+### `usage_activity_by_stage_monthly.create.deploy_keys`
+
+Count of users creating deploy keys in last 28 days.
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216182034_deploy_keys.yml)
+
+Group: `group::source code`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `usage_activity_by_stage_monthly.create.keys`
+
+Count of users creating regular keys in last 28 days.
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216182036_keys.yml)
+
+Group: `group::source code`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `usage_activity_by_stage_monthly.create.merge_requests`
+
+Count of the number of users creating merge requests
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216175055_merge_requests.yml)
+
+Group: `group::code review`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `usage_activity_by_stage_monthly.create.merge_requests_users`
+
+Monthly count of the number of merge request users
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216175101_merge_requests_users.yml)
+
+Group: `group::code review`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `usage_activity_by_stage_monthly.create.merge_requests_with_added_rules`
+
+Merge requests with added rules
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_28d/20210216175103_merge_requests_with_added_rules.yml)
+
+Group: `group::code review`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `premium`, `ultimate`
+
+### `usage_activity_by_stage_monthly.create.merge_requests_with_optional_codeowners`
+
+Count of merge requests with optional codeowner approval rules
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_28d/20210216175105_merge_requests_with_optional_codeowners.yml)
+
+Group: `group::source code`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `premium`, `ultimate`
+
+### `usage_activity_by_stage_monthly.create.merge_requests_with_overridden_project_rules`
+
+Number of merge requests which have overriden rules created at the project level
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_28d/20210216182047_merge_requests_with_overridden_project_rules.yml)
+
+Group: `group::source code`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `premium`, `ultimate`
+
+### `usage_activity_by_stage_monthly.create.merge_requests_with_required_codeowners`
+
+Count of merge requests with required codeowner approval rules
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_28d/20210216175107_merge_requests_with_required_codeowners.yml)
+
+Group: `group::source code`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `premium`, `ultimate`
+
+### `usage_activity_by_stage_monthly.create.projects_enforcing_code_owner_approval`
+
+Count of total projects that require approval by code owners for code changes
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_28d/20210216182043_projects_enforcing_code_owner_approval.yml)
+
+Group: `group::source code`
+
+Data Category: `Operational`
+
+Status: `data_available`
+
+Tiers: `premium`, `ultimate`
+
+### `usage_activity_by_stage_monthly.create.projects_imported_from_github`
+
+Missing description
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216180731_projects_imported_from_github.yml)
+
+Group: `group::import`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`
+
+### `usage_activity_by_stage_monthly.create.projects_with_disable_overriding_approvers_per_merge_request`
+
+Count of the number of projects with setting to disable overriding approvers per merge request
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216175057_projects_with_disable_overriding_approvers_per_merge_request.yml)
+
+Group: `group::source code`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `usage_activity_by_stage_monthly.create.projects_with_repositories_enabled`
+
+Count of users creating projects that have a matching Git repository, result of a Git push action, for last 28 days.
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_28d/20210216182049_projects_with_repositories_enabled.yml)
+
+Group: `group::source code`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `premium`, `ultimate`
+
+### `usage_activity_by_stage_monthly.create.projects_with_sectional_code_owner_rules`
+
+Count of projects using code owners with code owners section feature
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_28d/20210216182045_projects_with_sectional_code_owner_rules.yml)
+
+Group: `group::source code`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `premium`, `ultimate`
+
+### `usage_activity_by_stage_monthly.create.projects_without_disable_overriding_approvers_per_merge_request`
+
+Count of the number of projects without setting to disable overriding approvers per merge request
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216175059_projects_without_disable_overriding_approvers_per_merge_request.yml)
+
+Group: `group::source code`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `usage_activity_by_stage_monthly.create.protected_branches`
+
+Count of users creating projects with repositories making use of at least one protected branch in last 28 days.
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216182051_protected_branches.yml)
+
+Group: `group::source code`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `usage_activity_by_stage_monthly.create.remote_mirrors`
+
+Count of users creating projects with remote mirrors. Includes both push and pull mirrors.
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216182038_remote_mirrors.yml)
+
+Group: `group::source code`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `usage_activity_by_stage_monthly.create.snippets`
+
+Count of distinct author_id from snippets for last 28 days
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216180317_snippets.yml)
+
+Group: `group::editor`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `usage_activity_by_stage_monthly.create.suggestions`
+
+Count of unique users per month who create suggestions in merge request comments
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216175109_suggestions.yml)
+
+Group: `group::code review`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `usage_activity_by_stage_monthly.create.total_number_of_locked_files`
+
+The total number of files which have been locked via the GitLab UI
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_28d/20210216183614_total_number_of_locked_files.yml)
+
+Group: `group::source code`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `premium`, `ultimate`
+
+### `usage_activity_by_stage_monthly.create.total_number_of_path_locks`
+
+Number of paths/directories manually locked through the UI
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_28d/20210216183613_total_number_of_path_locks.yml)
+
+Group: `group::source code`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `premium`, `ultimate`
+
+### `usage_activity_by_stage_monthly.create.users_using_lfs_locks`
+
+Number of unique users who have locked files or directories using LFS via the command line
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_28d/20210216182054_users_using_lfs_locks.yml)
+
+Group: `group::source code`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `premium`, `ultimate`
+
+### `usage_activity_by_stage_monthly.create.users_using_path_locks`
+
+Number of users creating path_locks in last 28 days.
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_28d/20210216182053_users_using_path_locks.yml)
+
+Group: `group::source code`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `premium`, `ultimate`
+
+### `usage_activity_by_stage_monthly.enablement.geo_secondary_web_oauth_users`
+
+Missing description
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210427213346_geo_secondary_web_oauth_users.yml)
+
+Group: ``
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `usage_activity_by_stage_monthly.manage.bulk_imports.gitlab`
+
+Missing description
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216183640_gitlab.yml)
+
+Group: ``
+
+Data Category: `Optional`
+
+Status: `deprecated`
+
+Tiers: `free`
+
+### `usage_activity_by_stage_monthly.manage.bulk_imports.gitlab_v1`
+
+Missing description
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216183642_gitlab_v1.yml)
+
+Group: ``
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`
+
+### `usage_activity_by_stage_monthly.manage.compliance_frameworks_with_pipeline`
+
+Count of compliance frameworks that have a pipeline configuration
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_28d/20210622091519_compliance_frameworks_with_pipeline.yml)
+
+Group: `compliance`
+
+Data Category: `Optional`
+
+Status: `implemented`
+
+Tiers: `ultimate`
+
+### `usage_activity_by_stage_monthly.manage.custom_compliance_frameworks`
+
+Monthly count of all custom compliance framework labels
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_28d/20210507165054_custom_compliance_frameworks.yml)
+
+Group: `compliance`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `premium`, `ultimate`
+
+### `usage_activity_by_stage_monthly.manage.events`
+
+Missing description
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216180814_events.yml)
+
+Group: `group::manage`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`
+
+### `usage_activity_by_stage_monthly.manage.group_imports.gitlab_migration`
+
+Missing description
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216183711_gitlab_migration.yml)
+
+Group: ``
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`
+
+### `usage_activity_by_stage_monthly.manage.group_imports.group_import`
+
+Number of group import states
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216183709_group_import.yml)
+
+Group: `group::import`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `usage_activity_by_stage_monthly.manage.group_saml_enabled`
+
+Whether group SAML is enabled
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/settings/20210216180833_group_saml_enabled.yml)
+
+Group: `group:access`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `premium`, `ultimate`
+
+### `usage_activity_by_stage_monthly.manage.groups`
+
+Number of users who are group members for last 28 days
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216180816_groups.yml)
+
+Group: `group::access`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `usage_activity_by_stage_monthly.manage.groups_imported`
+
+Missing description
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216183737_groups_imported.yml)
+
+Group: `group::import`
+
+Data Category: `Optional`
+
+Status: `deprecated`
+
+Tiers: `free`
+
+### `usage_activity_by_stage_monthly.manage.issue_imports.csv`
+
+Missing description
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216183707_csv.yml)
+
+Group: ``
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`
+
+### `usage_activity_by_stage_monthly.manage.issue_imports.fogbugz`
+
+Missing description
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216183703_fogbugz.yml)
+
+Group: ``
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`
+
+### `usage_activity_by_stage_monthly.manage.issue_imports.jira`
+
+Missing description
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216183701_jira.yml)
+
+Group: ``
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`
+
+### `usage_activity_by_stage_monthly.manage.issue_imports.phabricator`
+
+Missing description
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216183705_phabricator.yml)
+
+Group: ``
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`
+
+### `usage_activity_by_stage_monthly.manage.issues_imported.csv`
+
+Missing description
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216183735_csv.yml)
+
+Group: ``
+
+Data Category: `Optional`
+
+Status: `deprecated`
+
+Tiers: `free`
+
+### `usage_activity_by_stage_monthly.manage.issues_imported.fogbugz`
+
+Missing description
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216183731_fogbugz.yml)
+
+Group: ``
+
+Data Category: `Optional`
+
+Status: `deprecated`
+
+Tiers: `free`
+
+### `usage_activity_by_stage_monthly.manage.issues_imported.jira`
+
+Missing description
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216183730_jira.yml)
+
+Group: ``
+
+Data Category: `Optional`
+
+Status: `deprecated`
+
+Tiers: `free`
+
+### `usage_activity_by_stage_monthly.manage.issues_imported.phabricator`
+
+Missing description
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216183733_phabricator.yml)
+
+Group: ``
+
+Data Category: `Optional`
+
+Status: `deprecated`
+
+Tiers: `free`
+
+### `usage_activity_by_stage_monthly.manage.ldap_admin_sync_enabled`
+
+Whether LDAP admin sync is enabled
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/settings/20210216180831_ldap_admin_sync_enabled.yml)
+
+Group: `group::access`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `premium`, `ultimate`
+
+### `usage_activity_by_stage_monthly.manage.ldap_group_sync_enabled`
+
+Has the instance configured [LDAP Group Sync](https://docs.gitlab.com/ee/administration/auth/ldap/#group-sync)
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/settings/20210216180829_ldap_group_sync_enabled.yml)
+
+Group: `group::acess`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `premium`, `ultimate`
+
+### `usage_activity_by_stage_monthly.manage.ldap_keys`
+
+Number of users creating keys synced as part of LDAP for last 28 days.
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_28d/20210216180820_ldap_keys.yml)
+
+Group: `group::acess`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `premium`, `ultimate`
+
+### `usage_activity_by_stage_monthly.manage.ldap_servers`
+
+Number of LDAP servers configured
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_28d/20210216180827_ldap_servers.yml)
+
+Group: `group::manage`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `premium`, `ultimate`
+
+### `usage_activity_by_stage_monthly.manage.ldap_users`
+
+Number of users that are linked to LDAP
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_28d/20210216180822_ldap_users.yml)
+
+Group: `group::access`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `premium`, `ultimate`
+
+### `usage_activity_by_stage_monthly.manage.omniauth_providers`
+
+Number of unique user logins using an OmniAuth provider
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216183627_omniauth_providers.yml)
+
+Group: `group::access`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `usage_activity_by_stage_monthly.manage.project_imports.bitbucket`
+
+Count of projects imported from Bitbucket
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216183650_bitbucket.yml)
+
+Group: `group::import`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `usage_activity_by_stage_monthly.manage.project_imports.bitbucket_server`
+
+Count of projects imported from Bitbucket Server
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216183652_bitbucket_server.yml)
+
+Group: `group::import`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `usage_activity_by_stage_monthly.manage.project_imports.git`
+
+Count of projects imported from Git
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216183655_git.yml)
+
+Group: `group::import`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `usage_activity_by_stage_monthly.manage.project_imports.gitea`
+
+Count of projects imported from Gitea
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216183653_gitea.yml)
+
+Group: `group::import`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `usage_activity_by_stage_monthly.manage.project_imports.github`
+
+Count of projects imported from GitHub
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216183648_github.yml)
+
+Group: `group::import`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `usage_activity_by_stage_monthly.manage.project_imports.gitlab`
+
+Count of projects imported from GitLab using Project Export/Import
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216183646_gitlab.yml)
+
+Group: `group::import`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `usage_activity_by_stage_monthly.manage.project_imports.gitlab_migration`
+
+Missing description
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216183659_gitlab_migration.yml)
+
+Group: `group::import`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `usage_activity_by_stage_monthly.manage.project_imports.gitlab_project`
+
+Missing description
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216183644_gitlab_project.yml)
+
+Group: `group::import`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `usage_activity_by_stage_monthly.manage.project_imports.manifest`
+
+Missing description
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216183657_manifest.yml)
+
+Group: `group::import`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `usage_activity_by_stage_monthly.manage.project_imports.total`
+
+Total count of projects imported
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210520111133_total.yml)
+
+Group: `group::import`
+
+Data Category: `Optional`
+
+Status: `implemented`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `usage_activity_by_stage_monthly.manage.projects_imported.bitbucket`
+
+Count of projects imported from Bitbucket
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216183720_bitbucket.yml)
+
+Group: `group::import`
+
+Data Category: `Optional`
+
+Status: `deprecated`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `usage_activity_by_stage_monthly.manage.projects_imported.bitbucket_server`
+
+Count of projects imported from Bitbucket Server
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216183722_bitbucket_server.yml)
+
+Group: `group::import`
+
+Data Category: `Optional`
+
+Status: `deprecated`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `usage_activity_by_stage_monthly.manage.projects_imported.git`
+
+Missing description
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216183726_git.yml)
+
+Group: ``
+
+Data Category: `Optional`
+
+Status: `deprecated`
+
+Tiers: `free`
+
+### `usage_activity_by_stage_monthly.manage.projects_imported.gitea`
+
+Missing description
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216183724_gitea.yml)
+
+Group: ``
+
+Data Category: `Optional`
+
+Status: `deprecated`
+
+Tiers: `free`
+
+### `usage_activity_by_stage_monthly.manage.projects_imported.github`
+
+Missing description
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216183718_github.yml)
+
+Group: ``
+
+Data Category: `Optional`
+
+Status: `deprecated`
+
+Tiers: `free`
+
+### `usage_activity_by_stage_monthly.manage.projects_imported.gitlab`
+
+Missing description
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216183716_gitlab.yml)
+
+Group: ``
+
+Data Category: `Optional`
+
+Status: `deprecated`
+
+Tiers: `free`
+
+### `usage_activity_by_stage_monthly.manage.projects_imported.gitlab_project`
+
+Missing description
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216183714_gitlab_project.yml)
+
+Group: ``
+
+Data Category: `Optional`
+
+Status: `deprecated`
+
+Tiers: `free`
+
+### `usage_activity_by_stage_monthly.manage.projects_imported.manifest`
+
+Missing description
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216183728_manifest.yml)
+
+Group: ``
+
+Data Category: `Optional`
+
+Status: `deprecated`
+
+Tiers: `free`
+
+### `usage_activity_by_stage_monthly.manage.projects_imported.total`
+
+Missing description
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216183712_total.yml)
+
+Group: ``
+
+Data Category: `Optional`
+
+Status: `deprecated`
+
+Tiers: `free`
+
+### `usage_activity_by_stage_monthly.manage.projects_with_compliance_framework`
+
+Missing description
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_28d/20210216180825_projects_with_compliance_framework.yml)
+
+Group: `group::manage`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers:
+
+### `usage_activity_by_stage_monthly.manage.unique_users_all_imports`
+
+Number of users from projects imported
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216183638_unique_users_all_imports.yml)
+
+Group: `group::import`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `usage_activity_by_stage_monthly.manage.user_auth_by_provider.google_oauth2`
+
+Number of unique user logins using Google OAuth authentication
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216183636_google_oauth2.yml)
+
+Group: `group::access`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `usage_activity_by_stage_monthly.manage.user_auth_by_provider.standard`
+
+Number of unique user logins using password authentication
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216183634_standard.yml)
+
+Group: `group::access`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `usage_activity_by_stage_monthly.manage.user_auth_by_provider.two-factor`
+
+Number of unique user logins using two factor authentication
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216183629_two-factor.yml)
+
+Group: `group::access`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `usage_activity_by_stage_monthly.manage.user_auth_by_provider.two-factor-via-u2f-device`
+
+Number of unique user logins using two factor via a U2F device
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216183631_two-factor-via-u2f-device.yml)
+
+Group: `group::access`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `usage_activity_by_stage_monthly.manage.user_auth_by_provider.two-factor-via-webauthn-device`
+
+Number of unique user logins using two factor via a WebAuthn device
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216183633_two-factor-via-webauthn-device.yml)
+
+Group: `group::access`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `usage_activity_by_stage_monthly.manage.users_created`
+
+Number of users created in the month
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216180818_users_created.yml)
+
+Group: `group::access`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `usage_activity_by_stage_monthly.manage.value_stream_management_customized_group_stages`
+
+Missing description
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_28d/20210216180824_value_stream_management_customized_group_stages.yml)
+
+Group: `group::manage`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers:
+
+### `usage_activity_by_stage_monthly.monitor.clusters`
+
+Count users creating clusters in last 28 days.
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216180956_clusters.yml)
+
+Group: `group::monitor`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `usage_activity_by_stage_monthly.monitor.clusters_applications_prometheus`
+
+Users creating clusters with Prometheus enabled in last 28 days.
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216180958_clusters_applications_prometheus.yml)
+
+Group: `group::monitor`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `usage_activity_by_stage_monthly.monitor.operations_dashboard_default_dashboard`
+
+Active users with enabled operations dashboard
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216181000_operations_dashboard_default_dashboard.yml)
+
+Group: `group::monitor`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `usage_activity_by_stage_monthly.monitor.operations_dashboard_users_with_projects_added`
+
+Active users with projects on operations dashboard
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216181006_operations_dashboard_users_with_projects_added.yml)
+
+Group: `group::monitor`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `usage_activity_by_stage_monthly.monitor.projects_incident_sla_enabled`
+
+Count of projects with Incident SLA enabled
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_all/20210216183753_projects_incident_sla_enabled.yml)
+
+Group: `group::monitor`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `premium`, `ultimate`
+
+### `usage_activity_by_stage_monthly.monitor.projects_with_alert_incidents`
+
+Count of unique projects with an incident from an alert created in the last month
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216180526_projects_with_alert_incidents.yml)
+
+Group: `group::monitor`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `usage_activity_by_stage_monthly.monitor.projects_with_error_tracking_enabled`
+
+Count of users creating projects with error tracking enabled.
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216181004_projects_with_error_tracking_enabled.yml)
+
+Group: `group::monitor`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `usage_activity_by_stage_monthly.monitor.projects_with_incidents`
+
+Count of unique projects with an incident created in the last month
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216180524_projects_with_incidents.yml)
+
+Group: `group::monitor`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `usage_activity_by_stage_monthly.monitor.projects_with_tracing_enabled`
+
+Projects with tracing enabled
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216181002_projects_with_tracing_enabled.yml)
+
+Group: `group::monitor`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `usage_activity_by_stage_monthly.package.projects_with_packages`
+
+The total number of projects in a given month with at least one package
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216181057_projects_with_packages.yml)
+
+Group: `group::package`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `usage_activity_by_stage_monthly.plan.assignee_lists`
+
+Count of MAU creating assignee lists on Boards
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_28d/20210216181156_assignee_lists.yml)
+
+Group: `group::project management`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `premium`, `ultimate`
+
+### `usage_activity_by_stage_monthly.plan.epics`
+
+Missing description
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216181158_epics.yml)
+
+Group: `group::plan`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`
+
+### `usage_activity_by_stage_monthly.plan.issues`
+
+Count of users creating Issues in last 28 days.
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216181139_issues.yml)
+
+Group: `group::project management`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `usage_activity_by_stage_monthly.plan.label_lists`
+
+Count of MAU creating label lists on Boards
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216181200_label_lists.yml)
+
+Group: `group::project management`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `usage_activity_by_stage_monthly.plan.milestone_lists`
+
+Count of MAU created milestone lists on Boards
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_28d/20210216181201_milestone_lists.yml)
+
+Group: `group::project management`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `premium`, `ultimate`
+
+### `usage_activity_by_stage_monthly.plan.notes`
+
+Count of MAU commenting on an issuable
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216181141_notes.yml)
+
+Group: `group::project management`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `usage_activity_by_stage_monthly.plan.projects`
+
+Count of MAU creating projects
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216181143_projects.yml)
+
+Group: `group::project management`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `usage_activity_by_stage_monthly.plan.projects_jira_active`
+
+Missing description
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216181150_projects_jira_active.yml)
+
+Group: `group::plan`
+
+Data Category: `Operational`
+
+Status: `data_available`
+
+Tiers: `free`
+
+### `usage_activity_by_stage_monthly.plan.projects_jira_dvcs_cloud_active`
+
+Missing description
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216181152_projects_jira_dvcs_cloud_active.yml)
+
+Group: `group::plan`
+
+Data Category: `Operational`
+
+Status: `data_available`
+
+Tiers: `free`
+
+### `usage_activity_by_stage_monthly.plan.projects_jira_dvcs_server_active`
+
+Missing description
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216181154_projects_jira_dvcs_server_active.yml)
+
+Group: `group::plan`
+
+Data Category: `Operational`
+
+Status: `data_available`
+
+Tiers: `free`
+
+### `usage_activity_by_stage_monthly.plan.service_desk_enabled_projects`
+
+Missing description
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216181147_service_desk_enabled_projects.yml)
+
+Group: `group::plan`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`
+
+### `usage_activity_by_stage_monthly.plan.service_desk_issues`
+
+Missing description
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216181148_service_desk_issues.yml)
+
+Group: `group::plan`
+
+Data Category: `Operational`
+
+Status: `data_available`
+
+Tiers: `free`
+
+### `usage_activity_by_stage_monthly.plan.todos`
+
+Count of MAU creating todos
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216181145_todos.yml)
+
+Group: `group::project management`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `usage_activity_by_stage_monthly.release.deployments`
+
+Unique users triggering deployments
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216181935_deployments.yml)
+
+Group: `group::release`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`
+
+### `usage_activity_by_stage_monthly.release.failed_deployments`
+
+Total failed deployments
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216181937_failed_deployments.yml)
+
+Group: `group::release`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`
+
+### `usage_activity_by_stage_monthly.release.projects_mirrored_with_pipelines_enabled`
+
+Count creator_id from projects with repository mirroring enabled.
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_28d/20210216181943_projects_mirrored_with_pipelines_enabled.yml)
+
+Group: `group::pipeline execution`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `premium`, `ultimate`
+
+### `usage_activity_by_stage_monthly.release.releases`
+
+Unique users creating release tags
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216181939_releases.yml)
+
+Group: `group::release`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`
+
+### `usage_activity_by_stage_monthly.release.successful_deployments`
+
+Total successful deployments
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216181941_successful_deployments.yml)
+
+Group: `group::release`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`
+
+### `usage_activity_by_stage_monthly.secure.api_fuzzing_pipeline`
+
+Counts of Pipelines that have at least 1 API Fuzzing Testing job
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_28d/20210216180401_api_fuzzing_pipeline.yml)
+
+Group: `group::fuzz testing`
+
+Data Category: `Operational`
+
+Status: `data_available`
+
+Tiers: `ultimate`
+
+### `usage_activity_by_stage_monthly.secure.api_fuzzing_scans`
+
+Missing description
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216183838_api_fuzzing_scans.yml)
+
+Group: ``
+
+Data Category: `Operational`
+
+Status: `data_available`
+
+Tiers: `free`
+
+### `usage_activity_by_stage_monthly.secure.cluster_image_scanning_pipeline`
+
+Pipelines containing a Cluster Image Scanning job
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_28d/20210618125224_cluster_image_scanning_pipeline.yml)
+
+Group: `group::container security`
+
+Data Category: `Optional`
+
+Status: `implemented`
+
+Tiers: `ultimate`
+
+### `usage_activity_by_stage_monthly.secure.cluster_image_scanning_scans`
+
+Counts cluster image scanning jobs
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_28d/20210618101233_cluster_image_scanning_scans.yml)
+
+Group: `group::container security`
+
+Data Category: `Optional`
+
+Status: `implemented`
+
+Tiers: `ultimate`
+
+### `usage_activity_by_stage_monthly.secure.container_scanning_pipeline`
+
+Pipelines containing a Container Scanning job
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_28d/20210216175507_container_scanning_pipeline.yml)
+
+Group: `group::container security`
+
+Data Category: `Operational`
+
+Status: `data_available`
+
+Tiers: `ultimate`
+
+### `usage_activity_by_stage_monthly.secure.container_scanning_scans`
+
+Missing description
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216183830_container_scanning_scans.yml)
+
+Group: ``
+
+Data Category: `Operational`
+
+Status: `data_available`
+
+Tiers: `free`
+
+### `usage_activity_by_stage_monthly.secure.coverage_fuzzing_pipeline`
+
+Counts of Pipelines that have at least 1 coverage-guided Fuzz Testing job
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_28d/20210216180359_coverage_fuzzing_pipeline.yml)
+
+Group: `group::fuzz testing`
+
+Data Category: `Operational`
+
+Status: `data_available`
+
+Tiers: `ultimate`
+
+### `usage_activity_by_stage_monthly.secure.coverage_fuzzing_scans`
+
+Missing description
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216183836_coverage_fuzzing_scans.yml)
+
+Group: ``
+
+Data Category: `Operational`
+
+Status: `data_available`
+
+Tiers: `free`
+
+### `usage_activity_by_stage_monthly.secure.dast_pipeline`
+
+Count of pipelines that have at least 1 DAST job
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216175618_dast_pipeline.yml)
+
+Group: `group::dynamic analysis`
+
+Data Category: `Operational`
+
+Status: `data_available`
+
+Tiers: `ultimate`
+
+### `usage_activity_by_stage_monthly.secure.dast_scans`
+
+Missing description
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216183832_dast_scans.yml)
+
+Group: ``
+
+Data Category: `Operational`
+
+Status: `data_available`
+
+Tiers: `free`
+
+### `usage_activity_by_stage_monthly.secure.dependency_scanning_pipeline`
+
+Count of pipelines with successful Dependency Scanning jobs
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_28d/20210216175226_dependency_scanning_pipeline.yml)
+
+Group: `group::composition analysis`
+
+Data Category: `Operational`
+
+Status: `data_available`
+
+Tiers: `ultimate`
+
+### `usage_activity_by_stage_monthly.secure.dependency_scanning_scans`
+
+Monthly number of users running Dependency Scanning Scans
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_28d/20210216183828_dependency_scanning_scans.yml)
+
+Group: `group::composition analysis`
+
+Data Category: `Operational`
+
+Status: `data_available`
+
+Tiers: `ultimate`
+
+### `usage_activity_by_stage_monthly.secure.sast_pipeline`
+
+Counts of Pipelines that have at least 1 SAST job
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216182129_sast_pipeline.yml)
+
+Group: `group::static analysis`
+
+Data Category: `Operational`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `usage_activity_by_stage_monthly.secure.sast_scans`
+
+Missing description
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216183826_sast_scans.yml)
+
+Group: ``
+
+Data Category: `Operational`
+
+Status: `data_available`
+
+Tiers: `free`
+
+### `usage_activity_by_stage_monthly.secure.secret_detection_pipeline`
+
+Counts of Pipelines that have at least 1 Secret Detection job
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216182131_secret_detection_pipeline.yml)
+
+Group: `group::static analysis`
+
+Data Category: `Operational`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `usage_activity_by_stage_monthly.secure.secret_detection_scans`
+
+Missing description
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216183834_secret_detection_scans.yml)
+
+Group: ``
+
+Data Category: `Operational`
+
+Status: `data_available`
+
+Tiers: `free`
+
+### `usage_activity_by_stage_monthly.secure.user_api_fuzzing_dnd_jobs`
+
+Count of API Fuzzing `docker-in-docker` jobs by job names
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216180357_user_api_fuzzing_dnd_jobs.yml)
+
+Group: `group::fuzz testing`
+
+Data Category: `Operational`
+
+Status: `data_available`
+
+Tiers: `free`
+
+### `usage_activity_by_stage_monthly.secure.user_api_fuzzing_jobs`
+
+Count of API Fuzzing jobs by job name
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216180355_user_api_fuzzing_jobs.yml)
+
+Group: `group::fuzz testing`
+
+Data Category: `Operational`
+
+Status: `data_available`
+
+Tiers: `free`
+
+### `usage_activity_by_stage_monthly.secure.user_api_fuzzing_scans`
+
+Number of users who have run a API Fuzzing scan
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_28d/20210607043622_user_api_fuzzing_scans.yml)
+
+Group: `category::fuzz testing`
+
+Data Category: `Operational`
+
+Status: `data_available`
+
+Tiers: `ultimate`
+
+### `usage_activity_by_stage_monthly.secure.user_container_scanning_jobs`
+
+Distinct count per user of Container Scanning jobs run monthly
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_28d/20210216175505_user_container_scanning_jobs.yml)
+
+Group: `group::container security`
+
+Data Category: `Operational`
+
+Status: `data_available`
+
+Tiers: `ultimate`
+
+### `usage_activity_by_stage_monthly.secure.user_container_scanning_scans`
+
+Number of users who have run a Container Scanning scan
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_28d/20210607043336_user_container_scanning_scans.yml)
+
+Group: `group::composition analysis`
+
+Data Category: `Operational`
+
+Status: `data_available`
+
+Tiers: `ultimate`
+
+### `usage_activity_by_stage_monthly.secure.user_coverage_fuzzing_jobs`
+
+Missing description
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216183817_user_coverage_fuzzing_jobs.yml)
+
+Group: ``
+
+Data Category: `Operational`
+
+Status: `data_available`
+
+Tiers: `free`
+
+### `usage_activity_by_stage_monthly.secure.user_coverage_fuzzing_scans`
+
+Number of users who have run a Coverage Fuzzing scan
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_28d/20210607043509_user_coverage_fuzzing_scans.yml)
+
+Group: `category::fuzz testing`
+
+Data Category: `Operational`
+
+Status: `data_available`
+
+Tiers: `ultimate`
+
+### `usage_activity_by_stage_monthly.secure.user_dast_jobs`
+
+Users who run a DAST job
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216175616_user_dast_jobs.yml)
+
+Group: `group::dynamic analysis`
+
+Data Category: `Operational`
+
+Status: `data_available`
+
+Tiers: `free`
+
+### `usage_activity_by_stage_monthly.secure.user_dast_scans`
+
+Number of users who have run a DAST scan
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_28d/20210607041718_user_dast_scans.yml)
+
+Group: `group::dynamic analysis`
+
+Data Category: `Operational`
+
+Status: `data_available`
+
+Tiers: `ultimate`
+
+### `usage_activity_by_stage_monthly.secure.user_dependency_scanning_jobs`
+
+Monthly number of users creating Dependency Scanning jobs
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_28d/20210216175222_user_dependency_scanning_jobs.yml)
+
+Group: `group::composition analysis`
+
+Data Category: `Operational`
+
+Status: `data_available`
+
+Tiers: `ultimate`
+
+### `usage_activity_by_stage_monthly.secure.user_dependency_scanning_scans`
+
+Number of users who have run a Dependency Scanning scan
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_28d/20210607043301_user_dependency_scanning_scans.yml)
+
+Group: `group::composition analysis`
+
+Data Category: `Operational`
+
+Status: `data_available`
+
+Tiers: `ultimate`
+
+### `usage_activity_by_stage_monthly.secure.user_license_management_jobs`
+
+Monthly number of users running License Scanning jobs
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_28d/20210216175224_user_license_management_jobs.yml)
+
+Group: `group::composition analysis`
+
+Data Category: `Operational`
+
+Status: `data_available`
+
+Tiers: `ultimate`
+
+### `usage_activity_by_stage_monthly.secure.user_preferences_group_overview_security_dashboard`
+
+Users who set personal preference to see Security Dashboard on Group information page
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_28d/20210216182209_user_preferences_group_overview_security_dashboard.yml)
+
+Group: `group::threat insights`
+
+Data Category: `Operational`
+
+Status: `data_available`
+
+Tiers: `ultimate`
+
+### `usage_activity_by_stage_monthly.secure.user_sast_jobs`
+
+Users who run a SAST job
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216182125_user_sast_jobs.yml)
+
+Group: `group::static analysis`
+
+Data Category: `Operational`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `usage_activity_by_stage_monthly.secure.user_sast_scans`
+
+Number of users who have run a SAST scan
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_28d/20210607043218_user_sast_scans.yml)
+
+Group: `group::static analysis`
+
+Data Category: `Operational`
+
+Status: `data_available`
+
+Tiers: `ultimate`
+
+### `usage_activity_by_stage_monthly.secure.user_secret_detection_jobs`
+
+Users who run a Secret Detection job
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216182127_user_secret_detection_jobs.yml)
+
+Group: `group::static analysis`
+
+Data Category: `Operational`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `usage_activity_by_stage_monthly.secure.user_secret_detection_scans`
+
+Number of users who have run a Secret Detection scan
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_28d/20210607043410_user_secret_detection_scans.yml)
+
+Group: `group::static analysis`
+
+Data Category: `Operational`
+
+Status: `data_available`
+
+Tiers: `ultimate`
+
+### `usage_activity_by_stage_monthly.secure.user_unique_users_all_secure_scanners`
+
+Missing description
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216181956_user_unique_users_all_secure_scanners.yml)
+
+Group: `group::secure`
+
+Data Category: `Operational`
+
+Status: `data_available`
+
+Tiers: `free`
+
+### `usage_activity_by_stage_monthly.verify.ci_builds`
+
+Unique monthly builds in project
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216175542_ci_builds.yml)
+
+Group: `group::pipeline execution`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `usage_activity_by_stage_monthly.verify.ci_external_pipelines`
+
+Total pipelines in external repositories in a month
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216175544_ci_external_pipelines.yml)
+
+Group: `group::pipeline execution`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `usage_activity_by_stage_monthly.verify.ci_internal_pipelines`
+
+Total pipelines in GitLab repositories in a month
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216175546_ci_internal_pipelines.yml)
+
+Group: `group::pipeline execution`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `usage_activity_by_stage_monthly.verify.ci_pipeline_config_auto_devops`
+
+Total pipelines from an Auto DevOps template
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216175548_ci_pipeline_config_auto_devops.yml)
+
+Group: `group::configure`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `usage_activity_by_stage_monthly.verify.ci_pipeline_config_repository`
+
+Total Monthly Pipelines from templates in repository
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216175550_ci_pipeline_config_repository.yml)
+
+Group: `group::pipeline execution`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `usage_activity_by_stage_monthly.verify.ci_pipeline_schedules`
+
+Total monthly Pipeline schedules in GitLab
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216175552_ci_pipeline_schedules.yml)
+
+Group: `group::pipeline execution`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `usage_activity_by_stage_monthly.verify.ci_pipelines`
+
+Distinct users triggering pipelines in a month
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216175554_ci_pipelines.yml)
+
+Group: `group::pipeline execution`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`, `free`
+
+### `usage_activity_by_stage_monthly.verify.ci_triggers`
+
+Total configured Triggers in project
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216175556_ci_triggers.yml)
+
+Group: `group::pipeline execution`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `usage_activity_by_stage_monthly.verify.clusters_applications_runner`
+
+Total GitLab Managed clusters with Runner enabled
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216181951_clusters_applications_runner.yml)
+
+Group: `group::runner`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `usage_activity_by_stage_monthly.verify.projects_reporting_ci_cd_back_to_github`
+
+Projects with a GitHub repository mirror pipeline enabled
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_28d/20210216175558_projects_reporting_ci_cd_back_to_github.yml)
+
+Group: `group::pipeline execution`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `premium`, `ultimate`
+
+### `uuid`
+
+GitLab instance unique identifier
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/license/20210201124933_uuid.yml)
+
+Group: `group::product intelligence`
+
+Data Category: `Standard`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `version`
+
+Version of GitLab instance
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/license/20210216175601_version.yml)
+
+Group: `group::distribution`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `web_ide_clientside_preview_enabled`
+
+Whether Web IDE clientside preview is enabled
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/settings/20210204124920_web_ide_clientside_preview_enabled.yml)
+
+Group: `group::editor`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `free`, `premium`, `ultimate`
diff --git a/doc/development/service_ping/index.md b/doc/development/service_ping/index.md
new file mode 100644
index 00000000000..41a2022473a
--- /dev/null
+++ b/doc/development/service_ping/index.md
@@ -0,0 +1,1707 @@
+---
+stage: Growth
+group: Product Intelligence
+info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://about.gitlab.com/handbook/engineering/ux/technical-writing/#assignments
+---
+
+# Service Ping Guide **(FREE SELF)**
+
+> Introduced in GitLab Ultimate 11.2, more statistics.
+
+This guide describes Service Ping's purpose and how it's implemented.
+
+For more information about Product Intelligence, see:
+
+- [Product Intelligence Guide](https://about.gitlab.com/handbook/product/product-intelligence-guide/)
+- [Snowplow Guide](../snowplow/index.md)
+
+More links:
+
+- [Product Intelligence Direction](https://about.gitlab.com/direction/product-intelligence/)
+- [Data Analysis Process](https://about.gitlab.com/handbook/business-technology/data-team/#data-analysis-process/)
+- [Data for Product Managers](https://about.gitlab.com/handbook/business-technology/data-team/programs/data-for-product-managers/)
+- [Data Infrastructure](https://about.gitlab.com/handbook/business-technology/data-team/platform/infrastructure/)
+
+## What is Service Ping?
+
+Service Ping is a process in GitLab that collects and sends a weekly payload to GitLab Inc.
+The payload provides important high-level data that helps our product, support,
+and sales teams understand how GitLab is used. For example, the data helps to:
+
+- Compare counts month over month (or week over week) to get a rough sense for how an instance uses
+ different product features.
+- Collect other facts that help us classify and understand GitLab installations.
+- Calculate our Stage Monthly Active Users (SMAU), which helps to measure the success of our stages
+ and features.
+
+Service Ping information is not anonymous. It's linked to the instance's hostname. However, it does
+not contain project names, usernames, or any other specific data.
+
+Sending a Service Ping payload is optional and can be [disabled](#disable-service-ping) on any self-managed instance.
+When Service Ping is enabled, GitLab gathers data from the other instances
+and can show your instance's usage statistics to your users.
+
+### Terminology
+
+We use the following terminology to describe the Service Ping components:
+
+- **Service Ping**: the process that collects and generates a JSON payload.
+- **Service Data**: the contents of the Service Ping JSON payload. This includes metrics.
+- **Metrics**: primarily made up of row counts for different tables in an instance's database. Each
+ metric has a corresponding [metric definition](metrics_dictionary.md#metrics-definition-and-validation)
+ in a YAML file.
+
+### Why should we enable Service Ping?
+
+- The main purpose of Service Ping is to build a better GitLab. Data about how GitLab is used is collected to better understand feature/stage adoption and usage, which helps us understand how GitLab is adding value and helps our team better understand the reasons why people use GitLab and with this knowledge we're able to make better product decisions.
+- As a benefit of having Service Ping active, GitLab lets you analyze the users' activities over time of your GitLab installation.
+- As a benefit of having Service Ping active, GitLab provides you with The DevOps Report,which gives you an overview of your entire instance's adoption of Concurrent DevOps from planning to monitoring.
+- You get better, more proactive support. (assuming that our TAMs and support organization used the data to deliver more value)
+- You get insight and advice into how to get the most value out of your investment in GitLab. Wouldn't you want to know that a number of features or values are not being adopted in your organization?
+- You get a report that illustrates how you compare against other similar organizations (anonymized), with specific advice and recommendations on how to improve your DevOps processes.
+- Service Ping is enabled by default. To disable it, see [Disable Service Ping](#disable-service-ping).
+- When Service Ping is enabled, you have the option to participate in our [Registration Features Program](#registration-features-program) and receive free paid features.
+
+#### Registration Features Program
+
+> Introduced in GitLab 14.1.
+
+Starting with GitLab version 14.1, free self-managed users running [GitLab EE](../ee_features.md) can receive paid features by registering with GitLab and sending us activity data via [Service Ping](#what-is-service-ping).
+
+The paid feature available in this offering is [Email from GitLab](../../tools/email.md).
+Administrators can use this [Premium](https://about.gitlab.com/pricing/premium/) feature to streamline
+their workflow by emailing all or some instance users directly from the Admin Area.
+
+NOTE:
+Registration is not yet required for participation, but will be added in a future milestone.
+
+### Limitations
+
+- Service Ping does not track frontend events things like page views, link clicks, or user sessions, and only focuses on aggregated backend events.
+- Because of these limitations we recommend instrumenting your products with Snowplow for more detailed analytics on GitLab.com and use Service Ping to track aggregated backend events on self-managed.
+
+## View the Service Ping payload **(FREE SELF)**
+
+You can view the exact JSON payload sent to GitLab Inc. in the administration panel. To view the payload:
+
+1. Sign in as a user with [Administrator](../../user/permissions.md) permissions.
+1. On the top bar, select **Menu >** **{admin}** **Admin**.
+1. On the left sidebar, select **Settings > Metrics and profiling**.
+1. Expand the **Usage statistics** section.
+1. Select **Preview payload**.
+
+For an example payload, see [Example Service Ping payload](#example-service-ping-payload).
+
+## Disable Service Ping **(FREE SELF)**
+
+NOTE:
+The method to disable Service Ping in the GitLab configuration file does not work in
+GitLab versions 9.3 to 13.12.3. See the [troubleshooting section](#cannot-disable-service-ping-using-the-configuration-file)
+on how to disable it.
+
+You can disable Service Ping either using the GitLab UI, or editing the GitLab
+configuration file.
+
+### Disable Service Ping using the UI
+
+To disable Service Ping in the GitLab UI:
+
+1. Sign in as a user with [Administrator](../../user/permissions.md) permissions.
+1. On the top bar, select **Menu >** **{admin}** **Admin**.
+1. On the left sidebar, select **Settings > Metrics and profiling**.
+1. Expand the **Usage statistics** section.
+1. Clear the **Enable service ping** checkbox.
+1. Select **Save changes**.
+
+### Disable Service Ping using the configuration file
+
+To disable Service Ping and prevent it from being configured in the future through
+the admin area:
+
+**For installations using the Linux package:**
+
+1. Edit `/etc/gitlab/gitlab.rb`:
+
+ ```ruby
+ gitlab_rails['usage_ping_enabled'] = false
+ ```
+
+1. Reconfigure GitLab:
+
+ ```shell
+ sudo gitlab-ctl reconfigure
+ ```
+
+**For installations from source:**
+
+1. Edit `/home/git/gitlab/config/gitlab.yml`:
+
+ ```yaml
+ production: &base
+ # ...
+ gitlab:
+ # ...
+ usage_ping_enabled: false
+ ```
+
+1. Restart GitLab:
+
+ ```shell
+ sudo service gitlab restart
+ ```
+
+## Service Ping request flow
+
+The following example shows a basic request/response flow between a GitLab instance, the Versions Application, the License Application, Salesforce, the GitLab S3 Bucket, the GitLab Snowflake Data Warehouse, and Sisense:
+
+```mermaid
+sequenceDiagram
+ participant GitLab Instance
+ participant Versions Application
+ participant Licenses Application
+ participant Salesforce
+ participant S3 Bucket
+ participant Snowflake DW
+ participant Sisense Dashboards
+ GitLab Instance->>Versions Application: Send Service Ping
+ loop Process usage data
+ Versions Application->>Versions Application: Parse usage data
+ Versions Application->>Versions Application: Write to database
+ Versions Application->>Versions Application: Update license ping time
+ end
+ loop Process data for Salesforce
+ Versions Application-xLicenses Application: Request Zuora subscription id
+ Licenses Application-xVersions Application: Zuora subscription id
+ Versions Application-xSalesforce: Request Zuora account id by Zuora subscription id
+ Salesforce-xVersions Application: Zuora account id
+ Versions Application-xSalesforce: Usage data for the Zuora account
+ end
+ Versions Application->>S3 Bucket: Export Versions database
+ S3 Bucket->>Snowflake DW: Import data
+ Snowflake DW->>Snowflake DW: Transform data using dbt
+ Snowflake DW->>Sisense Dashboards: Data available for querying
+ Versions Application->>GitLab Instance: DevOps Report (Conversational Development Index)
+```
+
+## How Service Ping works
+
+1. The Service Ping [cron job](https://gitlab.com/gitlab-org/gitlab/-/blob/master/app/workers/gitlab_usage_ping_worker.rb#L30) is set in Sidekiq to run weekly.
+1. When the cron job runs, it calls [`Gitlab::UsageData.to_json`](https://gitlab.com/gitlab-org/gitlab/-/blob/master/app/services/submit_usage_ping_service.rb#L22).
+1. `Gitlab::UsageData.to_json` [cascades down](https://gitlab.com/gitlab-org/gitlab/-/blob/master/lib/gitlab/usage_data.rb#L22) to ~400+ other counter method calls.
+1. The response of all methods calls are [merged together](https://gitlab.com/gitlab-org/gitlab/-/blob/master/lib/gitlab/usage_data.rb#L14) into a single JSON payload in `Gitlab::UsageData.to_json`.
+1. The JSON payload is then [posted to the Versions application]( https://gitlab.com/gitlab-org/gitlab/-/blob/master/app/services/submit_usage_ping_service.rb#L20)
+ If a firewall exception is needed, the required URL depends on several things. If
+ the hostname is `version.gitlab.com`, the protocol is `TCP`, and the port number is `443`,
+ the required URL is <https://version.gitlab.com/>.
+
+## Service Ping Metric Life cycle
+
+### 1. New metrics addition
+
+Please follow the [Implementing Service Ping](#implementing-service-ping) guide.
+
+### 2. Existing metric change
+
+Because we do not control when customers update their self-managed instances of GitLab,
+we **STRONGLY DISCOURAGE** changes to the logic used to calculate any metric.
+Any such changes lead to inconsistent reports from multiple GitLab instances.
+If there is a problem with an existing metric, it's best to deprecate the existing metric,
+and use it, side by side, with the desired new metric.
+
+Example:
+Consider following change. Before GitLab 12.6, the `example_metric` was implemented as:
+
+```ruby
+{
+ ...
+ example_metric: distinct_count(Project, :creator_id)
+}
+```
+
+For GitLab 12.6, the metric was changed to filter out archived projects:
+
+```ruby
+{
+ ...
+ example_metric: distinct_count(Project.non_archived, :creator_id)
+}
+```
+
+In this scenario all instances running up to GitLab 12.5 continue to report `example_metric`,
+including all archived projects, while all instances running GitLab 12.6 and higher filters
+out such projects. As Service Ping data is collected from all reporting instances, the
+resulting dataset includes mixed data, which distorts any following business analysis.
+
+The correct approach is to add a new metric for GitLab 12.6 release with updated logic:
+
+```ruby
+{
+ ...
+ example_metric_without_archived: distinct_count(Project.non_archived, :creator_id)
+}
+```
+
+and update existing business analysis artefacts to use `example_metric_without_archived` instead of `example_metric`
+
+### 3. Deprecate a metric
+
+If a metric is obsolete and you no longer use it, you can mark it as deprecated.
+
+For an example of the metric deprecation process take a look at this [example merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/59899)
+
+To deprecate a metric:
+
+1. Check the following YAML files and verify the metric is not used in an aggregate:
+ - [`config/metrics/aggregates/*.yaml`](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/aggregates/)
+ - [`ee/config/metrics/aggregates/*.yaml`](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/aggregates/)
+
+1. Create an issue in the [GitLab Data Team
+ project](https://gitlab.com/gitlab-data/analytics/-/issues). Ask for
+ confirmation that the metric is not used by other teams, or in any of the SiSense
+ dashboards.
+
+1. Verify the metric is not used to calculate the conversational index. The
+ conversational index is a measure that reports back to self-managed instances
+ to inform administrators of the progress of DevOps adoption for the instance.
+
+ You can check
+ [`CalculateConvIndexService`](https://gitlab.com/gitlab-services/version-gitlab-com/-/blob/master/app/services/calculate_conv_index_service.rb)
+ to view the metrics that are used. The metrics are represented
+ as the keys that are passed as a field argument into the `get_value` method.
+
+1. Document the deprecation in the metric's YAML definition. Set
+ the `status:` attribute to `deprecated`, for example:
+
+ ```yaml
+ ---
+ key_path: analytics_unique_visits.analytics_unique_visits_for_any_target_monthly
+ description: Visits to any of the pages listed above per month
+ product_section: dev
+ product_stage: manage
+ product_group: group::analytics
+ product_category:
+ value_type: number
+ status: deprecated
+ time_frame: 28d
+ data_source:
+ distribution:
+ - ce
+ tier:
+ - free
+ ```
+
+1. Replace the metric's instrumentation with a fixed value. This avoids wasting
+ resources to calculate the deprecated metric. In
+ [`lib/gitlab/usage_data.rb`](https://gitlab.com/gitlab-org/gitlab/-/blob/master/lib/gitlab/usage_data.rb)
+ or
+ [`ee/lib/ee/gitlab/usage_data.rb`](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/lib/ee/gitlab/usage_data.rb),
+ replace the code that calculates the metric's value with a fixed value that
+ indicates it's deprecated:
+
+ ```ruby
+ module Gitlab
+ class UsageData
+ DEPRECATED_VALUE = -1000
+
+ def analytics_unique_visits_data
+ results['analytics_unique_visits_for_any_target'] = redis_usage_data { unique_visit_service.unique_visits_for(targets: :analytics) }
+ results['analytics_unique_visits_for_any_target_monthly'] = DEPRECATED_VALUE
+
+ { analytics_unique_visits: results }
+ end
+ # ...
+ end
+ end
+ ```
+
+1. Update the Metrics Dictionary following [guidelines instructions](dictionary.md).
+
+### 4. Remove a metric
+
+Only deprecated metrics can be removed from Service Ping.
+
+For an example of the metric removal process take a look at this [example issue](https://gitlab.com/gitlab-org/gitlab/-/issues/297029)
+
+To remove a deprecated metric:
+
+1. Verify that removing the metric from the Service Ping payload does not cause
+ errors in [Version App](https://gitlab.com/gitlab-services/version-gitlab-com)
+ when the updated payload is collected and processed. Version App collects
+ and persists all Service Ping reports. To do that you can modify
+ [fixtures](https://gitlab.com/gitlab-services/version-gitlab-com/-/blob/master/spec/support/usage_data_helpers.rb#L540)
+ used to test
+ [`UsageDataController#create`](https://gitlab.com/gitlab-services/version-gitlab-com/-/blob/3760ef28/spec/controllers/usage_data_controller_spec.rb#L75)
+ endpoint, and assure that test suite does not fail when metric that you wish to remove is not included into test payload.
+
+1. Create an issue in the
+ [GitLab Data Team project](https://gitlab.com/gitlab-data/analytics/-/issues).
+ Ask for confirmation that the metric is not referred to in any SiSense dashboards and
+ can be safely removed from Service Ping. Use this
+ [example issue](https://gitlab.com/gitlab-data/analytics/-/issues/7539) for guidance.
+ This step can be skipped if verification done during [deprecation process](#3-deprecate-a-metric)
+ reported that metric is not required by any data transformation in Snowflake data warehouse nor it is
+ used by any of SiSense dashboards.
+
+1. After you verify the metric can be safely removed,
+ update the attributes of the metric's YAML definition:
+
+ - Set the `status:` to `removed`.
+ - Set `milestone_removed:` to the number of the
+ milestone in which the metric was removed.
+
+ Do not remove the metric's YAML definition altogether. Some self-managed
+ instances might not immediately update to the latest version of GitLab, and
+ therefore continue to report the removed metric. The Product Intelligence team
+ requires a record of all removed metrics in order to identify and filter them.
+
+ For example please take a look at this [merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/60149/diffs#b01f429a54843feb22265100c0e4fec1b7da1240_10_10).
+
+1. After you verify the metric can be safely removed,
+ remove the metric's instrumentation from
+ [`lib/gitlab/usage_data.rb`](https://gitlab.com/gitlab-org/gitlab/-/blob/master/lib/gitlab/usage_data.rb)
+ or
+ [`ee/lib/ee/gitlab/usage_data.rb`](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/lib/ee/gitlab/usage_data.rb).
+
+ For example please take a look at this [merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/60149/diffs#6335dc533bd21df26db9de90a02dd66278c2390d_167_167).
+
+1. Remove any other records related to the metric:
+ - The feature flag YAML file at [`config/feature_flags/*/*.yaml`](https://gitlab.com/gitlab-org/gitlab/-/tree/master/config/feature_flags).
+ - The entry in the known events YAML file at [`lib/gitlab/usage_data_counters/known_events/*.yaml`](https://gitlab.com/gitlab-org/gitlab/-/tree/master/lib/gitlab/usage_data_counters/known_events).
+
+1. Update the Metrics Dictionary following [guidelines instructions](dictionary.md).
+
+## Implementing Service Ping
+
+Service Ping consists of two kinds of data, counters and observations. Counters track how often a certain event
+happened over time, such as how many CI pipelines have run. They are monotonic and always trend up.
+Observations are facts collected from one or more GitLab instances and can carry arbitrary data. There are no
+general guidelines around how to collect those, due to the individual nature of that data.
+
+There are several types of counters which are all found in `usage_data.rb`:
+
+- **Ordinary Batch Counters:** Simple count of a given ActiveRecord_Relation
+- **Distinct Batch Counters:** Distinct count of a given ActiveRecord_Relation in a given column
+- **Sum Batch Counters:** Sum the values of a given ActiveRecord_Relation in a given column
+- **Alternative Counters:** Used for settings and configurations
+- **Redis Counters:** Used for in-memory counts.
+
+NOTE:
+Only use the provided counter methods. Each counter method contains a built in fail safe to isolate each counter to avoid breaking the entire Service Ping.
+
+### Why batch counting
+
+For large tables, PostgreSQL can take a long time to count rows due to MVCC [(Multi-version Concurrency Control)](https://en.wikipedia.org/wiki/Multiversion_concurrency_control). Batch counting is a counting method where a single large query is broken into multiple smaller queries. For example, instead of a single query querying 1,000,000 records, with batch counting, you can execute 100 queries of 10,000 records each. Batch counting is useful for avoiding database timeouts as each batch query is significantly shorter than one single long running query.
+
+For GitLab.com, there are extremely large tables with 15 second query timeouts, so we use batch counting to avoid encountering timeouts. Here are the sizes of some GitLab.com tables:
+
+| Table | Row counts in millions |
+|------------------------------|------------------------|
+| `merge_request_diff_commits` | 2280 |
+| `ci_build_trace_sections` | 1764 |
+| `merge_request_diff_files` | 1082 |
+| `events` | 514 |
+
+The following operation methods are available for your use:
+
+- [Ordinary Batch Counters](#ordinary-batch-counters)
+- [Distinct Batch Counters](#distinct-batch-counters)
+- [Sum Batch Operation](#sum-batch-operation)
+- [Add Operation](#add-operation)
+- [Estimated Batch Counters](#estimated-batch-counters)
+
+Batch counting requires indexes on columns to calculate max, min, and range queries. In some cases,
+you may need to add a specialized index on the columns involved in a counter.
+
+### Ordinary Batch Counters
+
+Handles `ActiveRecord::StatementInvalid` error
+
+Simple count of a given `ActiveRecord_Relation`, does a non-distinct batch count, smartly reduces `batch_size`, and handles errors.
+
+Method: `count(relation, column = nil, batch: true, start: nil, finish: nil)`
+
+Arguments:
+
+- `relation` the ActiveRecord_Relation to perform the count
+- `column` the column to perform the count on, by default is the primary key
+- `batch`: default `true` to use batch counting
+- `start`: custom start of the batch counting to avoid complex min calculations
+- `end`: custom end of the batch counting to avoid complex min calculations
+
+Examples:
+
+```ruby
+count(User.active)
+count(::Clusters::Cluster.aws_installed.enabled, :cluster_id)
+count(::Clusters::Cluster.aws_installed.enabled, :cluster_id, start: ::Clusters::Cluster.minimum(:id), finish: ::Clusters::Cluster.maximum(:id))
+```
+
+### Distinct Batch Counters
+
+Handles `ActiveRecord::StatementInvalid` error
+
+Distinct count of a given `ActiveRecord_Relation` on given column, a distinct batch count, smartly reduces `batch_size`, and handles errors.
+
+Method: `distinct_count(relation, column = nil, batch: true, batch_size: nil, start: nil, finish: nil)`
+
+Arguments:
+
+- `relation` the ActiveRecord_Relation to perform the count
+- `column` the column to perform the distinct count, by default is the primary key
+- `batch`: default `true` to use batch counting
+- `batch_size`: if none set it uses default value 10000 from `Gitlab::Database::BatchCounter`
+- `start`: custom start of the batch counting to avoid complex min calculations
+- `end`: custom end of the batch counting to avoid complex min calculations
+
+WARNING:
+Counting over non-unique columns can lead to performance issues. Take a look at the [iterating tables in batches](../iterating_tables_in_batches.md) guide for more details.
+
+Examples:
+
+```ruby
+distinct_count(::Project, :creator_id)
+distinct_count(::Note.with_suggestions.where(time_period), :author_id, start: ::User.minimum(:id), finish: ::User.maximum(:id))
+distinct_count(::Clusters::Applications::CertManager.where(time_period).available.joins(:cluster), 'clusters.user_id')
+```
+
+### Sum Batch Operation
+
+Handles `ActiveRecord::StatementInvalid` error
+
+Sum the values of a given ActiveRecord_Relation on given column and handles errors.
+
+Method: `sum(relation, column, batch_size: nil, start: nil, finish: nil)`
+
+Arguments:
+
+- `relation` the ActiveRecord_Relation to perform the operation
+- `column` the column to sum on
+- `batch_size`: if none set it uses default value 1000 from `Gitlab::Database::BatchCounter`
+- `start`: custom start of the batch counting to avoid complex min calculations
+- `end`: custom end of the batch counting to avoid complex min calculations
+
+Examples:
+
+```ruby
+sum(JiraImportState.finished, :imported_issues_count)
+```
+
+### Grouping & Batch Operations
+
+The `count`, `distinct_count`, and `sum` batch counters can accept an `ActiveRecord::Relation`
+object, which groups by a specified column. With a grouped relation, the methods do batch counting,
+handle errors, and returns a hash table of key-value pairs.
+
+Examples:
+
+```ruby
+count(Namespace.group(:type))
+# returns => {nil=>179, "Group"=>54}
+
+distinct_count(Project.group(:visibility_level), :creator_id)
+# returns => {0=>1, 10=>1, 20=>11}
+
+sum(Issue.group(:state_id), :weight))
+# returns => {1=>3542, 2=>6820}
+```
+
+### Add Operation
+
+Handles `StandardError`.
+
+Returns `-1` if any of the arguments are `-1`.
+
+Sum the values given as parameters.
+
+Method: `add(*args)`
+
+Examples
+
+```ruby
+project_imports = distinct_count(::Project.where.not(import_type: nil), :creator_id)
+bulk_imports = distinct_count(::BulkImport, :user_id)
+
+ add(project_imports, bulk_imports)
+```
+
+### Estimated Batch Counters
+
+> - [Introduced](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/48233) in GitLab 13.7.
+
+Estimated batch counter functionality handles `ActiveRecord::StatementInvalid` errors
+when used through the provided `estimate_batch_distinct_count` method.
+Errors return a value of `-1`.
+
+WARNING:
+This functionality estimates a distinct count of a specific ActiveRecord_Relation in a given column,
+which uses the [HyperLogLog](http://algo.inria.fr/flajolet/Publications/FlFuGaMe07.pdf) algorithm.
+As the HyperLogLog algorithm is probabilistic, the **results always include error**.
+The highest encountered error rate is 4.9%.
+
+When correctly used, the `estimate_batch_distinct_count` method enables efficient counting over
+columns that contain non-unique values, which can not be assured by other counters.
+
+#### estimate_batch_distinct_count method
+
+Method: `estimate_batch_distinct_count(relation, column = nil, batch_size: nil, start: nil, finish: nil)`
+
+The [method](https://gitlab.com/gitlab-org/gitlab/-/blob/master/lib/gitlab/utils/usage_data.rb#L63)
+includes the following arguments:
+
+- `relation`: The ActiveRecord_Relation to perform the count.
+- `column`: The column to perform the distinct count. The default is the primary key.
+- `batch_size`: From `Gitlab::Database::PostgresHll::BatchDistinctCounter::DEFAULT_BATCH_SIZE`. Default value: 10,000.
+- `start`: The custom start of the batch count, to avoid complex minimum calculations.
+- `finish`: The custom end of the batch count to avoid complex maximum calculations.
+
+The method includes the following prerequisites:
+
+1. The supplied `relation` must include the primary key defined as the numeric column.
+ For example: `id bigint NOT NULL`.
+1. The `estimate_batch_distinct_count` can handle a joined relation. To use its ability to
+ count non-unique columns, the joined relation **must NOT** have a one-to-many relationship,
+ such as `has_many :boards`.
+1. Both `start` and `finish` arguments should always represent primary key relationship values,
+ even if the estimated count refers to another column, for example:
+
+ ```ruby
+ estimate_batch_distinct_count(::Note, :author_id, start: ::Note.minimum(:id), finish: ::Note.maximum(:id))
+ ```
+
+Examples:
+
+1. Simple execution of estimated batch counter, with only relation provided,
+ returned value represents estimated number of unique values in `id` column
+ (which is the primary key) of `Project` relation:
+
+ ```ruby
+ estimate_batch_distinct_count(::Project)
+ ```
+
+1. Execution of estimated batch counter, where provided relation has applied
+ additional filter (`.where(time_period)`), number of unique values estimated
+ in custom column (`:author_id`), and parameters: `start` and `finish` together
+ apply boundaries that defines range of provided relation to analyze:
+
+ ```ruby
+ estimate_batch_distinct_count(::Note.with_suggestions.where(time_period), :author_id, start: ::Note.minimum(:id), finish: ::Note.maximum(:id))
+ ```
+
+1. Execution of estimated batch counter with joined relation (`joins(:cluster)`),
+ for a custom column (`'clusters.user_id'`):
+
+ ```ruby
+ estimate_batch_distinct_count(::Clusters::Applications::CertManager.where(time_period).available.joins(:cluster), 'clusters.user_id')
+ ```
+
+When instrumenting metric with usage of estimated batch counter please add
+`_estimated` suffix to its name, for example:
+
+```ruby
+ "counts": {
+ "ci_builds_estimated": estimate_batch_distinct_count(Ci::Build),
+ ...
+```
+
+### Redis Counters
+
+Handles `::Redis::CommandError` and `Gitlab::UsageDataCounters::BaseCounter::UnknownEvent`
+returns -1 when a block is sent or hash with all values -1 when a `counter(Gitlab::UsageDataCounters)` is sent
+different behavior due to 2 different implementations of Redis counter
+
+Method: `redis_usage_data(counter, &block)`
+
+Arguments:
+
+- `counter`: a counter from `Gitlab::UsageDataCounters`, that has `fallback_totals` method implemented
+- or a `block`: which is evaluated
+
+#### Ordinary Redis Counters
+
+Examples of implementation:
+
+- Using Redis methods [`INCR`](https://redis.io/commands/incr), [`GET`](https://redis.io/commands/get), and [`Gitlab::UsageDataCounters::WikiPageCounter`](https://gitlab.com/gitlab-org/gitlab/-/blob/master/lib/gitlab/usage_data_counters/wiki_page_counter.rb)
+- Using Redis methods [`HINCRBY`](https://redis.io/commands/hincrby), [`HGETALL`](https://redis.io/commands/hgetall), and [`Gitlab::UsageCounters::PodLogs`](https://gitlab.com/gitlab-org/gitlab/-/blob/master/lib/gitlab/usage_counters/pod_logs.rb)
+
+##### UsageData API Tracking
+
+<!-- There's nearly identical content in `##### Adding new events`. If you fix errors here, you may need to fix the same errors in the other location. -->
+
+1. Track event using `UsageData` API
+
+ Increment event count using ordinary Redis counter, for given event name.
+
+ Tracking events using the `UsageData` API requires the `usage_data_api` feature flag to be enabled, which is enabled by default.
+
+ API requests are protected by checking for a valid CSRF token.
+
+ To be able to increment the values, the related feature `usage_data_<event_name>` should be enabled.
+
+ ```plaintext
+ POST /usage_data/increment_counter
+ ```
+
+ | Attribute | Type | Required | Description |
+ | :-------- | :--- | :------- | :---------- |
+ | `event` | string | yes | The event name it should be tracked |
+
+ Response
+
+ - `200` if event was tracked
+ - `400 Bad request` if event parameter is missing
+ - `401 Unauthorized` if user is not authenticated
+ - `403 Forbidden` for invalid CSRF token provided
+
+1. Track events using JavaScript/Vue API helper which calls the API above
+
+ Note that `usage_data_api` and `usage_data_#{event_name}` should be enabled to be able to track events
+
+ ```javascript
+ import api from '~/api';
+
+ api.trackRedisCounterEvent('my_already_defined_event_name'),
+ ```
+
+#### Redis HLL Counters
+
+WARNING:
+HyperLogLog (HLL) is a probabilistic algorithm and its **results always includes some small error**. According to [Redis documentation](https://redis.io/commands/pfcount), data from
+used HLL implementation is "approximated with a standard error of 0.81%".
+
+With `Gitlab::UsageDataCounters::HLLRedisCounter` we have available data structures used to count unique values.
+
+Implemented using Redis methods [PFADD](https://redis.io/commands/pfadd) and [PFCOUNT](https://redis.io/commands/pfcount).
+
+##### Adding new events
+
+1. Define events in [`known_events`](https://gitlab.com/gitlab-org/gitlab/-/blob/master/lib/gitlab/usage_data_counters/known_events/).
+
+ Example event:
+
+ ```yaml
+ - name: users_creating_epics
+ category: epics_usage
+ redis_slot: users
+ aggregation: weekly
+ feature_flag: track_epics_activity
+ ```
+
+ Keys:
+
+ - `name`: unique event name.
+
+ Name format for Redis HLL events `<name>_<redis_slot>`.
+
+ [See Metric name](metrics_dictionary.md#metric-name) for a complete guide on metric naming suggestion.
+
+ Consider including in the event's name the Redis slot to be able to count totals for a specific category.
+
+ Example names: `users_creating_epics`, `users_triggering_security_scans`.
+
+ - `category`: event category. Used for getting total counts for events in a category, for easier
+ access to a group of events.
+ - `redis_slot`: optional Redis slot. Default value: event name. Only event data that is stored in the same slot
+ can be aggregated. Ensure keys are in the same slot. For example:
+ `users_creating_epics` with `redis_slot: 'users'` builds Redis key
+ `{users}_creating_epics-2020-34`. If `redis_slot` is not defined the Redis key will
+ be `{users_creating_epics}-2020-34`.
+ Recommended slots to use are: `users`, `projects`. This is the value we count.
+ - `expiry`: expiry time in days. Default: 29 days for daily aggregation and 6 weeks for weekly
+ aggregation.
+ - `aggregation`: may be set to a `:daily` or `:weekly` key. Defines how counting data is stored in Redis.
+ Aggregation on a `daily` basis does not pull more fine grained data.
+ - `feature_flag`: optional `default_enabled: :yaml`. If no feature flag is set then the tracking is enabled. One feature flag can be used for multiple events. For details, see our [GitLab internal Feature flags](../feature_flags/index.md) documentation. The feature flags are owned by the group adding the event tracking.
+
+1. Use one of the following methods to track the event:
+
+ - In the controller using the `RedisTracking` module and the following format:
+
+ ```ruby
+ track_redis_hll_event(*controller_actions, name:, if: nil, &block)
+ ```
+
+ Arguments:
+
+ - `controller_actions`: the controller actions to track.
+ - `name`: the event name.
+ - `if`: optional custom conditions. Uses the same format as Rails callbacks.
+ - `&block`: optional block that computes and returns the `custom_id` that we want to track. This overrides the `visitor_id`.
+
+ Example:
+
+ ```ruby
+ # controller
+ class ProjectsController < Projects::ApplicationController
+ include RedisTracking
+
+ skip_before_action :authenticate_user!, only: :show
+ track_redis_hll_event :index, :show, name: 'users_visiting_projects'
+
+ def index
+ render html: 'index'
+ end
+
+ def new
+ render html: 'new'
+ end
+
+ def show
+ render html: 'show'
+ end
+ end
+ ```
+
+ - In the API using the `increment_unique_values(event_name, values)` helper method.
+
+ Arguments:
+
+ - `event_name`: the event name.
+ - `values`: the values counted. Can be one value or an array of values.
+
+ Example:
+
+ ```ruby
+ get ':id/registry/repositories' do
+ repositories = ContainerRepositoriesFinder.new(
+ user: current_user, subject: user_group
+ ).execute
+
+ increment_unique_values('users_listing_repositories', current_user.id)
+
+ present paginate(repositories), with: Entities::ContainerRegistry::Repository, tags: params[:tags], tags_count: params[:tags_count]
+ end
+ ```
+
+ - Using `track_usage_event(event_name, values)` in services and GraphQL.
+
+ Increment unique values count using Redis HLL, for a given event name.
+
+ Examples:
+
+ - [Track usage event for an incident in a service](https://gitlab.com/gitlab-org/gitlab/-/blob/v13.8.3-ee/app/services/issues/update_service.rb#L66)
+ - [Track usage event for an incident in GraphQL](https://gitlab.com/gitlab-org/gitlab/-/blob/v13.8.3-ee/app/graphql/mutations/alert_management/update_alert_status.rb#L16)
+
+ ```ruby
+ track_usage_event(:incident_management_incident_created, current_user.id)
+ ```
+
+ - Using the `UsageData` API.
+ <!-- There's nearly identical content in `##### UsageData API Tracking`. If you find / fix errors here, you may need to fix errors in that section too. -->
+
+ Increment unique users count using Redis HLL, for a given event name.
+
+ To track events using the `UsageData` API, ensure the `usage_data_api` feature flag
+ is set to `default_enabled: true`. Enabled by default in GitLab 13.7 and later.
+
+ API requests are protected by checking for a valid CSRF token.
+
+ ```plaintext
+ POST /usage_data/increment_unique_users
+ ```
+
+ | Attribute | Type | Required | Description |
+ | :-------- | :--- | :------- | :---------- |
+ | `event` | string | yes | The event name to track |
+
+ Response:
+
+ - `200` if the event was tracked, or if tracking failed for any reason.
+ - `400 Bad request` if an event parameter is missing.
+ - `401 Unauthorized` if the user is not authenticated.
+ - `403 Forbidden` if an invalid CSRF token is provided.
+
+ - Using the JavaScript/Vue API helper, which calls the `UsageData` API.
+
+ To track events using the `UsageData` API, ensure the `usage_data_api` feature flag
+ is set to `default_enabled: true`. Enabled by default in GitLab 13.7 and later.
+
+ Example for an existing event already defined in [known events](https://gitlab.com/gitlab-org/gitlab/-/blob/master/lib/gitlab/usage_data_counters/known_events/):
+
+ ```javascript
+ import api from '~/api';
+
+ api.trackRedisHllUserEvent('my_already_defined_event_name'),
+ ```
+
+1. Get event data using `Gitlab::UsageDataCounters::HLLRedisCounter.unique_events(event_names:, start_date:, end_date:, context: '')`.
+
+ Arguments:
+
+ - `event_names`: the list of event names.
+ - `start_date`: start date of the period for which we want to get event data.
+ - `end_date`: end date of the period for which we want to get event data.
+ - `context`: context of the event. Allowed values are `default`, `free`, `bronze`, `silver`, `gold`, `starter`, `premium`, `ultimate`.
+
+1. Testing tracking and getting unique events
+
+Trigger events in rails console by using `track_event` method
+
+ ```ruby
+ Gitlab::UsageDataCounters::HLLRedisCounter.track_event('users_viewing_compliance_audit_events', values: 1)
+ Gitlab::UsageDataCounters::HLLRedisCounter.track_event('users_viewing_compliance_audit_events', values: [2, 3])
+ ```
+
+Next, get the unique events for the current week.
+
+ ```ruby
+ # Get unique events for metric for current_week
+ Gitlab::UsageDataCounters::HLLRedisCounter.unique_events(event_names: 'users_viewing_compliance_audit_events',
+ start_date: Date.current.beginning_of_week, end_date: Date.current.next_week)
+ ```
+
+##### Recommendations
+
+We have the following recommendations for [Adding new events](#adding-new-events):
+
+- Event aggregation: weekly.
+- Key expiry time:
+ - Daily: 29 days.
+ - Weekly: 42 days.
+- When adding new metrics, use a [feature flag](../../operations/feature_flags.md) to control the impact.
+- For feature flags triggered by another service, set `default_enabled: false`,
+ - Events can be triggered using the `UsageData` API, which helps when there are > 10 events per change
+
+##### Enable/Disable Redis HLL tracking
+
+Events are tracked behind optional [feature flags](../feature_flags/index.md) due to concerns for Redis performance and scalability.
+
+For a full list of events and corresponding feature flags see, [known_events](https://gitlab.com/gitlab-org/gitlab/-/blob/master/lib/gitlab/usage_data_counters/known_events/) files.
+
+To enable or disable tracking for specific event in <https://gitlab.com> or <https://about.staging.gitlab.com>, run commands such as the following to
+[enable or disable the corresponding feature](../feature_flags/index.md).
+
+```shell
+/chatops run feature set <feature_name> true
+/chatops run feature set <feature_name> false
+```
+
+We can also disable tracking completely by using the global flag:
+
+```shell
+/chatops run feature set redis_hll_tracking true
+/chatops run feature set redis_hll_tracking false
+```
+
+##### Known events are added automatically in Service Data payload
+
+All events added in [`known_events/common.yml`](https://gitlab.com/gitlab-org/gitlab/-/blob/master/lib/gitlab/usage_data_counters/known_events/common.yml) are automatically added to Service Data generation under the `redis_hll_counters` key. This column is stored in [version-app as a JSON](https://gitlab.com/gitlab-services/version-gitlab-com/-/blob/master/db/schema.rb#L209).
+For each event we add metrics for the weekly and monthly time frames, and totals for each where applicable:
+
+- `#{event_name}_weekly`: Data for 7 days for daily [aggregation](#adding-new-events) events and data for the last complete week for weekly [aggregation](#adding-new-events) events.
+- `#{event_name}_monthly`: Data for 28 days for daily [aggregation](#adding-new-events) events and data for the last 4 complete weeks for weekly [aggregation](#adding-new-events) events.
+
+Redis HLL implementation calculates automatic total metrics, if there are more than one metric for the same category, aggregation, and Redis slot.
+
+- `#{category}_total_unique_counts_weekly`: Total unique counts for events in the same category for the last 7 days or the last complete week, if events are in the same Redis slot and we have more than one metric.
+- `#{category}_total_unique_counts_monthly`: Total unique counts for events in same category for the last 28 days or the last 4 complete weeks, if events are in the same Redis slot and we have more than one metric.
+
+Example of `redis_hll_counters` data:
+
+```ruby
+{:redis_hll_counters=>
+ {"compliance"=>
+ {"users_viewing_compliance_dashboard_weekly"=>0,
+ "users_viewing_compliance_dashboard_monthly"=>0,
+ "users_viewing_compliance_audit_events_weekly"=>0,
+ "users_viewing_audit_events_monthly"=>0,
+ "compliance_total_unique_counts_weekly"=>0,
+ "compliance_total_unique_counts_monthly"=>0},
+ "analytics"=>
+ {"users_viewing_analytics_group_devops_adoption_weekly"=>0,
+ "users_viewing_analytics_group_devops_adoption_monthly"=>0,
+ "analytics_total_unique_counts_weekly"=>0,
+ "analytics_total_unique_counts_monthly"=>0},
+ "ide_edit"=>
+ {"users_editing_by_web_ide_weekly"=>0,
+ "users_editing_by_web_ide_monthly"=>0,
+ "users_editing_by_sfe_weekly"=>0,
+ "users_editing_by_sfe_monthly"=>0,
+ "ide_edit_total_unique_counts_weekly"=>0,
+ "ide_edit_total_unique_counts_monthly"=>0}
+ }
+```
+
+Example usage:
+
+```ruby
+# Redis Counters
+redis_usage_data(Gitlab::UsageDataCounters::WikiPageCounter)
+redis_usage_data { ::Gitlab::UsageCounters::PodLogs.usage_totals[:total] }
+
+# Define events in common.yml https://gitlab.com/gitlab-org/gitlab/-/blob/master/lib/gitlab/usage_data_counters/known_events/common.yml
+
+# Tracking events
+Gitlab::UsageDataCounters::HLLRedisCounter.track_event('users_expanding_vulnerabilities', values: visitor_id)
+
+# Get unique events for metric
+redis_usage_data { Gitlab::UsageDataCounters::HLLRedisCounter.unique_events(event_names: 'users_expanding_vulnerabilities', start_date: 28.days.ago, end_date: Date.current) }
+```
+
+### Alternative Counters
+
+Handles `StandardError` and fallbacks into -1 this way not all measures fail if we encounter one exception.
+Mainly used for settings and configurations.
+
+Method: `alt_usage_data(value = nil, fallback: -1, &block)`
+
+Arguments:
+
+- `value`: a simple static value in which case the value is simply returned.
+- or a `block`: which is evaluated
+- `fallback: -1`: the common value used for any metrics that are failing.
+
+Usage:
+
+```ruby
+alt_usage_data { Gitlab::VERSION }
+alt_usage_data { Gitlab::CurrentSettings.uuid }
+alt_usage_data(999)
+```
+
+### Adding counters to build new metrics
+
+When adding the results of two counters, use the `add` Service Data method that
+handles fallback values and exceptions. It also generates a valid [SQL export](#exporting-service-ping-sql-queries-and-definitions).
+
+Example usage:
+
+```ruby
+add(User.active, User.bot)
+```
+
+### Prometheus Queries
+
+In those cases where operational metrics should be part of Service Ping, a database or Redis query is unlikely
+to provide useful data. Instead, Prometheus might be more appropriate, because most GitLab architectural
+components publish metrics to it that can be queried back, aggregated, and included as Service Data.
+
+NOTE:
+Prometheus as a data source for Service Ping is currently only available for single-node Omnibus installations
+that are running the [bundled Prometheus](../../administration/monitoring/prometheus/index.md) instance.
+
+To query Prometheus for metrics, a helper method is available to `yield` a fully configured
+`PrometheusClient`, given it is available as per the note above:
+
+```ruby
+with_prometheus_client do |client|
+ response = client.query('<your query>')
+ ...
+end
+```
+
+Please refer to [the `PrometheusClient` definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/lib/gitlab/prometheus_client.rb)
+for how to use its API to query for data.
+
+### Fallback values for UsagePing
+
+We return fallback values in these cases:
+
+| Case | Value |
+|-----------------------------|-------|
+| Deprecated Metric | -1000 |
+| Timeouts, general failures | -1 |
+| Standard errors in counters | -2 |
+
+## Developing and testing Service Ping
+
+### 1. Naming and placing the metrics
+
+Add the metric in one of the top level keys
+
+- `settings`: for settings related metrics.
+- `counts_weekly`: for counters that have data for the most recent 7 days.
+- `counts_monthly`: for counters that have data for the most recent 28 days.
+- `counts`: for counters that have data for all time.
+
+### 2. Use your Rails console to manually test counters
+
+```ruby
+# count
+Gitlab::UsageData.count(User.active)
+Gitlab::UsageData.count(::Clusters::Cluster.aws_installed.enabled, :cluster_id)
+
+# count distinct
+Gitlab::UsageData.distinct_count(::Project, :creator_id)
+Gitlab::UsageData.distinct_count(::Note.with_suggestions.where(time_period), :author_id, start: ::User.minimum(:id), finish: ::User.maximum(:id))
+```
+
+### 3. Generate the SQL query
+
+Your Rails console returns the generated SQL queries.
+
+Example:
+
+```ruby
+pry(main)> Gitlab::UsageData.count(User.active)
+ (2.6ms) SELECT "features"."key" FROM "features"
+ (15.3ms) SELECT MIN("users"."id") FROM "users" WHERE ("users"."state" IN ('active')) AND ("users"."user_type" IS NULL OR "users"."user_type" IN (6, 4))
+ (2.4ms) SELECT MAX("users"."id") FROM "users" WHERE ("users"."state" IN ('active')) AND ("users"."user_type" IS NULL OR "users"."user_type" IN (6, 4))
+ (1.9ms) SELECT COUNT("users"."id") FROM "users" WHERE ("users"."state" IN ('active')) AND ("users"."user_type" IS NULL OR "users"."user_type" IN (6, 4)) AND "users"."id" BETWEEN 1 AND 100000
+```
+
+### 4. Optimize queries with #database-lab
+
+Paste the SQL query into `#database-lab` to see how the query performs at scale.
+
+- `#database-lab` is a Slack channel which uses a production-sized environment to test your queries.
+- GitLab.com's production database has a 15 second timeout.
+- Any single query must stay below [1 second execution time](../query_performance.md#timing-guidelines-for-queries) with cold caches.
+- Add a specialized index on columns involved to reduce the execution time.
+
+To have an understanding of the query's execution we add in the MR description the following information:
+
+- For counters that have a `time_period` test we add information for both cases:
+ - `time_period = {}` for all time periods
+ - `time_period = { created_at: 28.days.ago..Time.current }` for last 28 days period
+- Execution plan and query time before and after optimization
+- Query generated for the index and time
+- Migration output for up and down execution
+
+We also use `#database-lab` and [explain.depesz.com](https://explain.depesz.com/). For more details, see the [database review guide](../database_review.md#preparation-when-adding-or-modifying-queries).
+
+#### Optimization recommendations and examples
+
+- Use specialized indexes [example 1](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/26871), [example 2](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/26445).
+- Use defined `start` and `finish`, and simple queries. These values can be memoized and reused, [example](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/37155).
+- Avoid joins and write the queries as simply as possible, [example](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/36316).
+- Set a custom `batch_size` for `distinct_count`, [example](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/38000).
+
+### 5. Add the metric definition
+
+[Check Metrics Dictionary Guide](metrics_dictionary.md)
+
+When adding, updating, or removing metrics, please update the [Metrics Dictionary](dictionary.md).
+
+### 6. Add new metric to Versions Application
+
+Check if new metrics need to be added to the Versions Application. See `usage_data` [schema](https://gitlab.com/gitlab-services/version-gitlab-com/-/blob/master/db/schema.rb#L147) and Service Data [parameters accepted](https://gitlab.com/gitlab-services/version-gitlab-com/-/blob/master/app/services/usage_ping.rb). Any metrics added under the `counts` key are saved in the `stats` column.
+
+### 7. Add the feature label
+
+Add the `feature` label to the Merge Request for new Service Ping metrics. These are user-facing changes and are part of expanding the Service Ping feature.
+
+### 8. Add a changelog
+
+Ensure you comply with the [Changelog entries guide](../changelog.md).
+
+### 9. Ask for a Product Intelligence Review
+
+On GitLab.com, we have DangerBot set up to monitor Product Intelligence related files and DangerBot recommends a [Product Intelligence review](review_guidelines.md).
+
+### 10. Verify your metric
+
+On GitLab.com, the Product Intelligence team regularly [monitors Service Ping](https://gitlab.com/groups/gitlab-org/-/epics/6000).
+They may alert you that your metrics need further optimization to run quicker and with greater success.
+
+The Service Ping JSON payload for GitLab.com is shared in the
+[#g_product_intelligence](https://gitlab.slack.com/archives/CL3A7GFPF) Slack channel every week.
+
+You may also use the [Service Ping QA dashboard](https://app.periscopedata.com/app/gitlab/632033/Usage-Ping-QA) to check how well your metric performs. The dashboard allows filtering by GitLab version, by "Self-managed" & "SaaS" and shows you how many failures have occurred for each metric. Whenever you notice a high failure rate, you may re-optimize your metric.
+
+### Service Ping local setup
+
+To set up Service Ping locally, you must:
+
+1. [Set up local repositories](#set-up-local-repositories).
+1. [Test local setup](#test-local-setup).
+1. (Optional) [Test Prometheus-based Service Ping](#test-prometheus-based-service-ping).
+
+#### Set up local repositories
+
+1. Clone and start [GitLab](https://gitlab.com/gitlab-org/gitlab-development-kit).
+1. Clone and start [Versions Application](https://gitlab.com/gitlab-services/version-gitlab-com).
+ Make sure to run `docker-compose up` to start a PostgreSQL and Redis instance.
+1. Point GitLab to the Versions Application endpoint instead of the default endpoint:
+ 1. Open [submit_usage_ping_service.rb](https://gitlab.com/gitlab-org/gitlab/-/blob/master/app/services/submit_usage_ping_service.rb#L4) in your local and modified `PRODUCTION_URL`.
+ 1. Set it to the local Versions Application URL `http://localhost:3000/usage_data`.
+
+#### Test local setup
+
+1. Using the `gitlab` Rails console, manually trigger Service Ping:
+
+ ```ruby
+ ServicePing::SubmitService.new.execute
+ ```
+
+1. Use the `versions` Rails console to check the Service Ping was successfully received,
+ parsed, and stored in the Versions database:
+
+ ```ruby
+ UsageData.last
+ ```
+
+### Test Prometheus-based Service Ping
+
+If the data submitted includes metrics [queried from Prometheus](#prometheus-queries)
+you want to inspect and verify, you must:
+
+- Ensure that a Prometheus server is running locally.
+- Ensure the respective GitLab components are exporting metrics to the Prometheus server.
+
+If you do not need to test data coming from Prometheus, no further action
+is necessary. Service Ping should degrade gracefully in the absence of a running Prometheus server.
+
+Three kinds of components may export data to Prometheus, and are included in Service Ping:
+
+- [`node_exporter`](https://github.com/prometheus/node_exporter): Exports node metrics
+ from the host machine.
+- [`gitlab-exporter`](https://gitlab.com/gitlab-org/gitlab-exporter): Exports process metrics
+ from various GitLab components.
+- Other various GitLab services, such as Sidekiq and the Rails server, which export their own metrics.
+
+#### Test with an Omnibus container
+
+This is the recommended approach to test Prometheus based Service Ping.
+
+The easiest way to verify your changes is to build a new Omnibus image from your code branch by using CI, then download the image
+and run a local container instance:
+
+1. From your merge request, click on the `qa` stage, then trigger the `package-and-qa` job. This job triggers an Omnibus
+build in a [downstream pipeline of the `omnibus-gitlab-mirror` project](https://gitlab.com/gitlab-org/build/omnibus-gitlab-mirror/-/pipelines).
+1. In the downstream pipeline, wait for the `gitlab-docker` job to finish.
+1. Open the job logs and locate the full container name including the version. It takes the following form: `registry.gitlab.com/gitlab-org/build/omnibus-gitlab-mirror/gitlab-ee:<VERSION>`.
+1. On your local machine, make sure you are signed in to the GitLab Docker registry. You can find the instructions for this in
+[Authenticate to the GitLab Container Registry](../../user/packages/container_registry/index.md#authenticate-with-the-container-registry).
+1. Once signed in, download the new image by using `docker pull registry.gitlab.com/gitlab-org/build/omnibus-gitlab-mirror/gitlab-ee:<VERSION>`
+1. For more information about working with and running Omnibus GitLab containers in Docker, please refer to [GitLab Docker images](https://docs.gitlab.com/omnibus/docker/README.html) in the Omnibus documentation.
+
+#### Test with GitLab development toolkits
+
+This is the less recommended approach, because it comes with a number of difficulties when emulating a real GitLab deployment.
+
+The [GDK](https://gitlab.com/gitlab-org/gitlab-development-kit) is not set up to run a Prometheus server or `node_exporter` alongside other GitLab components. If you would
+like to do so, [Monitoring the GDK with Prometheus](https://gitlab.com/gitlab-org/gitlab-development-kit/-/blob/main/doc/howto/prometheus/index.md#monitoring-the-gdk-with-prometheus) is a good start.
+
+The [GCK](https://gitlab.com/gitlab-org/gitlab-compose-kit) has limited support for testing Prometheus based Service Ping.
+By default, it already comes with a fully configured Prometheus service that is set up to scrape a number of components,
+but with the following limitations:
+
+- It does not run a `gitlab-exporter` instance, so several `process_*` metrics from services such as Gitaly may be missing.
+- While it runs a `node_exporter`, `docker-compose` services emulate hosts, meaning that it would normally report itself to not be associated
+with any of the other services that are running. That is not how node metrics are reported in a production setup, where `node_exporter`
+always runs as a process alongside other GitLab components on any given node. From Service Ping's perspective none of the node data would therefore
+appear to be associated to any of the services running, because they all appear to be running on different hosts. To alleviate this problem, the `node_exporter` in GCK was arbitrarily "assigned" to the `web` service, meaning only for this service `node_*` metrics appears in Service Ping.
+
+## Aggregated metrics
+
+> - [Introduced](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/45979) in GitLab 13.6.
+
+WARNING:
+This feature is intended solely for internal GitLab use.
+
+To add data for aggregated metrics into Service Ping payload you should add corresponding definition at [`config/metrics/aggregates/*.yaml`](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/aggregates/) for metrics available at Community Edition and at [`ee/config/metrics/aggregates/*.yaml`](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/aggregates/) for Enterprise Edition ones.
+
+Each aggregate definition includes following parts:
+
+- `name`: Unique name under which the aggregate metric is added to the Service Ping payload.
+- `operator`: Operator that defines how the aggregated metric data is counted. Available operators are:
+ - `OR`: Removes duplicates and counts all entries that triggered any of listed events.
+ - `AND`: Removes duplicates and counts all elements that were observed triggering all of following events.
+- `time_frame`: One or more valid time frames. Use these to limit the data included in aggregated metric to events within a specific date-range. Valid time frames are:
+ - `7d`: Last seven days of data.
+ - `28d`: Last twenty eight days of data.
+ - `all`: All historical data, only available for `database` sourced aggregated metrics.
+- `source`: Data source used to collect all events data included in aggregated metric. Valid data sources are:
+ - [`database`](#database-sourced-aggregated-metrics)
+ - [`redis`](#redis-sourced-aggregated-metrics)
+- `events`: list of events names to aggregate into metric. All events in this list must
+ relay on the same data source. Additional data source requirements are described in the
+ [Database sourced aggregated metrics](#database-sourced-aggregated-metrics) and
+ [Redis sourced aggregated metrics](#redis-sourced-aggregated-metrics) sections.
+- `feature_flag`: Name of [development feature flag](../feature_flags/index.md#development-type)
+ that is checked before metrics aggregation is performed. Corresponding feature flag
+ should have `default_enabled` attribute set to `false`. The `feature_flag` attribute
+ is optional and can be omitted. When `feature_flag` is missing, no feature flag is checked.
+
+Example aggregated metric entries:
+
+```yaml
+- name: example_metrics_union
+ operator: OR
+ events:
+ - 'users_expanding_secure_security_report'
+ - 'users_expanding_testing_code_quality_report'
+ - 'users_expanding_testing_accessibility_report'
+ source: redis
+ time_frame:
+ - 7d
+ - 28d
+- name: example_metrics_intersection
+ operator: AND
+ source: database
+ time_frame:
+ - 28d
+ - all
+ events:
+ - 'dependency_scanning_pipeline_all_time'
+ - 'container_scanning_pipeline_all_time'
+ feature_flag: example_aggregated_metric
+```
+
+Aggregated metrics collected in `7d` and `28d` time frames are added into Service Ping payload under the `aggregated_metrics` sub-key in the `counts_weekly` and `counts_monthly` top level keys.
+
+```ruby
+{
+ :counts_monthly => {
+ :deployments => 1003,
+ :successful_deployments => 78,
+ :failed_deployments => 275,
+ :packages => 155,
+ :personal_snippets => 2106,
+ :project_snippets => 407,
+ :promoted_issues => 719,
+ :aggregated_metrics => {
+ :example_metrics_union => 7,
+ :example_metrics_intersection => 2
+ },
+ :snippets => 2513
+ }
+}
+```
+
+Aggregated metrics for `all` time frame are present in the `count` top level key, with the `aggregate_` prefix added to their name.
+
+For example:
+
+`example_metrics_intersection`
+
+Becomes:
+
+`counts.aggregate_example_metrics_intersection`
+
+```ruby
+{
+ :counts => {
+ :deployments => 11003,
+ :successful_deployments => 178,
+ :failed_deployments => 1275,
+ :aggregate_example_metrics_intersection => 12
+ }
+}
+```
+
+### Redis sourced aggregated metrics
+
+> - [Introduced](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/45979) in GitLab 13.6.
+
+To declare the aggregate of events collected with [Redis HLL Counters](#redis-hll-counters),
+you must fulfill the following requirements:
+
+1. All events listed at `events` attribute must come from
+ [`known_events/*.yml`](#known-events-are-added-automatically-in-service-data-payload) files.
+1. All events listed at `events` attribute must have the same `redis_slot` attribute.
+1. All events listed at `events` attribute must have the same `aggregation` attribute.
+1. `time_frame` does not include `all` value, which is unavailable for Redis sourced aggregated metrics.
+
+### Database sourced aggregated metrics
+
+> - [Introduced](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/52784) in GitLab 13.9.
+> - It's [deployed behind a feature flag](../../user/feature_flags.md), disabled by default.
+> - It's enabled on GitLab.com.
+
+To declare an aggregate of metrics based on events collected from database, follow
+these steps:
+
+1. [Persist the metrics for aggregation](#persist-metrics-for-aggregation).
+1. [Add new aggregated metric definition](#add-new-aggregated-metric-definition).
+
+#### Persist metrics for aggregation
+
+Only metrics calculated with [Estimated Batch Counters](#estimated-batch-counters)
+can be persisted for database sourced aggregated metrics. To persist a metric,
+inject a Ruby block into the
+[estimate_batch_distinct_count](#estimate_batch_distinct_count-method) method.
+This block should invoke the
+`Gitlab::Usage::Metrics::Aggregates::Sources::PostgresHll.save_aggregated_metrics`
+[method](https://gitlab.com/gitlab-org/gitlab/-/blob/master/lib/gitlab/usage/metrics/aggregates/sources/postgres_hll.rb#L21),
+which stores `estimate_batch_distinct_count` results for future use in aggregated metrics.
+
+The `Gitlab::Usage::Metrics::Aggregates::Sources::PostgresHll.save_aggregated_metrics`
+method accepts the following arguments:
+
+- `metric_name`: The name of metric to use for aggregations. Should be the same
+ as the key under which the metric is added into Service Ping.
+- `recorded_at_timestamp`: The timestamp representing the moment when a given
+ Service Ping payload was collected. You should use the convenience method `recorded_at`
+ to fill `recorded_at_timestamp` argument, like this: `recorded_at_timestamp: recorded_at`
+- `time_period`: The time period used to build the `relation` argument passed into
+ `estimate_batch_distinct_count`. To collect the metric with all available historical
+ data, set a `nil` value as time period: `time_period: nil`.
+- `data`: HyperLogLog buckets structure representing unique entries in `relation`.
+ The `estimate_batch_distinct_count` method always passes the correct argument
+ into the block, so `data` argument must always have a value equal to block argument,
+ like this: `data: result`
+
+Example metrics persistence:
+
+```ruby
+class UsageData
+ def count_secure_pipelines(time_period)
+ ...
+ relation = ::Security::Scan.latest_successful_by_build.by_scan_types(scan_type).where(security_scans: time_period)
+
+ pipelines_with_secure_jobs['dependency_scanning_pipeline'] = estimate_batch_distinct_count(relation, :commit_id, batch_size: 1000, start: start_id, finish: finish_id) do |result|
+ ::Gitlab::Usage::Metrics::Aggregates::Sources::PostgresHll
+ .save_aggregated_metrics(metric_name: 'dependency_scanning_pipeline', recorded_at_timestamp: recorded_at, time_period: time_period, data: result)
+ end
+ end
+end
+```
+
+#### Add new aggregated metric definition
+
+After all metrics are persisted, you can add an aggregated metric definition at
+[`aggregated_metrics/`](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/aggregates/).
+
+To declare the aggregate of metrics collected with [Estimated Batch Counters](#estimated-batch-counters),
+you must fulfill the following requirements:
+
+- Metrics names listed in the `events:` attribute, have to use the same names you passed in the `metric_name` argument while persisting metrics in previous step.
+- Every metric listed in the `events:` attribute, has to be persisted for **every** selected `time_frame:` value.
+
+Example definition:
+
+```yaml
+- name: example_metrics_intersection_database_sourced
+ operator: AND
+ source: database
+ events:
+ - 'dependency_scanning_pipeline'
+ - 'container_scanning_pipeline'
+ time_frame:
+ - 28d
+ - all
+```
+
+## Example Service Ping payload
+
+The following is example content of the Service Ping payload.
+
+```json
+{
+ "uuid": "0000000-0000-0000-0000-000000000000",
+ "hostname": "example.com",
+ "version": "12.10.0-pre",
+ "installation_type": "omnibus-gitlab",
+ "active_user_count": 999,
+ "recorded_at": "2020-04-17T07:43:54.162+00:00",
+ "edition": "EEU",
+ "license_md5": "00000000000000000000000000000000",
+ "license_id": null,
+ "historical_max_users": 999,
+ "licensee": {
+ "Name": "ABC, Inc.",
+ "Email": "email@example.com",
+ "Company": "ABC, Inc."
+ },
+ "license_user_count": 999,
+ "license_starts_at": "2020-01-01",
+ "license_expires_at": "2021-01-01",
+ "license_plan": "ultimate",
+ "license_add_ons": {
+ },
+ "license_trial": false,
+ "counts": {
+ "assignee_lists": 999,
+ "boards": 999,
+ "ci_builds": 999,
+ ...
+ },
+ "container_registry_enabled": true,
+ "dependency_proxy_enabled": false,
+ "gitlab_shared_runners_enabled": true,
+ "gravatar_enabled": true,
+ "influxdb_metrics_enabled": true,
+ "ldap_enabled": false,
+ "mattermost_enabled": false,
+ "omniauth_enabled": true,
+ "prometheus_enabled": false,
+ "prometheus_metrics_enabled": false,
+ "reply_by_email_enabled": "incoming+%{key}@incoming.gitlab.com",
+ "signup_enabled": true,
+ "web_ide_clientside_preview_enabled": true,
+ "projects_with_expiration_policy_disabled": 999,
+ "projects_with_expiration_policy_enabled": 999,
+ ...
+ "elasticsearch_enabled": true,
+ "license_trial_ends_on": null,
+ "geo_enabled": false,
+ "git": {
+ "version": {
+ "major": 2,
+ "minor": 26,
+ "patch": 1
+ }
+ },
+ "gitaly": {
+ "version": "12.10.0-rc1-93-g40980d40",
+ "servers": 56,
+ "clusters": 14,
+ "filesystems": [
+ "EXT_2_3_4"
+ ]
+ },
+ "gitlab_pages": {
+ "enabled": true,
+ "version": "1.17.0"
+ },
+ "container_registry_server": {
+ "vendor": "gitlab",
+ "version": "2.9.1-gitlab"
+ },
+ "database": {
+ "adapter": "postgresql",
+ "version": "9.6.15",
+ "pg_system_id": 6842684531675334351
+ },
+ "analytics_unique_visits": {
+ "g_analytics_contribution": 999,
+ ...
+ },
+ "usage_activity_by_stage": {
+ "configure": {
+ "project_clusters_enabled": 999,
+ ...
+ },
+ "create": {
+ "merge_requests": 999,
+ ...
+ },
+ "manage": {
+ "events": 999,
+ ...
+ },
+ "monitor": {
+ "clusters": 999,
+ ...
+ },
+ "package": {
+ "projects_with_packages": 999
+ },
+ "plan": {
+ "issues": 999,
+ ...
+ },
+ "release": {
+ "deployments": 999,
+ ...
+ },
+ "secure": {
+ "user_container_scanning_jobs": 999,
+ ...
+ },
+ "verify": {
+ "ci_builds": 999,
+ ...
+ }
+ },
+ "usage_activity_by_stage_monthly": {
+ "configure": {
+ "project_clusters_enabled": 999,
+ ...
+ },
+ "create": {
+ "merge_requests": 999,
+ ...
+ },
+ "manage": {
+ "events": 999,
+ ...
+ },
+ "monitor": {
+ "clusters": 999,
+ ...
+ },
+ "package": {
+ "projects_with_packages": 999
+ },
+ "plan": {
+ "issues": 999,
+ ...
+ },
+ "release": {
+ "deployments": 999,
+ ...
+ },
+ "secure": {
+ "user_container_scanning_jobs": 999,
+ ...
+ },
+ "verify": {
+ "ci_builds": 999,
+ ...
+ }
+ },
+ "topology": {
+ "duration_s": 0.013836685999194742,
+ "application_requests_per_hour": 4224,
+ "query_apdex_weekly_average": 0.996,
+ "failures": [],
+ "nodes": [
+ {
+ "node_memory_total_bytes": 33269903360,
+ "node_memory_utilization": 0.35,
+ "node_cpus": 16,
+ "node_cpu_utilization": 0.2,
+ "node_uname_info": {
+ "machine": "x86_64",
+ "sysname": "Linux",
+ "release": "4.19.76-linuxkit"
+ },
+ "node_services": [
+ {
+ "name": "web",
+ "process_count": 16,
+ "process_memory_pss": 233349888,
+ "process_memory_rss": 788220927,
+ "process_memory_uss": 195295487,
+ "server": "puma"
+ },
+ {
+ "name": "sidekiq",
+ "process_count": 1,
+ "process_memory_pss": 734080000,
+ "process_memory_rss": 750051328,
+ "process_memory_uss": 731533312
+ },
+ ...
+ ],
+ ...
+ },
+ ...
+ ]
+ }
+}
+```
+
+## Notable changes
+
+In GitLab 13.5, `pg_system_id` was added to send the [PostgreSQL system identifier](https://www.2ndquadrant.com/en/blog/support-for-postgresqls-system-identifier-in-barman/).
+
+## Exporting Service Ping SQL queries and definitions
+
+Two Rake tasks exist to export Service Ping definitions.
+
+- The Rake tasks export the raw SQL queries for `count`, `distinct_count`, `sum`.
+- The Rake tasks export the Redis counter class or the line of the Redis block for `redis_usage_data`.
+- The Rake tasks calculate the `alt_usage_data` metrics.
+
+In the home directory of your local GitLab installation run the following Rake tasks for the YAML and JSON versions respectively:
+
+```shell
+# for YAML export
+bin/rake gitlab:usage_data:dump_sql_in_yaml
+
+# for JSON export
+bin/rake gitlab:usage_data:dump_sql_in_json
+
+# You may pipe the output into a file
+bin/rake gitlab:usage_data:dump_sql_in_yaml > ~/Desktop/usage-metrics-2020-09-02.yaml
+```
+
+## Generating and troubleshooting Service Ping
+
+This activity is to be done via a detached screen session on a remote server.
+
+Before you begin these steps, make sure the key is added to the SSH agent locally
+with the `ssh-add` command.
+
+### Triggering
+
+1. Connect to bastion with agent forwarding: `$ ssh -A lb-bastion.gprd.gitlab.com`
+1. Create named screen: `$ screen -S <username>_usage_ping_<date>`
+1. Connect to console host: `$ ssh $USER-rails@console-01-sv-gprd.c.gitlab-production.internal`
+1. Run `SubmitUsagePingService.new.execute`
+1. Detach from screen: `ctrl + a, ctrl + d`
+1. Exit from bastion: `$ exit`
+
+### Verification (After approx 30 hours)
+
+1. Reconnect to bastion: `$ ssh -A lb-bastion.gprd.gitlab.com`
+1. Find your screen session: `$ screen -ls`
+1. Attach to your screen session: `$ screen -x 14226.mwawrzyniak_usage_ping_2021_01_22`
+1. Check the last payload in `raw_usage_data` table: `RawUsageData.last.payload`
+1. Check the when the payload was sent: `RawUsageData.last.sent_at`
+
+## Troubleshooting
+
+### Cannot disable Service Ping using the configuration file
+
+The method to disable Service Ping using the GitLab configuration file does not work in
+GitLab versions 9.3.0 to 13.12.3. To disable it, you need to use the Admin Area in
+the GitLab UI instead. For more information, see
+[this issue](https://gitlab.com/gitlab-org/gitlab/-/issues/333269).
+
+GitLab functionality and application settings cannot override or circumvent
+restrictions at the network layer. If Service Ping is blocked by your firewall,
+you are not impacted by this bug.
+
+#### Check if you are affected
+
+You can check if you were affected by this bug by using the Admin area or by
+checking the configuration file of your GitLab instance:
+
+- Using the Admin area:
+
+ 1. On the top bar, go to the admin area (**{admin}**).
+ 1. On the left sidebar, select **Settings > Metrics and profiling**.
+ 1. Expand **Usage Statistics**.
+ 1. Are you able to check/uncheck the checkbox to disable Service Ping?
+
+ - If _yes_, your GitLab instance is not affected by this bug.
+ - If you can't check/uncheck the checkbox, you are affected by this bug.
+ Read below [how to fix this](#how-to-fix-the-cannot-disable-service-ping-bug).
+
+- Checking your GitLab instance configuration file:
+
+ To check whether you're impacted by this bug, check your instance configuration
+ settings. The configuration file in which Service Ping can be disabled will depend
+ on your installation and deployment method, but it will typically be one of the following:
+
+ - `/etc/gitlab/gitlab.rb` for Omnibus GitLab Linux Package and Docker.
+ - `charts.yaml` for GitLab Helm and cloud-native Kubernetes deployments.
+ - `gitlab.yml` for GitLab installations from source.
+
+ To check the relevant configuration file for strings that indicate whether
+ Service Ping is disabled, you can use `grep`:
+
+ ```shell
+ # Linux package
+ grep "usage_ping_enabled'\] = false" /etc/gitlab/gitlab.rb
+
+ # Kubernetes charts
+ grep "enableUsagePing: false" values.yaml
+
+ # From source
+ grep "usage_ping_enabled'\] = false" gitlab/config.yml
+ ```
+
+ If you see any output after running the relevant command, your GitLab instance
+ may be affected by the bug. Otherwise, your instance is not affected.
+
+#### How to fix the "Cannot disable Service Ping" bug
+
+To work around this bug, you have two options:
+
+- [Update](../../update/index.md) to GitLab 13.12.4 or newer to fix this bug.
+- If you can't update to GitLab 13.12.4 or newer, enable Service Ping in the
+ configuration file, then disable Service Ping in the UI. For example, if you're
+ using the Linux package:
+
+ 1. Edit `/etc/gitlab/gitlab.rb`:
+
+ ```ruby
+ gitlab_rails['usage_ping_enabled'] = true
+ ```
+
+ 1. Reconfigure GitLab:
+
+ ```shell
+ sudo gitlab-ctl reconfigure
+ ```
+
+ 1. In GitLab, on the top bar, go to the admin area (**{admin}**).
+ 1. On the left sidebar, select **Settings > Metrics and profiling**.
+ 1. Expand **Usage Statistics**.
+ 1. Clear the **Enable service ping** checkbox.
+ 1. Select **Save Changes**.
diff --git a/doc/development/service_ping/metrics_dictionary.md b/doc/development/service_ping/metrics_dictionary.md
new file mode 100644
index 00000000000..b64b2234fa9
--- /dev/null
+++ b/doc/development/service_ping/metrics_dictionary.md
@@ -0,0 +1,237 @@
+---
+stage: Growth
+group: Product Intelligence
+info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://about.gitlab.com/handbook/engineering/ux/technical-writing/#assignments
+---
+
+# Metrics Dictionary Guide
+
+This guide describes Metrics Dictionary and how it's implemented
+
+## Metrics Definition and validation
+
+We are using [JSON Schema](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/schema.json) to validate the metrics definition.
+
+This process is meant to ensure consistent and valid metrics defined for Service Ping. All metrics *must*:
+
+- Comply with the defined [JSON schema](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/schema.json).
+- Have a unique `key_path` .
+- Have an owner.
+
+All metrics are stored in YAML files:
+
+- [`config/metrics`](https://gitlab.com/gitlab-org/gitlab/-/tree/master/config/metrics)
+
+Each metric is defined in a separate YAML file consisting of a number of fields:
+
+| Field | Required | Additional information |
+|---------------------|----------|----------------------------------------------------------------|
+| `key_path` | yes | JSON key path for the metric, location in Service Ping payload. |
+| `name` | no | Metric name suggestion. Can replace the last part of `key_path`. |
+| `description` | yes | |
+| `product_section` | yes | The [section](https://gitlab.com/gitlab-com/www-gitlab-com/-/blob/master/data/sections.yml). |
+| `product_stage` | no | The [stage](https://gitlab.com/gitlab-com/www-gitlab-com/blob/master/data/stages.yml) for the metric. |
+| `product_group` | yes | The [group](https://gitlab.com/gitlab-com/www-gitlab-com/blob/master/data/stages.yml) that owns the metric. |
+| `product_category` | no | The [product category](https://gitlab.com/gitlab-com/www-gitlab-com/blob/master/data/categories.yml) for the metric. |
+| `value_type` | yes | `string`; one of [`string`, `number`, `boolean`, `object`](https://json-schema.org/understanding-json-schema/reference/type.html). |
+| `status` | yes | `string`; [status](#metric-statuses) of the metric, may be set to `data_available`, `implemented`, `not_used`, `deprecated`, `removed`, `broken`. |
+| `time_frame` | yes | `string`; may be set to a value like `7d`, `28d`, `all`, `none`. |
+| `data_source` | yes | `string`; may be set to a value like `database`, `redis`, `redis_hll`, `prometheus`, `system`. |
+| `data_category` | yes | `string`; [categories](#data-category) of the metric, may be set to `Operational`, `Optional`, `Subscription`, `Standard`. |
+| `instrumentation_class` | no | `string`; [the class that implements the metric](metrics_instrumentation.md). |
+| `distribution` | yes | `array`; may be set to one of `ce, ee` or `ee`. The [distribution](https://about.gitlab.com/handbook/marketing/strategic-marketing/tiers/#definitions) where the tracked feature is available. |
+| `tier` | yes | `array`; may be set to one of `free, premium, ultimate`, `premium, ultimate` or `ultimate`. The [tier]( https://about.gitlab.com/handbook/marketing/strategic-marketing/tiers/) where the tracked feature is available. |
+| `milestone` | no | The milestone when the metric is introduced. |
+| `milestone_removed` | no | The milestone when the metric is removed. |
+| `introduced_by_url` | no | The URL to the Merge Request that introduced the metric. |
+| `repair_issue_url` | no | The URL of the issue that was created to repair a metric with a `broken` status. |
+| `options` | no | `object`: options information needed to calculate the metric value. |
+| `skip_validation` | no | This should **not** be set. [Used for imported metrics until we review, update and make them valid](https://gitlab.com/groups/gitlab-org/-/epics/5425). |
+
+### Metric statuses
+
+Metric definitions can have one of the following statuses:
+
+- `data_available`: Metric data is available and used in a Sisense dashboard.
+- `implemented`: Metric is implemented but data is not yet available. This is a temporary
+ status for newly added metrics awaiting inclusion in a new release.
+- `broken`: Metric reports broken data (for example, -1 fallback), or does not report data at all. A metric marked as `broken` must also have the `repair_issue_url` attribute.
+- `not_used`: Metric is not used in any dashboard.
+- `deprecated`: Metric is deprecated and possibly planned to be removed.
+- `removed`: Metric was removed, but it may appear in Service Ping payloads sent from instances running on older versions of GitLab.
+
+### Metric value_type
+
+Metric definitions can have one of the following values for `value_type`:
+
+- `boolean`
+- `number`
+- `string`
+- `object`: A metric with `value_type: object` must have `value_json_schema` with a link to the JSON schema for the object.
+In general, we avoid complex objects and prefer one of the `boolean`, `number`, or `string` value types.
+An example of a metric that uses `value_type: object` is `topology` (`/config/metrics/settings/20210323120839_topology.yml`),
+which has a related schema in `/config/metrics/objects_schemas/topology_schema.json`.
+
+### Metric time_frame
+
+- `7d`: The metric data applies to the most recent 7-day interval. For example, the following metric counts the number of users that create epics over a 7-day interval: `ee/config/metrics/counts_7d/20210305145820_g_product_planning_epic_created_weekly.yml`.
+- `28d`: The metric data applies to the most recent 28-day interval. For example, the following metric counts the number of unique users that create issues over a 28-day interval: `config/metrics/counts_28d/20210216181139_issues.yml`.
+- `all`: The metric data applies for the whole time the metric has been active (all-time interval). For example, the following metric counts all users that create issues: `/config/metrics/counts_all/20210216181115_issues.yml`.
+- `none`: The metric collects a type of data that's not tracked over time, such as settings and configuration information. Therefore, a time interval is not applicable. For example, `uuid` has no time interval applicable: `config/metrics/license/20210201124933_uuid.yml`.
+
+### Metric name
+
+To improve metric discoverability by a wider audience, each metric with
+instrumentation added at an appointed `key_path` receives a `name` attribute
+filled with the name suggestion, corresponding to the metric `data_source` and instrumentation.
+Metric name suggestions can contain two types of elements:
+
+1. **User input prompts**: Enclosed by `<>`, these pieces should be replaced or
+ removed when you create a metrics YAML file.
+1. **Fixed suggestion**: Plaintext parts generated according to well-defined algorithms.
+ They are based on underlying instrumentation, and should not be changed.
+
+For a metric name to be valid, it must not include any prompt, and no fixed suggestions
+should be changed.
+
+### Data category
+
+We use the following categories to classify a metric:
+
+- `Operational`: Required data for operational purposes.
+- `Optional`: Data that is optional to collect. This can be [enabled or disabled](../service_ping/index.md#disable-service-ping) in the Admin Area.
+- `Subscription`: Data related to licensing.
+- `Standard`: Standard set of identifiers that are included when collecting data.
+
+### Metric name suggestion examples
+
+#### Metric with `data_source: database`
+
+For a metric instrumented with SQL:
+
+```sql
+SELECT COUNT(DISTINCT user_id) FROM clusters WHERE clusters.management_project_id IS NOT NULL
+```
+
+- **Suggested name**: `count_distinct_user_id_from_<adjective describing: '(clusters.management_project_id IS NOT NULL)'>_clusters`
+- **Prompt**: `<adjective describing: '(clusters.management_project_id IS NOT NULL)'>`
+ should be replaced with an adjective that best represents filter conditions, such as `project_management`
+- **Final metric name**: For example, `count_distinct_user_id_from_project_management_clusters`
+
+For metric instrumented with SQL:
+
+```sql
+SELECT COUNT(DISTINCT clusters.user_id)
+FROM clusters_applications_helm
+INNER JOIN clusters ON clusters.id = clusters_applications_helm.cluster_id
+WHERE clusters_applications_helm.status IN (3, 5)
+```
+
+- **Suggested name**: `count_distinct_user_id_from_<adjective describing: '(clusters_applications_helm.status IN (3, 5))'>_clusters_<with>_<adjective describing: '(clusters_applications_helm.status IN (3, 5))'>_clusters_applications_helm`
+- **Prompt**: `<adjective describing: '(clusters_applications_helm.status IN (3, 5))'>`
+ should be replaced with an adjective that best represents filter conditions
+- **Final metric name**: `count_distinct_user_id_from_clusters_with_available_clusters_applications_helm`
+
+In the previous example, the prompt is irrelevant, and user can remove it. The second
+occurrence corresponds with the `available` scope defined in `Clusters::Concerns::ApplicationStatus`.
+It can be used as the right adjective to replace prompt.
+
+The `<with>` represents a suggested conjunction for the suggested name of the joined relation.
+The person documenting the metric can use it by either:
+
+- Removing the surrounding `<>`.
+- Using a different conjunction, such as `having` or `including`.
+
+#### Metric with `data_source: redis` or `redis_hll`
+
+For metrics instrumented with a Redis-based counter, the suggested name includes
+only the single prompt to be replaced by the person working with metrics YAML.
+
+- **Prompt**: `<please fill metric name, suggested format is: {subject}_{verb}{ing|ed}_{object} eg: users_creating_epics or merge_requests_viewed_in_single_file_mode>`
+- **Final metric name**: We suggest the metric name should follow the format of
+ `{subject}_{verb}{ing|ed}_{object}`, such as `user_creating_epics`, `users_triggering_security_scans`,
+ or `merge_requests_viewed_in_single_file_mode`
+
+#### Metric with `data_source: prometheus` or `system`
+
+For metrics instrumented with Prometheus or coming from the operating system,
+the suggested name includes only the single prompt by person working with metrics YAML.
+
+- **Prompt**: `<please fill metric name>`
+- **Final metric name**: Due to the variety of cases that can apply to this kind of metric,
+ no naming convention exists. Each person instrumenting a metric should use their
+ best judgment to come up with a descriptive name.
+
+### Example YAML metric definition
+
+The linked [`uuid`](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/license/uuid.yml)
+YAML file includes an example metric definition, where the `uuid` metric is the GitLab
+instance unique identifier.
+
+```yaml
+key_path: uuid
+description: GitLab instance unique identifier
+product_category: collection
+product_section: growth
+product_stage: growth
+product_group: group::product intelligence
+value_type: string
+status: data_available
+milestone: 9.1
+introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/1521
+time_frame: none
+data_source: database
+distribution:
+- ce
+- ee
+tier:
+- free
+- premium
+- ultimate
+```
+
+## Create a new metric definition
+
+The GitLab codebase provides a dedicated [generator](https://gitlab.com/gitlab-org/gitlab/-/blob/master/lib/generators/gitlab/usage_metric_definition_generator.rb) to create new metric definitions.
+
+For uniqueness, the generated file includes a timestamp prefix, in ISO 8601 format.
+
+The generator takes the key path argument and 2 options and creates the metric YAML definition in corresponding location:
+
+- `--ee`, `--no-ee` Indicates if metric is for EE.
+- `--dir=DIR` indicates the metric directory. It must be one of: `counts_7d`, `7d`, `counts_28d`, `28d`, `counts_all`, `all`, `settings`, `license`.
+
+```shell
+bundle exec rails generate gitlab:usage_metric_definition counts.issues --dir=7d
+create config/metrics/counts_7d/issues.yml
+```
+
+NOTE:
+To create a metric definition used in EE, add the `--ee` flag.
+
+```shell
+bundle exec rails generate gitlab:usage_metric_definition counts.issues --ee --dir=7d
+create ee/config/metrics/counts_7d/issues.yml
+```
+
+## Metrics added dynamic to Service Ping payload
+
+The [Redis HLL metrics](index.md#known-events-are-added-automatically-in-service-data-payload) are added automatically to Service Ping payload.
+
+A YAML metric definition is required for each metric. A dedicated generator is provided to create metric definitions for Redis HLL events.
+
+The generator takes `category` and `event` arguments, as the root key will be `redis_hll_counters`, and creates two metric definitions for weekly and monthly timeframes:
+
+```shell
+bundle exec rails generate gitlab:usage_metric_definition:redis_hll issues i_closed
+create config/metrics/counts_7d/i_closed_weekly.yml
+create config/metrics/counts_28d/i_closed_monthly.yml
+```
+
+To create a metric definition used in EE, add the `--ee` flag.
+
+```shell
+bundle exec rails generate gitlab:usage_metric_definition:redis_hll issues users_closing_issues --ee
+create config/metrics/counts_7d/i_closed_weekly.yml
+create config/metrics/counts_28d/i_closed_monthly.yml
+```
diff --git a/doc/development/service_ping/metrics_instrumentation.md b/doc/development/service_ping/metrics_instrumentation.md
new file mode 100644
index 00000000000..61a1ff828be
--- /dev/null
+++ b/doc/development/service_ping/metrics_instrumentation.md
@@ -0,0 +1,102 @@
+---
+stage: Growth
+group: Product Intelligence
+info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://about.gitlab.com/handbook/engineering/ux/technical-writing/#assignments
+---
+
+# Metrics instrumentation guide
+
+This guide describes how to develop Service Ping metrics using metrics instrumentation.
+
+## Nomenclature
+
+- **Instrumentation class**:
+ - Inherits one of the metric classes: `DatabaseMetric`, `RedisHLLMetric` or `GenericMetric`.
+ - Implements the logic that calculates the value for a Service Ping metric.
+
+- **Metric definition**
+ The Service Data metric YAML definition.
+
+- **Hardening**:
+ Hardening a method is the process that ensures the method fails safe, returning a fallback value like -1.
+
+## How it works
+
+A metric definition has the [`instrumentation_class`](metrics_dictionary.md) field, which can be set to a class.
+
+The defined instrumentation class should have one of the existing metric classes: `DatabaseMetric`, `RedisHLLMetric`, or `GenericMetric`.
+
+Using the instrumentation classes ensures that metrics can fail safe individually, without breaking the entire
+ process of Service Ping generation.
+
+We have built a domain-specific language (DSL) to define the metrics instrumentation.
+
+## Database metrics
+
+[Example of a merge request that adds a database metric](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/60022).
+
+```ruby
+module Gitlab
+ module Usage
+ module Metrics
+ module Instrumentations
+ class CountBoardsMetric < DatabaseMetric
+ operation :count
+
+ relation { Board }
+ end
+ end
+ end
+ end
+end
+```
+
+## Redis HyperLogLog metrics
+
+[Example of a merge request that adds a `RedisHLL` metric](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/61685).
+
+Count unique values for `i_quickactions_approve` event.
+
+```yaml
+time_frame: 28d
+data_source: redis_hll
+instrumentation_class: 'Gitlab::Usage::Metrics::Instrumentations::RedisHLLMetric'
+options:
+ events:
+ - i_quickactions_approve
+```
+
+## Generic metrics
+
+[Example of a merge request that adds a generic metric](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/60256).
+
+```ruby
+module Gitlab
+ module Usage
+ module Metrics
+ module Instrumentations
+ class UuidMetric < GenericMetric
+ value do
+ Gitlab::CurrentSettings.uuid
+ end
+ end
+ end
+ end
+ end
+end
+```
+
+## Creating a new metric instrumentation class
+
+To create a stub instrumentation for a Service Ping metric, you can use a dedicated [generator](https://gitlab.com/gitlab-org/gitlab/-/blob/master/lib/generators/gitlab/usage_metric_generator.rb):
+
+The generator takes the class name as an argument and the following options:
+
+- `--type=TYPE` Required. Indicates the metric type. It must be one of: `database`, `generic`, `redis_hll`.
+- `--ee` Indicates if the metric is for EE.
+
+```shell
+rails generate gitlab:usage_metric CountIssues --type database
+ create lib/gitlab/usage/metrics/instrumentations/count_issues_metric.rb
+ create spec/lib/gitlab/usage/metrics/instrumentations/count_issues_metric_spec.rb
+```
diff --git a/doc/development/service_ping/review_guidelines.md b/doc/development/service_ping/review_guidelines.md
new file mode 100644
index 00000000000..a4fb929a8a0
--- /dev/null
+++ b/doc/development/service_ping/review_guidelines.md
@@ -0,0 +1,75 @@
+---
+stage: Growth
+group: Product Intelligence
+info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://about.gitlab.com/handbook/engineering/ux/technical-writing/#assignments
+---
+
+# Service Ping review guidelines
+
+This page includes introductory material for a
+[Product Intelligence](https://about.gitlab.com/handbook/engineering/development/growth/product-intelligence/)
+review, and is specific to Service Ping related reviews. For broader advice and
+general best practices for code reviews, refer to our [code review guide](../code_review.md).
+
+## Resources for reviewers
+
+- [Service Ping Guide](index.md)
+- [Metrics Dictionary](metrics_dictionary.md)
+
+## Review process
+
+We recommend a Product Intelligence review when a merge request (MR) touches
+any of the following Service Ping files:
+
+- `usage_data*` files.
+- The Metrics Dictionary, including files in:
+ - [`config/metrics`](https://gitlab.com/gitlab-org/gitlab/-/tree/master/config/metrics).
+ - [`ee/config/metrics`](https://gitlab.com/gitlab-org/gitlab/-/tree/master/ee/config/metrics).
+ - [`dictionary.md`](https://gitlab.com/gitlab-org/gitlab/-/blob/master/doc/development/usage_ping/dictionary.md).
+ - [`schema.json`](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/schema.json).
+- Product Intelligence tooling. For example,
+ [`Gitlab::UsageMetricDefinitionGenerator`](https://gitlab.com/gitlab-org/gitlab/-/blob/master/lib/generators/gitlab/usage_metric_definition_generator.rb)
+
+### Roles and process
+
+#### The merge request **author** should
+
+- Decide whether a Product Intelligence review is needed.
+- If a Product Intelligence review is needed, add the labels
+ `~product intelligence` and `~product intelligence::review pending`.
+- Assign an
+ [engineer](https://gitlab.com/groups/gitlab-org/growth/product-intelligence/engineers/-/group_members?with_inherited_permissions=exclude) from the Product Intelligence team for a review.
+- Set the correct attributes in the metric's YAML definition:
+ - `product_section`, `product_stage`, `product_group`, `product_category`
+ - Provide a clear description of the metric.
+- Update the
+ [Metrics Dictionary](https://gitlab.com/gitlab-org/gitlab/-/blob/master/doc/development/usage_ping/dictionary.md) if needed.
+- Add a changelog [according to guidelines](../changelog.md).
+
+#### The Product Intelligence **reviewer** should
+
+- Perform a first-pass review on the merge request and suggest improvements to the author.
+- Check the [metrics location](index.md#1-naming-and-placing-the-metrics) in
+ the Service Ping JSON payload.
+- Add the `~database` label and ask for a [database review](../database_review.md) for
+ metrics that are based on Database.
+- For tracking using Redis HLL (HyperLogLog):
+ - Check the Redis slot.
+ - Check if a [feature flag is needed](index.md#recommendations).
+- For a metric's YAML definition:
+ - Check the metric's `description`.
+ - Check the metric's `key_path`.
+ - Check the `product_section`, `product_stage`, `product_group`, and `product_category` fields.
+ Read the [stages file](https://gitlab.com/gitlab-com/www-gitlab-com/blob/master/data/stages.yml).
+ - Check the file location. Consider the time frame, and if the file should be under `ee`.
+ - Check the tiers.
+- Approve the MR, and relabel the MR with `~"product intelligence::approved"`.
+
+## Review workload distribution
+
+[Danger bot](../dangerbot.md) adds the list of changed Product Intelligence files
+and pings the
+[`@gitlab-org/growth/product-intelligence/engineers`](https://gitlab.com/groups/gitlab-org/growth/product-intelligence/engineers/-/group_members?with_inherited_permissions=exclude) group for merge requests
+that are not drafts.
+
+Any of the Product Intelligence engineers can be assigned for the Product Intelligence review.
diff --git a/doc/development/shell_scripting_guide/index.md b/doc/development/shell_scripting_guide/index.md
index 6071ae3a09d..d3b446d45da 100644
--- a/doc/development/shell_scripting_guide/index.md
+++ b/doc/development/shell_scripting_guide/index.md
@@ -127,4 +127,4 @@ for code review.
---
-[Return to Development documentation](../README.md).
+[Return to Development documentation](../index.md).
diff --git a/doc/development/sidekiq_style_guide.md b/doc/development/sidekiq_style_guide.md
index 7bc3ecf002f..a77c9908ef4 100644
--- a/doc/development/sidekiq_style_guide.md
+++ b/doc/development/sidekiq_style_guide.md
@@ -392,8 +392,12 @@ end
If a large number of background jobs get scheduled at once, queueing of jobs may
occur while jobs wait for a worker node to be become available. This is normal
and gives the system resilience by allowing it to gracefully handle spikes in
-traffic. Some jobs, however, are more sensitive to latency than others. Examples
-of these jobs include:
+traffic. Some jobs, however, are more sensitive to latency than others.
+
+In general, latency-sensitive jobs perform operations that a user could
+reasonably expect to happen synchronously, rather than asynchronously in a
+background worker. A common example is a write following an action. Examples of
+these jobs include:
1. A job which updates a merge request following a push to a branch.
1. A job which invalidates a cache of known branches for a project after a push
@@ -474,20 +478,28 @@ of reading a stale record is non-zero due to replicas potentially lagging behind
When the number of jobs that rely on the database increases, ensuring immediate data consistency
can put unsustainable load on the primary database server. We therefore added the ability to use
-[database load-balancing in Sidekiq workers](../administration/database_load_balancing.md#enable-the-load-balancer-for-sidekiq).
+[database load balancing for Sidekiq workers](../administration/database_load_balancing.md#load-balancing-for-sidekiq).
By configuring a worker's `data_consistency` field, we can then allow the scheduler to target read replicas
under several strategies outlined below.
## Trading immediacy for reduced primary load
-Not requiring immediate data consistency allows developers to decide to either:
+We require Sidekiq workers to make an explicit decision around whether they need to use the
+primary database node for all reads and writes, or whether reads can be served from replicas. This is
+enforced by a RuboCop rule, which ensures that the `data_consistency` field is set.
+
+When setting this field, consider the following trade-off:
- Ensure immediately consistent reads, but increase load on the primary database.
- Prefer read replicas to add relief to the primary, but increase the likelihood of stale reads that have to be retried.
-By default, any worker has a data consistency requirement of `:always`, so, as before, all
-database operations target the primary. To allow for reads to be served from replicas instead, we
-added two additional consistency modes: `:sticky` and `:delayed`.
+To maintain the same behavior compared to before this field was introduced, set it to `:always`, so
+database operations will only target the primary. Reasons for having to do so include workers
+that mostly or exclusively perform writes, or workers that read their own writes and who might run
+into data consistency issues should a stale record be read back from a replica. **Try to avoid
+these scenarios, since `:always` should be considered the exception, not the rule.**
+
+To allow for reads to be served from replicas, we added two additional consistency modes: `:sticky` and `:delayed`.
When you declare either `:sticky` or `:delayed` consistency, workers become eligible for database
load-balancing. In both cases, jobs are enqueued with a short delay.
@@ -504,7 +516,7 @@ they prefer read replicas and will wait for replicas to catch up:
| **Data Consistency** | **Description** |
|--------------|-----------------------------|
-| `:always` | The job is required to use the primary database (default). It should be used for workers that primarily perform writes or that have very strict requirements around reading their writes without suffering any form of delay. |
+| `:always` | The job is required to use the primary database (default). It should be used for workers that primarily perform writes or that have strict requirements around data consistency when reading their own writes. |
| `:sticky` | The job prefers replicas, but switches to the primary for writes or when encountering replication lag. It should be used for jobs that require to be executed as fast as possible but can sustain a small initial queuing delay. |
| `:delayed` | The job prefers replicas, but switches to the primary for writes. When encountering replication lag before the job starts, the job is retried once. If the replica is still not up to date on the next retry, it switches to the primary. It should be used for jobs where delaying execution further typically does not matter, such as cache expiration or web hooks execution. |
@@ -539,7 +551,7 @@ The `feature_flag` property does not allow the use of
This means that the feature flag cannot be toggled only for particular
projects, groups, or users, but instead, you can safely use [percentage of time rollout](../development/feature_flags/index.md).
Note that since we check the feature flag on both Sidekiq client and server, rolling out a 10% of the time,
-will likely results in 1% (0.1 [from client]*0.1 [from server]) of effective jobs using replicas.
+will likely results in 1% (`0.1` `[from client]*0.1` `[from server]`) of effective jobs using replicas.
Example:
@@ -968,8 +980,8 @@ Sidekiq jobs, please consider removing the worker in a major release only.
For the same reasons that removing workers is dangerous, care should be taken
when renaming queues.
-When renaming queues, use the `sidekiq_queue_migrate` helper migration method,
-as shown in this example:
+When renaming queues, use the `sidekiq_queue_migrate` helper migration method
+in a **post-deployment migration**:
```ruby
class MigrateTheRenamedSidekiqQueue < ActiveRecord::Migration[5.0]
@@ -985,3 +997,7 @@ class MigrateTheRenamedSidekiqQueue < ActiveRecord::Migration[5.0]
end
```
+
+You must rename the queue in a post-deployment migration not in a normal
+migration. Otherwise, it runs too early, before all the workers that
+schedule these jobs have stopped running. See also [other examples](post_deployment_migrations.md#use-cases).
diff --git a/doc/development/snowplow/index.md b/doc/development/snowplow/index.md
index 0bf4b9356e7..552249344c7 100644
--- a/doc/development/snowplow/index.md
+++ b/doc/development/snowplow/index.md
@@ -11,14 +11,14 @@ This guide provides an overview of how Snowplow works, and implementation detail
For more information about Product Intelligence, see:
- [Product Intelligence Guide](https://about.gitlab.com/handbook/product/product-intelligence-guide/)
-- [Usage Ping Guide](../usage_ping/index.md)
+- [Service Ping Guide](../service_ping/index.md)
More useful links:
- [Product Intelligence Direction](https://about.gitlab.com/direction/product-intelligence/)
-- [Data Analysis Process](https://about.gitlab.com/handbook/business-ops/data-team/#data-analysis-process/)
-- [Data for Product Managers](https://about.gitlab.com/handbook/business-ops/data-team/programs/data-for-product-managers/)
-- [Data Infrastructure](https://about.gitlab.com/handbook/business-ops/data-team/platform/infrastructure/)
+- [Data Analysis Process](https://about.gitlab.com/handbook/business-technology/data-team/#data-analysis-process/)
+- [Data for Product Managers](https://about.gitlab.com/handbook/business-technology/data-team/programs/data-for-product-managers/)
+- [Data Infrastructure](https://about.gitlab.com/handbook/business-technology/data-team/platform/infrastructure/)
## What is Snowplow
@@ -58,7 +58,7 @@ To enable Snowplow tracking on a self-managed instance:
1. Expand **Snowplow**.
-1. Select **Enable snowplow tracking** and enter your Snowplow configuration information. For example:
+1. Select **Enable Snowplow tracking** and enter your Snowplow configuration information. For example:
| Name | Value |
|--------------------|-------------------------------|
@@ -158,7 +158,7 @@ Snowplow JS adds many [web-specific parameters](https://docs.snowplowanalytics.c
## Implementing Snowplow JS (Frontend) tracking
-GitLab provides `Tracking`, an interface that wraps the [Snowplow JavaScript Tracker](https://docs.snowplowanalytics.com/docs/collecting-data/collecting-from-own-applications/javascript-trackers) for tracking custom events. The simplest way to use it is to add `data-` attributes to clickable elements and dropdowns. There is also a Vue mixin (exposing a `track` method), and the static method `Tracking.event`. Each of these requires at minimum a `category` and an `action`. You can provide additional [Structured event taxonomy](#structured-event-taxonomy) properties along with an `extra` object that accepts key-value pairs.
+GitLab provides `Tracking`, an interface that wraps the [Snowplow JavaScript Tracker](https://docs.snowplowanalytics.com/docs/collecting-data/collecting-from-own-applications/javascript-trackers/) for tracking custom events. The simplest way to use it is to add `data-` attributes to clickable elements and dropdowns. There is also a Vue mixin (exposing a `track` method), and the static method `Tracking.event`. Each of these requires at minimum a `category` and an `action`. You can provide additional [Structured event taxonomy](#structured-event-taxonomy) properties along with an `extra` object that accepts key-value pairs.
| field | type | default value | description |
|:-----------|:-------|:---------------------------|:---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
@@ -442,7 +442,7 @@ describe('MyFormTracking', () => {
## Implementing Snowplow Ruby (Backend) tracking
-GitLab provides `Gitlab::Tracking`, an interface that wraps the [Snowplow Ruby Tracker](https://docs.snowplowanalytics.com/docs/collecting-data/collecting-from-own-applications/ruby-tracker) for tracking custom events.
+GitLab provides `Gitlab::Tracking`, an interface that wraps the [Snowplow Ruby Tracker](https://docs.snowplowanalytics.com/docs/collecting-data/collecting-from-own-applications/ruby-tracker/) for tracking custom events.
Custom event tracking and instrumentation can be added by directly calling the `GitLab::Tracking.event` class method, which accepts the following arguments:
@@ -481,7 +481,7 @@ https://docs.gitlab.com/ee/development/testing_guide/best_practices.html#test-sn
### Performance
-We use the [AsyncEmitter](https://docs.snowplowanalytics.com/docs/collecting-data/collecting-from-own-applications/ruby-tracker/emitters/#the-asyncemitter-class) when tracking events, which allows for instrumentation calls to be run in a background thread. This is still an active area of development.
+We use the [AsyncEmitter](https://docs.snowplowanalytics.com/docs/collecting-data/collecting-from-own-applications/ruby-tracker//emitters/#the-asyncemitter-class) when tracking events, which allows for instrumentation calls to be run in a background thread. This is still an active area of development.
## Developing and testing Snowplow
@@ -549,13 +549,13 @@ Snowplow Micro is a Docker-based solution for testing frontend and backend event
update application_settings set snowplow_collector_hostname='localhost:9090', snowplow_enabled=true, snowplow_cookie_domain='.gitlab.com';
```
-1. Update `DEFAULT_SNOWPLOW_OPTIONS` in `app/assets/javascripts/tracking.js` to remove `forceSecureTracker: true`:
+1. Update `DEFAULT_SNOWPLOW_OPTIONS` in `app/assets/javascripts/tracking/index.js` to remove `forceSecureTracker: true`:
```diff
- diff --git a/app/assets/javascripts/tracking.js b/app/assets/javascripts/tracking.js
+ diff --git a/app/assets/javascripts/tracking/index.js b/app/assets/javascripts/tracking/index.js
index 0a1211d0a76..3b98c8f28f2 100644
- --- a/app/assets/javascripts/tracking.js
- +++ b/app/assets/javascripts/tracking.js
+ --- a/app/assets/javascripts/tracking/index.js
+ +++ b/app/assets/javascripts/tracking/index.js
@@ -7,7 +7,6 @@ const DEFAULT_SNOWPLOW_OPTIONS = {
appId: '',
userFingerprint: false,
diff --git a/doc/development/snowplow/review_guidelines.md b/doc/development/snowplow/review_guidelines.md
new file mode 100644
index 00000000000..285fbc3b44b
--- /dev/null
+++ b/doc/development/snowplow/review_guidelines.md
@@ -0,0 +1,43 @@
+---
+stage: Growth
+group: Product Intelligence
+info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://about.gitlab.com/handbook/engineering/ux/technical-writing/#assignments
+---
+
+# Snowplow review guidelines
+
+This page includes introductory material for a
+[Product Intelligence](https://about.gitlab.com/handbook/engineering/development/growth/product-intelligence/)
+review, and is specific to Snowplow related reviews. For broader advice and
+general best practices for code reviews, refer to our [code review guide](../code_review.md).
+
+## Resources for reviewers
+
+- [Snowplow Guide](index.md)
+- [Event Dictionary](dictionary.md)
+
+## Review process
+
+We recommend a Product Intelligence review when a merge request (MR) involves changes in
+events or touches Snowplow related files.
+
+### Roles and process
+
+#### The merge request **author** should
+
+- For frontend events, when relevant, add a screenshot of the event in
+ the [testing tool](../snowplow/index.md#developing-and-testing-snowplow) used.
+- For backend events, when relevant, add the output of the
+ [Snowplow Micro](index.md#snowplow-mini) good events
+ `GET http://localhost:9090/micro/good` (it might be a good idea
+ to reset with `GET http://localhost:9090/micro/reset` first).
+- Update the [Event Dictionary](event_dictionary_guide.md).
+
+#### The Product Intelligence **reviewer** should
+
+- Check that the [event taxonomy](../snowplow/index.md#structured-event-taxonomy) is correct.
+- Check the [usage recommendations](../snowplow/index.md#usage-recommendations).
+- Check that the [Event Dictionary](event_dictionary_guide.md) is up-to-date.
+- If needed, check that the events are firing locally using one of the
+[testing tools](../snowplow/index.md#developing-and-testing-snowplow) available.
+- Approve the MR, and relabel the MR with `~"product intelligence::approved"`.
diff --git a/doc/development/sql.md b/doc/development/sql.md
index a98645cfcae..ddca88cb9bb 100644
--- a/doc/development/sql.md
+++ b/doc/development/sql.md
@@ -70,7 +70,7 @@ WHERE title ILIKE '%Draft:%';
Because the value for `ILIKE` starts with a wildcard the database is not able to
use an index as it doesn't know where to start scanning the indexes.
-Luckily, PostgreSQL _does_ provide a solution: trigram GIN indexes. These
+Luckily, PostgreSQL _does_ provide a solution: trigram Generalized Inverted Index (GIN) indexes. These
indexes can be created as follows:
```sql
@@ -261,9 +261,9 @@ from `ActiveRecord::Base`.
## Use UNIONs
-UNIONs aren't very commonly used in most Rails applications but they're very
-powerful and useful. In most applications queries tend to use a lot of JOINs to
-get related data or data based on certain criteria, but JOIN performance can
+`UNION`s aren't very commonly used in most Rails applications but they're very
+powerful and useful. Queries tend to use a lot of `JOIN`s to
+get related data or data based on certain criteria, but `JOIN` performance can
quickly deteriorate as the data involved grows.
For example, if you want to get a list of projects where the name contains a
@@ -279,7 +279,7 @@ OR namespaces.name ILIKE '%gitlab%';
```
Using a large database this query can easily take around 800 milliseconds to
-run. Using a UNION we'd write the following instead:
+run. Using a `UNION` we'd write the following instead:
```sql
SELECT projects.*
@@ -301,7 +301,7 @@ This doesn't mean you should start using UNIONs everywhere, but it's something
to keep in mind when using lots of JOINs in a query and filtering out records
based on the joined data.
-GitLab comes with a `Gitlab::SQL::Union` class that can be used to build a UNION
+GitLab comes with a `Gitlab::SQL::Union` class that can be used to build a `UNION`
of multiple `ActiveRecord::Relation` objects. You can use this class as
follows:
diff --git a/doc/development/stage_group_dashboards.md b/doc/development/stage_group_dashboards.md
index 277c12fc938..8d44b36bc4a 100644
--- a/doc/development/stage_group_dashboards.md
+++ b/doc/development/stage_group_dashboards.md
@@ -42,13 +42,8 @@ We're currently displaying the information in 2 formats:
1. Budget Spent: This shows the time over the past 28 days that
features owned by the group have not been performing adequately.
-We're still discussing which of these is more understandable, please
-contribute in
-[Scalability issue #946](https://gitlab.com/gitlab-com/gl-infra/scalability/-/issues/946)
-if you have thoughts on this topic.
-
The budget is calculated based on indicators per component. Each
-component has 2 indicators:
+component can have 2 indicators:
1. [Apdex](https://en.wikipedia.org/wiki/Apdex): The rate of
operations that performed adequately.
@@ -80,14 +75,44 @@ The calculation to a ratio then happens as follows:
\frac {operations\_meeting\_apdex + (total\_operations - operations\_with\_errors)} {total\_apdex\_measurements + total\_operations}
```
-*Caveat:* Not all components are included, causing the
-calculation to be less accurate for some groups. We're working on
-adding all components in
-[&437](https://gitlab.com/groups/gitlab-com/gl-infra/-/epics/437). This
-could cause the dashboard to display "No Data" for features with lower
-traffic.
+### Check where budget is being spent
+
+The row below the error budget row is collapsed by default. Expanding
+it shows which component and violation type had the most offending
+operations in the past 28 days.
+
+![Error attribution](img/stage_group_dashboards_error_attribution.png)
+
+The first panel on the left shows a table with the number of errors per
+component. Digging into the first row in that table is going to have
+the biggest impact on the budget spent.
+
+Commonly, the components spending most of the budget are Sidekiq or Puma. The panel in
+the center explains what these violation types mean, and how to dig
+deeper in the logs.
+
+The panel on the right provides links to Kibana that should reveal
+which endpoints or Sidekiq jobs are causing the errors.
+
+To learn how to use these panels and logs for
+determining which Rails endpoints are slow,
+see the [Error Budget Attribution for Purchase group](https://youtu.be/M9u6unON7bU) video.
+
+Other components visible in the table come from
+[service level indicators](https://sre.google/sre-book/service-level-objectives/) (SLIs) defined
+in the [metrics
+catalog](https://gitlab.com/gitlab-com/runbooks/-/blob/master/metrics-catalog/README.md).
+
+For those types of failures, you can follow the link to the service
+dashboard linked from the `type` column. The service dashboard
+contains a row specifically for the SLI that is causing the budget
+spent, with useful links to the logs and a description of what the
+component means. For example, see the `server` component of the
+`web-pages` service:
+
+![web-pages-server-component SLI](img/stage_group_dashboards_service_sli_detail.png)
-## Usage
+## Usage of the dasbhoard
Inside a stage group dashboard, there are some notable components. Let's take the [Source Code group's dashboard](https://dashboards.gitlab.net/d/stage-groups-source_code/stage-groups-group-dashboard-create-source-code?orgId=1) as an example.
diff --git a/doc/development/testing_guide/best_practices.md b/doc/development/testing_guide/best_practices.md
index c44e26927fe..e153fa9f334 100644
--- a/doc/development/testing_guide/best_practices.md
+++ b/doc/development/testing_guide/best_practices.md
@@ -513,14 +513,14 @@ Finished in 34.51 seconds (files took 0.76702 seconds to load)
#### Run `:js` spec in a visible browser
-Run the spec with `CHROME_HEADLESS=0`, like this:
+Run the spec with `WEBDRIVER_HEADLESS=0`, like this:
```shell
-CHROME_HEADLESS=0 bin/rspec some_spec.rb
+WEBDRIVER_HEADLESS=0 bin/rspec some_spec.rb
```
The test completes quickly, but this gives you an idea of what's happening.
-Using `live_debug` with `CHROME_HEADLESS=0` pauses the open browser, and does not
+Using `live_debug` with `WEBDRIVER_HEADLESS=0` pauses the open browser, and does not
open the page again. This can be used to debug and inspect elements.
You can also add `byebug` or `binding.pry` to pause execution and [step through](../pry_debugging.md#stepping)
diff --git a/doc/development/testing_guide/end_to_end/environment_selection.md b/doc/development/testing_guide/end_to_end/environment_selection.md
index bcdf0e104dd..2192d9c4ed4 100644
--- a/doc/development/testing_guide/end_to_end/environment_selection.md
+++ b/doc/development/testing_guide/end_to_end/environment_selection.md
@@ -1,68 +1,8 @@
---
-stage: none
-group: unassigned
-info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://about.gitlab.com/handbook/engineering/ux/technical-writing/#assignments
+redirect_to: 'execution_context_selection.md'
---
-# Environment selection
+This file was moved to [another location](execution_context_selection.md).
-Some tests are designed to be run against specific environments or [pipelines](https://about.gitlab.com/handbook/engineering/quality/guidelines/debugging-qa-test-failures/#scheduled-qa-test-pipelines).
-We can specify what environments or pipelines to run tests against using the `only` metadata.
-
-## Available switches
-
-| Switch | Function | Type |
-| -------| ------- | ----- |
-| `tld` | Set the top-level domain matcher | `String` |
-| `subdomain` | Set the subdomain matcher | `Array` or `String` |
-| `domain` | Set the domain matcher | `String` |
-| `production` | Match against production | `Static` |
-| `pipeline` | Match against a pipeline | `Array` or `Static`|
-
-WARNING:
-You cannot specify `:production` and `{ <switch>: 'value' }` simultaneously.
-These options are mutually exclusive. If you want to specify production, you
-can control the `tld` and `domain` independently.
-
-## Examples
-
-| Environment or pipeline | Key | Matches (regex for environments, string matching for pipelines) |
-| ---------------- | --- | --------------- |
-| `any` | `` | `.+.com` |
-| `gitlab.com` | `only: :production` | `gitlab.com` |
-| `staging.gitlab.com` | `only: { subdomain: :staging }` | `(staging).+.com` |
-| `gitlab.com and staging.gitlab.com` | `only: { subdomain: /(staging.)?/, domain: 'gitlab' }` | `(staging.)?gitlab.com` |
-| `dev.gitlab.org` | `only: { tld: '.org', domain: 'gitlab', subdomain: 'dev' }` | `(dev).gitlab.org` |
-| `staging.gitlab.com & domain.gitlab.com` | `only: { subdomain: %i[staging domain] }` | `(staging|domain).+.com` |
-| `nightly` | `only: { pipeline: :nightly }` | "nightly" |
-| `nightly`, `canary` | `only: { pipeline: [:nightly, :canary] }` | ["nightly"](https://gitlab.com/gitlab-org/quality/nightly) and ["canary"](https://gitlab.com/gitlab-org/quality/canary) |
-
-```ruby
-RSpec.describe 'Area' do
- it 'runs in any environment or pipeline' do; end
-
- it 'runs only in production environment', only: :production do; end
-
- it 'runs only in staging environment', only: { subdomain: :staging } do; end
-
- it 'runs in dev environment', only: { tld: '.org', domain: 'gitlab', subdomain: 'dev' } do; end
-
- it 'runs in prod and staging environments', only: { subdomain: /(staging.)?/, domain: 'gitlab' } {}
-
- it 'runs only in nightly pipeline', only: { pipeline: :nightly } do; end
-
- it 'runs in nightly and canary pipelines', only: { pipeline: [:nightly, :canary] } do; end
-end
-```
-
-If the test has a `before` or `after`, you must add the `only` metadata
-to the outer `RSpec.describe`.
-
-If you want to run an `only: { :pipeline }` tagged test on your local GDK make sure either the `CI_PROJECT_NAME` CI/CD variable is unset, or that the `CI_PROJECT_NAME` variable matches the specified pipeline in the `only: { :pipeline }` tag, or just delete the `only: { :pipeline }` tag.
-
-## Quarantining a test for a specific environment
-
-Similarly to specifying that a test should only run against a specific environment, it's also possible to quarantine a
-test only when it runs against a specific environment. The syntax is exactly the same, except that the `only: { ... }`
-hash is nested in the [`quarantine: { ... }`](https://about.gitlab.com/handbook/engineering/quality/guidelines/debugging-qa-test-failures/#quarantining-tests) hash.
-For instance, `quarantine: { only: { subdomain: :staging } }` only quarantines the test when run against staging.
+<!-- This redirect file can be deleted after <2021-08-14>. -->
+<!-- Before deletion, see: https://docs.gitlab.com/ee/development/documentation/#move-or-rename-a-page -->
diff --git a/doc/development/testing_guide/end_to_end/execution_context_selection.md b/doc/development/testing_guide/end_to_end/execution_context_selection.md
new file mode 100644
index 00000000000..8456cfa8314
--- /dev/null
+++ b/doc/development/testing_guide/end_to_end/execution_context_selection.md
@@ -0,0 +1,122 @@
+---
+stage: none
+group: unassigned
+info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://about.gitlab.com/handbook/engineering/ux/technical-writing/#assignments
+---
+
+# Execution context selection
+
+Some tests are designed to be run against specific environments, or in specific [pipelines](https://about.gitlab.com/handbook/engineering/quality/guidelines/debugging-qa-test-failures/#scheduled-qa-test-pipelines) or jobs. We can specify the test execution context using the `only` and `except` metadata.
+
+## Available switches
+
+| Switch | Function | Type |
+| -------| ------- | ----- |
+| `tld` | Set the top-level domain matcher | `String` |
+| `subdomain` | Set the subdomain matcher | `Array` or `String` |
+| `domain` | Set the domain matcher | `String` |
+| `production` | Match the production environment | `Static` |
+| `pipeline` | Match a pipeline | `Array` or `Static`|
+| `job` | Match a job | `Array` or `Static`|
+
+WARNING:
+You cannot specify `:production` and `{ <switch>: 'value' }` simultaneously.
+These options are mutually exclusive. If you want to specify production, you
+can control the `tld` and `domain` independently.
+
+## Examples
+
+### Only
+
+Run tests in only the specified context.
+
+Matches use:
+
+- Regex for environments.
+- String matching for pipelines.
+- Regex or string matching for jobs.
+
+| Test execution context | Key | Matches |
+| ---------------- | --- | --------------- |
+| `gitlab.com` | `only: :production` | `gitlab.com` |
+| `staging.gitlab.com` | `only: { subdomain: :staging }` | `(staging).+.com` |
+| `gitlab.com and staging.gitlab.com` | `only: { subdomain: /(staging.)?/, domain: 'gitlab' }` | `(staging.)?gitlab.com` |
+| `dev.gitlab.org` | `only: { tld: '.org', domain: 'gitlab', subdomain: 'dev' }` | `(dev).gitlab.org` |
+| `staging.gitlab.com and domain.gitlab.com` | `only: { subdomain: %i[staging domain] }` | `(staging\|domain).+.com` |
+| The `nightly` pipeline | `only: { pipeline: :nightly }` | "nightly" |
+| The `nightly` and `canary` pipelines | `only: { pipeline: [:nightly, :canary] }` | ["nightly"](https://gitlab.com/gitlab-org/quality/nightly) and ["canary"](https://gitlab.com/gitlab-org/quality/canary) |
+| The `ee:instance` job | `only: { job: 'ee:instance' }` | The `ee:instance` job in any pipeline |
+| Any `quarantine` job | `only: { job: '.*quarantine' }` | Any job ending in `quarantine` in any pipeline |
+
+```ruby
+RSpec.describe 'Area' do
+ it 'runs in any environment or pipeline' do; end
+ it 'runs only in production environment', only: :production do; end
+
+ it 'runs only in staging environment', only: { subdomain: :staging } do; end
+
+ it 'runs in dev environment', only: { tld: '.org', domain: 'gitlab', subdomain: 'dev' } do; end
+
+ it 'runs in prod and staging environments', only: { subdomain: /(staging.)?/, domain: 'gitlab' } {}
+
+ it 'runs only in nightly pipeline', only: { pipeline: :nightly } do; end
+
+ it 'runs in nightly and canary pipelines', only: { pipeline: [:nightly, :canary] } do; end
+end
+```
+
+### Except
+
+Run tests in their typical contexts _except_ as specified.
+
+Matches use:
+
+- Regex for environments.
+- String matching for pipelines.
+- Regex or string matching for jobs.
+
+| Test execution context | Key | Matches |
+| ---------------- | --- | --------------- |
+| `gitlab.com` | `except: :production` | `gitlab.com` |
+| `staging.gitlab.com` | `except: { subdomain: :staging }` | `(staging).+.com` |
+| `gitlab.com and staging.gitlab.com` | `except: { subdomain: /(staging.)?/, domain: 'gitlab' }` | `(staging.)?gitlab.com` |
+| `dev.gitlab.org` | `except: { tld: '.org', domain: 'gitlab', subdomain: 'dev' }` | `(dev).gitlab.org` |
+| `staging.gitlab.com and domain.gitlab.com` | `except: { subdomain: %i[staging domain] }` | `(staging\|domain).+.com` |
+| The `nightly` pipeline | `except: { pipeline: :nightly }` | ["nightly"](https://gitlab.com/gitlab-org/quality/nightly) |
+| The `nightly` and `canary` pipelines | `except: { pipeline: [:nightly, :canary] }` | ["nightly"](https://gitlab.com/gitlab-org/quality/nightly) and ["canary"](https://gitlab.com/gitlab-org/quality/canary) |
+| The `ee:instance` job | `except: { job: 'ee:instance' }` | The `ee:instance` job in any pipeline |
+| Any `quarantine` job | `except: { job: '.*quarantine' }` | Any job ending in `quarantine` in any pipeline |
+
+```ruby
+RSpec.describe 'Area' do
+ it 'runs in any execution context except the production environment', except: :production do; end
+
+ it 'runs in any execution context except the staging environment', except: { subdomain: :staging } do; end
+
+ it 'runs in any execution context except the nightly pipeline', except: { pipeline: :nightly } do; end
+
+ it 'runs in any execution context except the ee:instance job', except: { job: 'ee:instance' } do; end
+end
+```
+
+## Usage notes
+
+If the test has a `before` or `after` block, you must add the `only` or `except` metadata to the outer `RSpec.describe` block.
+
+To run a test tagged with `only` on your local GitLab instance, you can do one of the following:
+
+- Make sure you **do not** have the `CI_PROJECT_NAME` or `CI_JOB_NAME` environment variables set.
+- Set the appropriate variable to match the metadata. For example, if the metadata is `only: { pipeline: :nightly }` then set `CI_PROJECT_NAME=nightly`. If the metadata is `only: { job: 'ee:instance' }` then set `CI_JOB_NAME=ee:instance`.
+- Temporarily remove the metadata.
+
+To run a test tagged with `except` locally, you can either:
+
+- Make sure you **do not** have the `CI_PROJECT_NAME` or `CI_JOB_NAME` environment variables set.
+- Temporarily remove the metadata.
+
+## Quarantine a test for a specific environment
+
+Similarly to specifying that a test should only run against a specific environment, it's also possible to quarantine a
+test only when it runs against a specific environment. The syntax is exactly the same, except that the `only: { ... }`
+hash is nested in the [`quarantine: { ... }`](https://about.gitlab.com/handbook/engineering/quality/guidelines/debugging-qa-test-failures/#quarantining-tests) hash.
+For example, `quarantine: { only: { subdomain: :staging } }` only quarantines the test when run against `staging`.
diff --git a/doc/development/testing_guide/end_to_end/index.md b/doc/development/testing_guide/end_to_end/index.md
index 6ab288b0525..eca649b73a5 100644
--- a/doc/development/testing_guide/end_to_end/index.md
+++ b/doc/development/testing_guide/end_to_end/index.md
@@ -23,13 +23,13 @@ a black-box testing framework for the API and the UI.
We run scheduled pipelines each night to test nightly builds created by Omnibus.
You can find these pipelines at <https://gitlab.com/gitlab-org/quality/nightly/pipelines>
-(need Developer access permissions). Results are reported in the `#qa-nightly` Slack channel.
+(requires the Developer role). Results are reported in the `#qa-nightly` Slack channel.
### Testing staging
We run scheduled pipelines each night to test staging.
You can find these pipelines at <https://gitlab.com/gitlab-org/quality/staging/pipelines>
-(need Developer access permissions). Results are reported in the `#qa-staging` Slack channel.
+(requires the Developer role). Results are reported in the `#qa-staging` Slack channel.
### Testing code in merge requests
@@ -100,7 +100,7 @@ You may have noticed that we use `gitlab-org/build/omnibus-gitlab-mirror` instea
This is due to technical limitations in the GitLab permission model: the ability to run a pipeline
against a protected branch is controlled by the ability to push/merge to this branch.
This means that for developers to be able to trigger a pipeline for the default branch in
-`gitlab-org/omnibus-gitlab`/`gitlab-org/gitlab-qa`, they would need to have the
+`gitlab-org/omnibus-gitlab`/`gitlab-org/gitlab-qa`, they would need to have the
[Maintainer role](../../../user/permissions.md) for those projects.
For security reasons and implications, we couldn't open up the default branch to all the Developers.
Hence we created these mirrors where Developers and Maintainers are allowed to push/merge to the default branch.
@@ -212,6 +212,7 @@ Continued reading:
- [Testing with feature flags](feature_flags.md)
- [Flows](flows.md)
- [RSpec metadata/tags](rspec_metadata_tests.md)
+- [Execution context selection](execution_context_selection.md)
## Where can I ask for help?
diff --git a/doc/development/testing_guide/end_to_end/resources.md b/doc/development/testing_guide/end_to_end/resources.md
index b6aef123c64..0819a2f7b54 100644
--- a/doc/development/testing_guide/end_to_end/resources.md
+++ b/doc/development/testing_guide/end_to_end/resources.md
@@ -50,7 +50,7 @@ create the resource via the public GitLab API:
- `#api_post_path`: The `POST` path to create a new resource.
- `#api_post_body`: The `POST` body (as a Ruby hash) to create a new resource.
-> Be aware that many API resources are [paginated](../../../api/README.md#pagination).
+> Be aware that many API resources are [paginated](../../../api/index.md#pagination).
> If you don't find the results you expect, check if there is more that one page of results.
Let's take the `Shirt` resource class, and add these three API methods:
diff --git a/doc/development/testing_guide/end_to_end/rspec_metadata_tests.md b/doc/development/testing_guide/end_to_end/rspec_metadata_tests.md
index 8a929737ebe..7f541f1be3f 100644
--- a/doc/development/testing_guide/end_to_end/rspec_metadata_tests.md
+++ b/doc/development/testing_guide/end_to_end/rspec_metadata_tests.md
@@ -14,6 +14,7 @@ This is a partial list of the [RSpec metadata](https://relishapp.com/rspec/rspec
| Tag | Description |
|-----|-------------|
| `:elasticsearch` | The test requires an Elasticsearch service. It is used by the [instance-level scenario](https://gitlab.com/gitlab-org/gitlab-qa#definitions) [`Test::Integration::Elasticsearch`](https://gitlab.com/gitlab-org/gitlab/-/blob/72b62b51bdf513e2936301cb6c7c91ec27c35b4d/qa/qa/ee/scenario/test/integration/elasticsearch.rb) to include only tests that require Elasticsearch. |
+| `:except` | The test is to be run in their typical execution contexts _except_ as specified. See [test execution context selection](execution_context_selection.md) for more information. |
| `:geo` | The test requires two GitLab Geo instances - a primary and a secondary - to be spun up. |
| `:gitaly_cluster` | The test runs against a GitLab instance where repositories are stored on redundant Gitaly nodes behind a Praefect node. All nodes are [separate containers](../../../administration/gitaly/praefect.md#requirements-for-configuring-a-gitaly-cluster). Tests that use this tag have a longer setup time since there are three additional containers that need to be started. |
| `:github` | The test requires a GitHub personal access token. |
@@ -26,10 +27,10 @@ This is a partial list of the [RSpec metadata](https://relishapp.com/rspec/rspec
| `:ldap_tls` | The test requires a GitLab instance to be configured to use an external LDAP server with TLS enabled. |
| `:mattermost` | The test requires a GitLab Mattermost service on the GitLab instance. |
| `:object_storage` | The test requires a GitLab instance to be configured to use multiple [object storage types](../../../administration/object_storage.md). Uses MinIO as the object storage server. |
-| `:only` | The test is only to be run against specific environments or pipelines. See [Environment selection](environment_selection.md) for more information. |
+| `:only` | The test is only to be run in specific execution contexts. See [test execution context selection](execution_context_selection.md) for more information. |
| `:orchestrated` | The GitLab instance under test may be [configured by `gitlab-qa`](https://gitlab.com/gitlab-org/gitlab-qa/-/blob/master/docs/what_tests_can_be_run.md#orchestrated-tests) to be different to the default GitLab configuration, or `gitlab-qa` may launch additional services in separate Docker containers, or both. Tests tagged with `:orchestrated` are excluded when testing environments where we can't dynamically modify the GitLab configuration (for example, Staging). |
| `:packages` | The test requires a GitLab instance that has the [Package Registry](../../../administration/packages/#gitlab-package-registry-administration) enabled. |
-| `:quarantine` | The test has been [quarantined](https://about.gitlab.com/handbook/engineering/quality/guidelines/debugging-qa-test-failures/#quarantining-tests), runs in a separate job that only includes quarantined tests, and is allowed to fail. The test is skipped in its regular job so that if it fails it doesn't hold up the pipeline. Note that you can also [quarantine a test only when it runs against specific environment](environment_selection.md#quarantining-a-test-for-a-specific-environment). |
+| `:quarantine` | The test has been [quarantined](https://about.gitlab.com/handbook/engineering/quality/guidelines/debugging-qa-test-failures/#quarantining-tests), runs in a separate job that only includes quarantined tests, and is allowed to fail. The test is skipped in its regular job so that if it fails it doesn't hold up the pipeline. Note that you can also [quarantine a test only when it runs in a specific context](execution_context_selection.md#quarantine-a-test-for-a-specific-environment). |
| `:relative_url` | The test requires a GitLab instance to be installed under a [relative URL](../../../install/relative_url.md). |
| `:reliable` | The test has been [promoted to a reliable test](https://about.gitlab.com/handbook/engineering/quality/guidelines/reliable-tests/#promoting-an-existing-test-to-reliable) meaning it passes consistently in all pipelines, including merge requests. |
| `:repository_storage` | The test requires a GitLab instance to be configured to use multiple [repository storage paths](../../../administration/repository_storage_paths.md). Paired with the `:orchestrated` tag. |
diff --git a/doc/development/testing_guide/end_to_end/running_tests_that_require_special_setup.md b/doc/development/testing_guide/end_to_end/running_tests_that_require_special_setup.md
index 859b8f950e3..f200d6c682a 100644
--- a/doc/development/testing_guide/end_to_end/running_tests_that_require_special_setup.md
+++ b/doc/development/testing_guide/end_to_end/running_tests_that_require_special_setup.md
@@ -27,7 +27,7 @@ docker run \
To run the tests from the `/qa` directory:
```shell
-CHROME_HEADLESS=false bin/qa Test::Instance::All http://localhost -- qa/specs/features/ee/browser_ui/3_create/jenkins/jenkins_build_status_spec.rb
+WEBDRIVER_HEADLESS=false bin/qa Test::Instance::All http://localhost -- qa/specs/features/ee/browser_ui/3_create/jenkins/jenkins_build_status_spec.rb
```
The test automatically spins up a Docker container for Jenkins and tear down once the test completes.
@@ -131,7 +131,7 @@ sudo nginx -s reload
You could then run the tests from the `/qa` directory:
```shell
-CHROME_HEADLESS=false bin/qa Test::Instance::All http://gitlab-gitaly-cluster.test -- --tag gitaly_cluster
+WEBDRIVER_HEADLESS=false bin/qa Test::Instance::All http://gitlab-gitaly-cluster.test -- --tag gitaly_cluster
```
Once you have finished testing you can stop and remove the Docker containers:
@@ -160,13 +160,13 @@ You might see NGINX issues when you run `gdk start` or `gdk restart`. In that ca
Navigate to the folder in `/your-gdk/gitlab/qa` and issue the command:
```shell
-QA_DEBUG=true CHROME_HEADLESS=false GITLAB_ADMIN_USERNAME=rootusername GITLAB_ADMIN_PASSWORD=rootpassword GITLAB_QA_ACCESS_TOKEN=your_token_here GITLAB_QA_ADMIN_ACCESS_TOKEN=your_token_here CLUSTER_API_URL=https://kubernetes.docker.internal:6443 bundle exec bin/qa Test::Instance::All https://[YOUR-PORT].qa-tunnel.gitlab.info/ -- qa/specs/features/browser_ui/8_monitor/all_monitor_core_features_spec.rb --tag kubernetes --tag orchestrated --tag requires_admin
+QA_DEBUG=true WEBDRIVER_HEADLESS=false GITLAB_ADMIN_USERNAME=rootusername GITLAB_ADMIN_PASSWORD=rootpassword GITLAB_QA_ACCESS_TOKEN=your_token_here GITLAB_QA_ADMIN_ACCESS_TOKEN=your_token_here CLUSTER_API_URL=https://kubernetes.docker.internal:6443 bundle exec bin/qa Test::Instance::All https://[YOUR-PORT].qa-tunnel.gitlab.info/ -- qa/specs/features/browser_ui/8_monitor/all_monitor_core_features_spec.rb --tag kubernetes --tag orchestrated --tag requires_admin
```
The following includes more information on the command:
-`QA_DEBUG` - Set to `true` to verbosely log page object actions.
--`CHROME_HEADLESS` - When running locally, set to `false` to allow Chrome tests to be visible - watch your tests being run.
+-`WEBDRIVER_HEADLESS` - When running locally, set to `false` to allow browser tests to be visible - watch your tests being run.
-`GITLAB_ADMIN_USERNAME` - Admin username to use when adding a license.
-`GITLAB_ADMIN_PASSWORD` - Admin password to use when adding a license.
-`GITLAB_QA_ACCESS_TOKEN` and `GITLAB_QA_ADMIN_ACCESS_TOKEN` - A valid personal access token with the `api` scope. This is used for API access during tests, and is used in the version that staging is currently running. The `ADMIN_ACCESS_TOKEN` is from a user with admin access. Used for API access as an admin during tests.
@@ -279,7 +279,7 @@ Geo end-to-end tests can run locally against a [Geo GDK setup](https://gitlab.co
Run from the [`qa/` directory](https://gitlab.com/gitlab-org/gitlab/-/blob/f7272b77e80215c39d1ffeaed27794c220dbe03f/qa) with both GDK Geo primary and Geo secondary instances running:
```shell
-CHROME_HEADLESS=false bundle exec bin/qa QA::EE::Scenario::Test::Geo --primary-address http://localhost:3001 --secondary-address http://localhost:3002 --without-setup
+WEBDRIVER_HEADLESS=false bundle exec bin/qa QA::EE::Scenario::Test::Geo --primary-address http://localhost:3001 --secondary-address http://localhost:3002 --without-setup
```
### Using Geo in Docker
@@ -455,7 +455,7 @@ To run the LDAP tests on your local with TLS enabled, follow these steps:
1. Run an LDAP test from [`gitlab/qa`](https://gitlab.com/gitlab-org/gitlab/-/tree/d5447ebb5f99d4c72780681ddf4dc25b0738acba/qa) directory:
```shell
- GITLAB_LDAP_USERNAME="tanuki" GITLAB_LDAP_PASSWORD="password" QA_DEBUG=true CHROME_HEADLESS=false bin/qa Test::Instance::All https://gitlab.test qa/specs/features/browser_ui/1_manage/login/log_into_gitlab_via_ldap_spec.rb
+ GITLAB_LDAP_USERNAME="tanuki" GITLAB_LDAP_PASSWORD="password" QA_DEBUG=true WEBDRIVER_HEADLESS=false bin/qa Test::Instance::All https://gitlab.test qa/specs/features/browser_ui/1_manage/login/log_into_gitlab_via_ldap_spec.rb
```
### Running LDAP tests with TLS disabled
@@ -483,5 +483,5 @@ To run the LDAP tests on your local with TLS disabled, follow these steps:
1. Run an LDAP test from [`gitlab/qa`](https://gitlab.com/gitlab-org/gitlab/-/tree/d5447ebb5f99d4c72780681ddf4dc25b0738acba/qa) directory:
```shell
- GITLAB_LDAP_USERNAME="tanuki" GITLAB_LDAP_PASSWORD="password" QA_DEBUG=true CHROME_HEADLESS=false bin/qa Test::Instance::All http://localhost qa/specs/features/browser_ui/1_manage/login/log_into_gitlab_via_ldap_spec.rb
+ GITLAB_LDAP_USERNAME="tanuki" GITLAB_LDAP_PASSWORD="password" QA_DEBUG=true WEBDRIVER_HEADLESS=false bin/qa Test::Instance::All http://localhost qa/specs/features/browser_ui/1_manage/login/log_into_gitlab_via_ldap_spec.rb
```
diff --git a/doc/development/testing_guide/frontend_testing.md b/doc/development/testing_guide/frontend_testing.md
index 8573fa81718..d8f3a18577f 100644
--- a/doc/development/testing_guide/frontend_testing.md
+++ b/doc/development/testing_guide/frontend_testing.md
@@ -221,8 +221,8 @@ When it comes to querying DOM elements in your tests, it is best to uniquely and
the element.
Preferentially, this is done by targeting what the user actually sees using [DOM Testing Library](https://testing-library.com/docs/dom-testing-library/intro/).
-When selecting by text it is best to use the [`byRole`](https://testing-library.com/docs/queries/byrole) query
-as it helps enforce accessibility best practices. `findByRole` and the other [DOM Testing Library queries](https://testing-library.com/docs/queries/about) are available when using [`shallowMountExtended` or `mountExtended`](#shallowmountextended-and-mountextended).
+When selecting by text it is best to use the [`byRole`](https://testing-library.com/docs/queries/byrole/) query
+as it helps enforce accessibility best practices. `findByRole` and the other [DOM Testing Library queries](https://testing-library.com/docs/queries/about/) are available when using [`shallowMountExtended` or `mountExtended`](#shallowmountextended-and-mountextended).
When writing Vue component unit tests, it can be wise to query children by component, so that the unit test can focus on comprehensive value coverage
rather than dealing with the complexity of a child component's behavior.
@@ -891,14 +891,13 @@ describe GraphQL::Query, type: :request do
include GraphqlHelpers
all_releases_query_path = 'releases/graphql/queries/all_releases.query.graphql'
- fragment_paths = ['releases/graphql/fragments/release.fragment.graphql']
before(:all) do
clean_frontend_fixtures('graphql/releases/')
end
it "graphql/#{all_releases_query_path}.json" do
- query = get_graphql_query_as_string(all_releases_query_path, fragment_paths)
+ query = get_graphql_query_as_string(all_releases_query_path)
post_graphql(query, current_user: admin, variables: { fullPath: project.full_path })
@@ -910,10 +909,6 @@ end
This will create a new fixture located at
`tmp/tests/frontend/fixtures-ee/graphql/releases/graphql/queries/all_releases.query.graphql.json`.
-You will need to provide the paths to all fragments used by the query.
-`get_graphql_query_as_string` reads all of the provided file paths and returns
-the result as a single, concatenated string.
-
You can import the JSON fixture in a Jest test using the `getJSONFixture` method
[as described below](#use-fixtures).
@@ -1152,7 +1147,7 @@ Both functions run `callback` on the next tick after the requests finish (using
### `shallowMountExtended` and `mountExtended`
The `shallowMountExtended` and `mountExtended` utilities provide you with the ability to perform
-any of the available [DOM Testing Library queries](https://testing-library.com/docs/queries/about)
+any of the available [DOM Testing Library queries](https://testing-library.com/docs/queries/about/)
by prefixing them with `find` or `findAll`.
```javascript
diff --git a/doc/development/testing_guide/index.md b/doc/development/testing_guide/index.md
index c22a4e0b3ad..889dc45d6e3 100644
--- a/doc/development/testing_guide/index.md
+++ b/doc/development/testing_guide/index.md
@@ -70,4 +70,4 @@ Everything you should know about how to run end-to-end tests using
Everything you should know about how to test migrations.
-[Return to Development documentation](../README.md)
+[Return to Development documentation](../index.md)
diff --git a/doc/development/understanding_explain_plans.md b/doc/development/understanding_explain_plans.md
index f9d1e7e2eee..c3fefd40171 100644
--- a/doc/development/understanding_explain_plans.md
+++ b/doc/development/understanding_explain_plans.md
@@ -825,3 +825,5 @@ For more information about the available options, run:
A more extensive guide on understanding query plans can be found in
the [presentation](https://public.dalibo.com/exports/conferences/_archives/_2012/201211_explain/understanding_explain.pdf)
from [Dalibo.org](https://www.dalibo.com/en/).
+
+Depesz's blog also has a good [section](https://www.depesz.com/tag/unexplainable) dedicated to query plans.
diff --git a/doc/development/usage_ping.md b/doc/development/usage_ping.md
deleted file mode 100644
index 567a2d41c33..00000000000
--- a/doc/development/usage_ping.md
+++ /dev/null
@@ -1,9 +0,0 @@
----
-redirect_to: 'usage_ping/index.md'
-remove_date: '2021-05-23'
----
-
-This document was moved to [another location](usage_ping/index.md).
-
-<!-- This redirect file can be deleted after <2021-05-23>. -->
-<!-- Before deletion, see: https://docs.gitlab.com/ee/development/documentation/#move-or-rename-a-page --> \ No newline at end of file
diff --git a/doc/development/usage_ping/dictionary.md b/doc/development/usage_ping/dictionary.md
index e76fb302b9c..934bdf9c808 100644
--- a/doc/development/usage_ping/dictionary.md
+++ b/doc/development/usage_ping/dictionary.md
@@ -42,6 +42,8 @@ The number of active users existing in the instance. This is named the instance_
Group: `group::product intelligence`
+Data Category: `Subscription`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -54,6 +56,8 @@ Unique visitors to any analytics feature by week
Group: `group::optimize`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`
@@ -66,6 +70,8 @@ Unique visitors to any analytics feature by month
Group: `group::optimize`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`
@@ -78,6 +84,8 @@ Unique visitors to /groups/:group/-/contribution_analytics
Group: `group::optimize`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`
@@ -90,6 +98,8 @@ Unique visitors to /groups/:group/-/insights
Group: `group::optimize`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`
@@ -102,6 +112,8 @@ Unique visitors to /groups/:group/-/issues_analytics
Group: `group::optimize`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`
@@ -114,6 +126,8 @@ Unique visitors to /groups/:group/-/analytics/merge_request_analytics
Group: `group::optimize`
+Data Category: `Optional`
+
Status: `removed`
Tiers: `free`
@@ -126,6 +140,8 @@ Unique visitors to /groups/:group/-/analytics/productivity_analytics
Group: `group::optimize`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`
@@ -138,6 +154,8 @@ Unique visitors to /groups/:group/-/analytics/value_stream_analytics
Group: `group::optimize`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`
@@ -150,6 +168,8 @@ Unique visitors to /-/instance_statistics/cohorts
Group: `group::optimize`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`
@@ -162,6 +182,8 @@ Missing description
Group: ``
+Data Category: `Optional`
+
Status: `data_available`
Tiers:
@@ -174,6 +196,8 @@ Unique visitors to /-/instance_statistics/dev_ops_score
Group: `group::optimize`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`
@@ -186,6 +210,8 @@ Unique visitors to/admin/usage_trends
Group: `group::optimize`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`
@@ -198,6 +224,8 @@ Unique visitors to /:group/:project/-/analytics/code_reviews
Group: `group::optimize`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`
@@ -210,6 +238,8 @@ Unique visitors to /:group/:project/insights
Group: `group::optimize`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`
@@ -222,6 +252,8 @@ Unique visitors to /:group/:project/-/analytics/issues_analytics
Group: `group::optimize`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`
@@ -234,6 +266,8 @@ Unique visitors to /:group/:project/-/analytics/merge_request_analytics
Group: `group::optimize`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`
@@ -246,6 +280,8 @@ Unique visitors to /:group/:project/pipelines/charts
Group: `group::optimize`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`
@@ -258,6 +294,8 @@ Unique visitors to /:group/:project/-/graphs/master/charts
Group: `group::optimize`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`
@@ -270,6 +308,8 @@ Unique visitors to /:group/:project/-/value_stream_analytics
Group: `group::optimize`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`
@@ -282,93 +322,109 @@ Missing description
Group: ``
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
### `compliance_unique_visits.a_compliance_audit_events_api`
-Missing description
+Unique users that have used the Audit Events API.
-[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216183912_a_compliance_audit_events_api.yml)
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_all/20210216183912_a_compliance_audit_events_api.yml)
-Group: ``
+Group: `group::compliance`
+
+Data Category: `Optional`
Status: `data_available`
-Tiers: `free`
+Tiers: `premium`, `ultimate`
### `compliance_unique_visits.compliance_unique_visits_for_any_target`
-Missing description
+Number of unique visits to any compliance page
-[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216183914_compliance_unique_visits_for_any_target.yml)
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_all/20210216183914_compliance_unique_visits_for_any_target.yml)
-Group: ``
+Group: `group::compliance`
+
+Data Category: `Optional`
Status: `data_available`
-Tiers: `free`
+Tiers: `premium`, `ultimate`
### `compliance_unique_visits.compliance_unique_visits_for_any_target_monthly`
-Missing description
+Number of unique visits to any compliance page over a given month
-[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216183916_compliance_unique_visits_for_any_target_monthly.yml)
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_28d/20210216183916_compliance_unique_visits_for_any_target_monthly.yml)
-Group: ``
+Group: `group::compliance`
+
+Data Category: `Optional`
Status: `data_available`
-Tiers: `free`
+Tiers: `premium`, `ultimate`
### `compliance_unique_visits.g_compliance_audit_events`
-Missing description
+Unique users who have viewed audit events
-[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216183906_g_compliance_audit_events.yml)
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_all/20210216183906_g_compliance_audit_events.yml)
-Group: ``
+Group: `group::compliance`
+
+Data Category: `Optional`
Status: `data_available`
-Tiers: `free`
+Tiers: `premium`, `ultimate`
### `compliance_unique_visits.g_compliance_dashboard`
-Missing description
+Number of unique visitors to the compliance dashboard.
-[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216183904_g_compliance_dashboard.yml)
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_all/20210216183904_g_compliance_dashboard.yml)
-Group: ``
+Group: `group::compliance`
+
+Data Category: `Optional`
Status: `data_available`
-Tiers: `free`
+Tiers: `premium`, `ultimate`
### `compliance_unique_visits.i_compliance_audit_events`
-Missing description
+Unique users that have viewed the instance-level audit events screen
-[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216183908_i_compliance_audit_events.yml)
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_all/20210216183908_i_compliance_audit_events.yml)
-Group: ``
+Group: `group::compliance`
+
+Data Category: `Optional`
Status: `data_available`
-Tiers: `free`
+Tiers: `premium`, `ultimate`
### `compliance_unique_visits.i_compliance_credential_inventory`
-Missing description
+Unique users who have viewed the credential inventory
-[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216183910_i_compliance_credential_inventory.yml)
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_all/20210216183910_i_compliance_credential_inventory.yml)
-Group: ``
+Group: `group::compliance`
+
+Data Category: `Optional`
Status: `data_available`
-Tiers: `free`
+Tiers: `ultimate`
### `container_registry_enabled`
@@ -378,6 +434,8 @@ A count of projects where the container registry is enabled
Group: `group::package`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -390,6 +448,8 @@ Identifies if a user is using an external container registry and what type
Group: `group::package`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -402,6 +462,8 @@ Identifies the version of the external registry being used
Group: `group::package`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -412,7 +474,9 @@ Count of issues created by the alert bot automatically
[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216180449_alert_bot_incident_issues.yml)
-Group: `group::health`
+Group: `group::monitor`
+
+Data Category: `Optional`
Status: `data_available`
@@ -426,6 +490,8 @@ Total Searches for All Basic Search and Advanced Search in self-managed and SaaS
Group: `group::global search`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -438,6 +504,8 @@ Count of API Fuzzing `docker-in-docker` jobs run by job name
Group: `group::fuzz testing`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`
@@ -450,6 +518,8 @@ Count of API Fuzzing jobs run by job name
Group: `group::fuzz testing`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`
@@ -462,6 +532,8 @@ Count of assignee lists created on Boards
Group: `group::project management`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `premium`, `ultimate`
@@ -474,6 +546,8 @@ Projects with Auto DevOps template disabled
Group: `group::configure`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`
@@ -486,6 +560,8 @@ Projects with Auto DevOps template enabled (excluding implicit Auto DevOps enabl
Group: `group::configure`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -498,6 +574,8 @@ Count of Boards created
Group: `group::project management`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -510,6 +588,8 @@ Unique builds in project
Group: `group::pipeline execution`
+Data Category: `Operational`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -522,6 +602,8 @@ Total pipelines in external repositories
Group: `group::pipeline execution`
+Data Category: `Operational`
+
Status: `data_available`
Tiers: `free`
@@ -534,6 +616,8 @@ Total pipelines in GitLab repositories
Group: `group::pipeline execution`
+Data Category: `Operational`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -546,6 +630,8 @@ Total pipelines from an Auto DevOps template
Group: `group::configure`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -558,6 +644,8 @@ Total Pipelines from templates in repository
Group: `group::pipeline execution`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -570,102 +658,120 @@ Pipeline schedules in GitLab
Group: `group::pipeline execution`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
### `counts.ci_runners`
-Total configured Runners in project
+Total configured Runners of all types
[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216175520_ci_runners.yml)
Group: `group::pipeline execution`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
### `counts.ci_runners_group_type_active`
-Total active instance Runners
+Total active Group Runners
[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210502050341_ci_runners_group_type_active.yml)
Group: `group::pipeline execution`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
### `counts.ci_runners_group_type_active_online`
-Total active and online group Runners
+Total active and online Group Runners
[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210502051922_ci_runners_group_type_active_online.yml)
Group: `group::pipeline execution`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
### `counts.ci_runners_instance_type_active`
-Total active group Runners
+Total active Shared (Instance) Runners
[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210502045402_ci_runners_instance_type_active.yml)
Group: `group::pipeline execution`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
### `counts.ci_runners_instance_type_active_online`
-Total active and online instance Runners
+Total active and online Shared (Instance) Runners
[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210502051651_ci_runners_instance_type_active_online.yml)
Group: `group::pipeline execution`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
### `counts.ci_runners_online`
-Total online Runners
+Total online Runners of all types
[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210502050942_ci_runners_online.yml)
Group: `group::pipeline execution`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
### `counts.ci_runners_project_type_active`
-Total active project Runners
+Total active Specific (Project) Runners
[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210502050834_ci_runners_project_type_active.yml)
Group: `group::pipeline execution`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
### `counts.ci_runners_project_type_active_online`
-Total active and online project Runners
+Total active and online Specific (Project) Runners
[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210502052036_ci_runners_project_type_active_online.yml)
Group: `group::pipeline execution`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -678,6 +784,8 @@ Total configured Triggers in project
Group: `group::pipeline execution`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -690,6 +798,8 @@ Total GitLab Managed clusters both enabled and disabled
Group: `group::configure`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -702,6 +812,8 @@ Total GitLab Managed clusters with GitLab Managed App:Cert Manager installed
Group: `group::configure`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -714,6 +826,8 @@ Total GitLab Managed clusters with GitLab Managed App:Cilium installed
Group: `group::configure`
+Data Category: `Operational`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -726,6 +840,8 @@ Total GitLab Managed clusters with GitLab Managed App:Crossplane installed
Group: `group::configure`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -738,6 +854,8 @@ Total GitLab Managed clusters with GitLab Managed App:Elastic Stack installed
Group: `group::configure`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -750,6 +868,8 @@ Total GitLab Managed clusters with GitLab Managed App:Helm enabled
Group: `group::configure`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -762,6 +882,8 @@ Total GitLab Managed clusters with GitLab Managed App:Ingress installed
Group: `group::configure`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -774,6 +896,8 @@ Total GitLab Managed clusters with GitLab Managed App:Jupyter installed
Group: `group::configure`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -786,6 +910,8 @@ Total GitLab Managed clusters with GitLab Managed App:Knative installed
Group: `group::configure`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -798,6 +924,8 @@ Total GitLab Managed clusters with GitLab Managed App:Prometheus installed
Group: `group::configure`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -810,6 +938,8 @@ Total GitLab Managed clusters with GitLab Managed App:Runner installed
Group: `group::configure`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -822,6 +952,8 @@ Number of Kubernetes clusters attached to GitLab currently disabled
Group: `group::configure`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -834,6 +966,8 @@ Number of Kubernetes clusters attached to GitLab currently enabled
Group: `group::configure`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -846,6 +980,8 @@ Total GitLab Managed clusters with defined cluster management project
Group: `group::configure`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -858,6 +994,8 @@ Total GitLab Managed clusters provisioned with GitLab on AWS EKS
Group: `group::configure`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -870,6 +1008,8 @@ Total GitLab Managed clusters provisioned with GitLab on GCE GKE
Group: `group::configure`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -882,6 +1022,8 @@ Total GitLab Managed clusters that are user provisioned
Group: `group::configure`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -894,6 +1036,8 @@ Count of total unique commit comments. Does not include MR diff comments
Group: `group::source code`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -906,6 +1050,8 @@ Count of confidential epics
Group: `group::product planning`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `premium`, `ultimate`
@@ -918,6 +1064,8 @@ Count of Container Scanning jobs run
Group: `group::container security`
+Data Category: `Operational`
+
Status: `data_available`
Tiers: `ultimate`
@@ -930,6 +1078,8 @@ Missing description
Group: ``
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`
@@ -942,6 +1092,8 @@ Total visits to VSA (both group- and project-level) all time
Group: `group::optimize`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -954,6 +1106,8 @@ Count of DAST jobs run
Group: `group::dynamic analysis`
+Data Category: `Operational`
+
Status: `data_available`
Tiers: `free`
@@ -966,6 +1120,8 @@ Missing description
Group: ``
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`
@@ -978,6 +1134,8 @@ Count to Dependency List page views
Group: `group::composition analysis`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `ultimate`
@@ -990,6 +1148,8 @@ Count of Dependency Scanning jobs run
Group: `group::composition analysis`
+Data Category: `Operational`
+
Status: `data_available`
Tiers: `ultimate`
@@ -1002,6 +1162,8 @@ Missing description
Group: `group::release`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`
@@ -1014,6 +1176,8 @@ Total deployments count
Group: `group::ops release`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -1026,6 +1190,8 @@ Number of designs that were created
Group: `group::product planning`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -1038,6 +1204,8 @@ Number of designs that were deleted
Group: `group::product planning`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -1050,6 +1218,8 @@ Number of updates to designs
Group: `group::product planning`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -1062,6 +1232,8 @@ Total available and stopped environments
Group: `group::release`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`
@@ -1074,6 +1246,8 @@ Count of issues that are assigned to an epic
Group: `group::product planning`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `premium`, `ultimate`
@@ -1086,6 +1260,8 @@ Count of all epics
Group: `group::product planning`
+Data Category: `Operational`
+
Status: `data_available`
Tiers: `premium`, `ultimate`
@@ -1098,6 +1274,8 @@ Count of the deepest relationship level for epics
Group: `group::product planning`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `ultimate`
@@ -1110,6 +1288,8 @@ Total failed deployments
Group: `group::release`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`
@@ -1122,6 +1302,8 @@ Number of feature flag toggles
Group: `group::progressive delivery`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`
@@ -1134,6 +1316,8 @@ Number of replication events on a Geo primary
Group: `group::geo`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `premium`, `ultimate`
@@ -1146,6 +1330,8 @@ Total number of sites in a Geo deployment
Group: `group::geo`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `premium`, `ultimate`
@@ -1158,6 +1344,8 @@ Total Grafana integrations attached to projects
Group: `group::monitor`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`
@@ -1170,6 +1358,8 @@ Total GitLab Managed disabled clusters previously attached to groups
Group: `group::configure`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -1182,6 +1372,8 @@ Total GitLab Managed clusters attached to groups
Group: `group::configure`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -1194,6 +1386,8 @@ Total count of groups as of usage ping snapshot
Group: `group::access`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -1206,6 +1400,8 @@ Count of groups with active integrations for Asana
Group: `group::ecosystem`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -1218,6 +1414,8 @@ Count of groups with active integrations for Assembla
Group: `group::ecosystem`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -1230,6 +1428,8 @@ Count of groups with active integrations for Bamboo CI
Group: `group::ecosystem`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -1242,6 +1442,8 @@ Count of groups with active integrations for Bugzilla
Group: `group::ecosystem`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -1254,6 +1456,8 @@ Count of groups with active integrations for Buildkite
Group: `group::ecosystem`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -1266,6 +1470,8 @@ Count of groups with active integrations for Campfire
Group: `group::ecosystem`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -1278,6 +1484,8 @@ Count of groups with active integrations for Confluence
Group: `group::ecosystem`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -1290,6 +1498,8 @@ Count of groups with active integrations for a Custom Issue Tracker
Group: `group::ecosystem`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -1302,6 +1512,8 @@ Count of groups with active integrations for Datadog
Group: `group::ecosystem`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -1314,6 +1526,8 @@ Count of groups with active integrations for Discord
Group: `group::ecosystem`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -1326,6 +1540,8 @@ Count of groups with active integrations for Drone CI
Group: `group::ecosystem`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -1338,6 +1554,8 @@ Count of groups with active integrations for Emails on Push
Group: `group::ecosystem`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -1350,6 +1568,8 @@ Count of groups with active integrations for EWM
Group: `group::ecosystem`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -1362,6 +1582,8 @@ Count of groups with active integrations for External Wiki
Group: `group::ecosystem`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -1374,6 +1596,8 @@ Count of groups with active integrations for Flowdock
Group: `group::ecosystem`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -1386,6 +1610,8 @@ Count of groups with active integrations for GitHub
Group: `group::ecosystem`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `premium`, `ultimate`
@@ -1398,6 +1624,8 @@ Count of groups with active integrations for Hangouts Chat
Group: `group::ecosystem`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -1410,6 +1638,8 @@ Count of groups with active integrations for HipChat
Group: `group::ecosystem`
+Data Category: `Optional`
+
Status: `removed`
Tiers: `free`, `premium`, `ultimate`
@@ -1422,6 +1652,8 @@ Count of active groups inheriting integrations for Asana
Group: `group::ecosystem`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -1434,6 +1666,8 @@ Count of active groups inheriting integrations for Assembla
Group: `group::ecosystem`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -1446,6 +1680,8 @@ Count of active groups inheriting integrations for Bamboo CI
Group: `group::ecosystem`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -1458,6 +1694,8 @@ Count of active groups inheriting integrations for Bugzilla
Group: `group::ecosystem`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -1470,6 +1708,8 @@ Count of active groups inheriting integrations for Buildkite
Group: `group::ecosystem`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -1482,6 +1722,8 @@ Count of active groups inheriting integrations for Campfire
Group: `group::ecosystem`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -1494,6 +1736,8 @@ Count of active groups inheriting integrations for Confluence
Group: `group::ecosystem`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -1506,6 +1750,8 @@ Count of active groups inheriting integrations for a Custom Issue Tracker
Group: `group::ecosystem`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -1518,6 +1764,8 @@ Count of active groups inheriting integrations for Datadog
Group: `group::ecosystem`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -1530,6 +1778,8 @@ Count of active groups inheriting integrations for Discord
Group: `group::ecosystem`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -1542,6 +1792,8 @@ Count of active groups inheriting integrations for Drone CI
Group: `group::ecosystem`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -1554,6 +1806,8 @@ Count of active groups inheriting integrations for Emails on Push
Group: `group::ecosystem`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -1566,6 +1820,8 @@ Count of active groups inheriting integrations for EWM
Group: `group::ecosystem`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -1578,6 +1834,8 @@ Count of active groups inheriting integrations for External Wiki
Group: `group::ecosystem`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -1590,6 +1848,8 @@ Count of active groups inheriting integrations for Flowdock
Group: `group::ecosystem`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -1602,6 +1862,8 @@ Count of active groups inheriting integrations for GitHub
Group: `group::ecosystem`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `premium`, `ultimate`
@@ -1614,6 +1876,8 @@ Count of active groups inheriting integrations for Hangouts Chat
Group: `group::ecosystem`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -1626,6 +1890,8 @@ Count of active groups inheriting integrations for HipChat
Group: `group::ecosystem`
+Data Category: `Optional`
+
Status: `removed`
Tiers: `free`, `premium`, `ultimate`
@@ -1638,6 +1904,8 @@ Count of active groups inheriting integrations for Irker
Group: `group::ecosystem`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -1650,6 +1918,8 @@ Count of active groups inheriting integrations for Jenkins
Group: `group::ecosystem`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -1662,6 +1932,8 @@ Count of active groups inheriting integrations for Jira
Group: `group::ecosystem`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -1674,6 +1946,8 @@ Count of active groups inheriting integrations for Mattermost
Group: `group::ecosystem`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -1686,6 +1960,8 @@ Count of active groups inheriting integrations for Mattermost (slash commands)
Group: `group::ecosystem`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -1698,6 +1974,8 @@ Count of active groups inheriting integrations for Microsoft Teams
Group: `group::ecosystem`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -1710,6 +1988,8 @@ Count of active groups inheriting integrations for Mock CI
Group: `group::ecosystem`
+Data Category: `Optional`
+
Status: `removed`
Tiers: `free`, `premium`, `ultimate`
@@ -1722,6 +2002,8 @@ Count of active groups inheriting integrations for Mock Monitoring
Group: `group::ecosystem`
+Data Category: `Optional`
+
Status: `removed`
Tiers: `free`, `premium`, `ultimate`
@@ -1734,6 +2016,8 @@ Count of active groups inheriting integrations for Packagist
Group: `group::ecosystem`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -1746,6 +2030,8 @@ Count of active groups inheriting integrations for Pipeline Emails
Group: `group::ecosystem`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -1758,6 +2044,8 @@ Count of active groups inheriting integrations for Pivotal Tracker
Group: `group::ecosystem`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -1770,6 +2058,8 @@ Count of active groups inheriting integrations for Prometheus
Group: `group::monitor`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -1782,6 +2072,8 @@ Count of active groups inheriting integrations for Pushover
Group: `group::ecosystem`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -1794,6 +2086,8 @@ Count of active groups inheriting integrations for Redmine
Group: `group::ecosystem`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -1806,6 +2100,8 @@ Count of active groups inheriting integrations for Slack
Group: `group::ecosystem`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -1818,6 +2114,8 @@ Count of active groups inheriting integrations for Slack (slash commands)
Group: `group::ecosystem`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -1830,6 +2128,8 @@ Count of active groups inheriting integrations for Teamcity CI
Group: `group::ecosystem`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -1842,6 +2142,8 @@ Count of active groups inheriting integrations for Unifiy Circuit
Group: `group::ecosystem`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -1854,6 +2156,8 @@ Count of active groups inheriting integrations for Webex Teams
Group: `group::ecosystem`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -1866,6 +2170,8 @@ Count of active groups inheriting integrations for YouTrack
Group: `group::ecosystem`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -1878,6 +2184,8 @@ Count of groups with active integrations for Irker
Group: `group::ecosystem`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -1890,6 +2198,8 @@ Count of groups with active integrations for Jenkins
Group: `group::ecosystem`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -1902,6 +2212,8 @@ Count of groups with active integrations for Jira
Group: `group::ecosystem`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -1914,6 +2226,8 @@ Count of groups with active integrations for Mattermost
Group: `group::ecosystem`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -1926,6 +2240,8 @@ Count of groups with active integrations for Mattermost (slash commands)
Group: `group::ecosystem`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -1938,6 +2254,8 @@ Count of groups with active integrations for Microsoft Teams
Group: `group::ecosystem`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -1950,6 +2268,8 @@ Count of groups with active integrations for Mock CI
Group: `group::ecosystem`
+Data Category: `Optional`
+
Status: `removed`
Tiers: `free`, `premium`, `ultimate`
@@ -1962,6 +2282,8 @@ Count of groups with active integrations for Mock Monitoring
Group: `group::ecosystem`
+Data Category: `Optional`
+
Status: `removed`
Tiers: `free`, `premium`, `ultimate`
@@ -1974,6 +2296,8 @@ Count of groups with active integrations for Packagist
Group: `group::ecosystem`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -1986,6 +2310,8 @@ Count of groups with active integrations for Pipeline Emails
Group: `group::ecosystem`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -1998,6 +2324,8 @@ Count of groups with active integrations for Pivotal Tracker
Group: `group::ecosystem`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -2010,6 +2338,8 @@ Count of groups with active integrations for Prometheus
Group: `group::monitor`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -2022,6 +2352,8 @@ Count of groups with active integrations for Pushover
Group: `group::ecosystem`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -2034,6 +2366,8 @@ Count of groups with active integrations for Redmine
Group: `group::ecosystem`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -2046,6 +2380,8 @@ Count of groups with active integrations for Slack
Group: `group::ecosystem`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -2058,6 +2394,8 @@ Count of groups with active integrations for Slack (slash commands)
Group: `group::ecosystem`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -2070,6 +2408,8 @@ Count of groups with active integrations for Teamcity CI
Group: `group::ecosystem`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -2082,6 +2422,8 @@ Count of groups with active integrations for Unifiy Circuit
Group: `group::ecosystem`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -2094,6 +2436,8 @@ Count of groups with active integrations for Webex Teams
Group: `group::ecosystem`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -2106,6 +2450,8 @@ Count of groups with active integrations for YouTrack
Group: `group::ecosystem`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -2118,6 +2464,8 @@ Total clicks on the create track's first email
Group: `group::activation`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -2130,6 +2478,8 @@ Total sent emails of the create track's first email
Group: `group::activation`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -2142,6 +2492,8 @@ Total clicks on the create track's second email
Group: `group::activation`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -2154,6 +2506,8 @@ Total sent emails of the create track's second email
Group: `group::activation`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -2166,6 +2520,8 @@ Total clicks on the create track's third email
Group: `group::activation`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -2178,6 +2534,8 @@ Total sent emails of the create track's third email
Group: `group::activation`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -2190,6 +2548,8 @@ Total sent emails of the experience track's first email
Group: `group::activation`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -2202,6 +2562,8 @@ Total clicks on the team track's first email
Group: `group::activation`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -2214,6 +2576,8 @@ Total sent emails of the team track's first email
Group: `group::activation`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -2226,6 +2590,8 @@ Total clicks on the team track's second email
Group: `group::activation`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -2238,6 +2604,8 @@ Total sent emails of the team track's second email
Group: `group::activation`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -2250,6 +2618,8 @@ Total clicks on the team track's third email
Group: `group::activation`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -2262,6 +2632,8 @@ Total sent emails of the team track's third email
Group: `group::activation`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -2274,6 +2646,8 @@ Total clicks on the verify trial's first email
Group: `group::activation`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -2286,6 +2660,8 @@ Total sent emails of the trial track's first email
Group: `group::activation`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -2298,6 +2674,8 @@ Total clicks on the trial track's second email
Group: `group::activation`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -2310,6 +2688,8 @@ Total sent emails of the trial track's second email
Group: `group::activation`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -2322,6 +2702,8 @@ Total clicks on the trial track's third email
Group: `group::activation`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -2334,6 +2716,8 @@ Total sent emails of the trial track's third email
Group: `group::activation`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -2346,6 +2730,8 @@ Total clicks on the verify track's first email
Group: `group::activation`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -2358,6 +2744,8 @@ Total sent emails of the verify track's first email
Group: `group::activation`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -2370,6 +2758,8 @@ Total clicks on the verify track's second email
Group: `group::activation`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -2382,6 +2772,8 @@ Total sent emails of the verify track's second email
Group: `group::activation`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -2394,6 +2786,8 @@ Total clicks on the verify track's third email
Group: `group::activation`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -2406,6 +2800,8 @@ Total sent emails of the verify track's third email
Group: `group::activation`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -2418,6 +2814,8 @@ Missing description
Group: `group::release`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`
@@ -2428,7 +2826,9 @@ Count of incidents (issues where issue_type=incident)
[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216180447_incident_issues.yml)
-Group: `group::health`
+Group: `group::monitor`
+
+Data Category: `Optional`
Status: `data_available`
@@ -2440,7 +2840,9 @@ Count of all issues with the label=incident
[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216180451_incident_labeled_issues.yml)
-Group: `group::health`
+Group: `group::monitor`
+
+Data Category: `Optional`
Status: `data_available`
@@ -2454,6 +2856,8 @@ Whether or not ModSecurity is set to blocking mode
Group: `group::container security`
+Data Category: `Operational`
+
Status: `removed`
Tiers: `free`, `premium`, `ultimate`
@@ -2466,6 +2870,8 @@ Whether or not ModSecurity is disabled within Ingress
Group: `group::container security`
+Data Category: `Operational`
+
Status: `removed`
Tiers: `free`, `premium`, `ultimate`
@@ -2478,6 +2884,8 @@ Whether or not ModSecurity is set to logging mode
Group: `group::container security`
+Data Category: `Operational`
+
Status: `removed`
Tiers: `free`, `premium`, `ultimate`
@@ -2490,6 +2898,8 @@ Whether or not ModSecurity has not been installed into the cluster
Group: `group::container security`
+Data Category: `Operational`
+
Status: `removed`
Tiers: `free`, `premium`, `ultimate`
@@ -2502,6 +2912,8 @@ Cumulative count of packets identified as anomalous by ModSecurity since Usage P
Group: `group::container security`
+Data Category: `Operational`
+
Status: `removed`
Tiers: `free`, `premium`, `ultimate`
@@ -2514,6 +2926,8 @@ Cumulative count of packets processed by ModSecurity since Usage Ping was last r
Group: `group::container security`
+Data Category: `Operational`
+
Status: `removed`
Tiers: `free`, `premium`, `ultimate`
@@ -2526,6 +2940,8 @@ Whether or not ModSecurity statistics are unavailable
Group: `group::container security`
+Data Category: `Operational`
+
Status: `removed`
Tiers: `ultimate`
@@ -2538,6 +2954,8 @@ Total GitLab Managed disabled clusters previously attached to the instance
Group: `group::configure`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -2550,6 +2968,8 @@ Total GitLab Managed clusters attached to the instance
Group: `group::configure`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -2562,6 +2982,8 @@ Count of active instance-level integrations for Asana
Group: `group::ecosystem`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -2574,6 +2996,8 @@ Count of active instance-level integrations for Assembla
Group: `group::ecosystem`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -2586,6 +3010,8 @@ Count of active instance-level integrations for Bamboo CI
Group: `group::ecosystem`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -2598,6 +3024,8 @@ Count of active instance-level integrations for Bugzilla
Group: `group::ecosystem`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -2610,6 +3038,8 @@ Count of active instance-level integrations for Buildkite
Group: `group::ecosystem`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -2622,6 +3052,8 @@ Count of active instance-level integrations for Campfire
Group: `group::ecosystem`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -2634,6 +3066,8 @@ Count of active instance-level integrations for Confluence
Group: `group::ecosystem`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -2646,6 +3080,8 @@ Count of active instance-level integrations for a Custom Issue Tracker
Group: `group::ecosystem`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -2658,6 +3094,8 @@ Count of active instance-level integrations for Datadog
Group: `group::ecosystem`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -2670,6 +3108,8 @@ Count of active instance-level integrations for Discord
Group: `group::ecosystem`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -2682,6 +3122,8 @@ Count of active instance-level integrations for Drone CI
Group: `group::ecosystem`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -2694,6 +3136,8 @@ Count of active instance-level integrations for Emails on Push
Group: `group::ecosystem`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -2706,6 +3150,8 @@ Count of active instance-level integrations for EWM
Group: `group::ecosystem`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -2718,6 +3164,8 @@ Count of active instance-level integrations for External Wiki
Group: `group::ecosystem`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -2730,6 +3178,8 @@ Count of active instance-level integrations for Flowdock
Group: `group::ecosystem`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -2742,6 +3192,8 @@ Count of active instance-level integrations for GitHub
Group: `group::ecosystem`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `premium`, `ultimate`
@@ -2754,6 +3206,8 @@ Count of active instance-level integrations for Hangouts Chat
Group: `group::ecosystem`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -2766,6 +3220,8 @@ Count of active instance-level integrations for HipChat
Group: `group::ecosystem`
+Data Category: `Optional`
+
Status: `removed`
Tiers: `free`, `premium`, `ultimate`
@@ -2778,6 +3234,8 @@ Count of active instance-level integrations for Irker
Group: `group::ecosystem`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -2790,6 +3248,8 @@ Count of active instance-level integrations for Jenkins
Group: `group::ecosystem`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -2802,6 +3262,8 @@ Count of active instance-level integrations for Jira
Group: `group::ecosystem`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -2814,6 +3276,8 @@ Count of active instance-level integrations for Mattermost
Group: `group::ecosystem`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -2826,6 +3290,8 @@ Count of active instance-level integrations for Mattermost (slash commands)
Group: `group::ecosystem`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -2838,6 +3304,8 @@ Count of active instance-level integrations for Microsoft Teams
Group: `group::ecosystem`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -2850,6 +3318,8 @@ Count of active instance-level integrations for Mock CI
Group: `group::ecosystem`
+Data Category: `Optional`
+
Status: `removed`
Tiers: `free`, `premium`, `ultimate`
@@ -2862,6 +3332,8 @@ Count of active instance-level integrations for Mock Monitoring
Group: `group::ecosystem`
+Data Category: `Optional`
+
Status: `removed`
Tiers: `free`, `premium`, `ultimate`
@@ -2874,6 +3346,8 @@ Count of active instance-level integrations for Packagist
Group: `group::ecosystem`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -2886,6 +3360,8 @@ Count of active instance-level integrations for Pipeline Emails
Group: `group::ecosystem`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -2898,6 +3374,8 @@ Count of active instance-level integrations for Pivotal Tracker
Group: `group::ecosystem`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -2910,6 +3388,8 @@ Count of active instance-level integrations for Prometheus
Group: `group::monitor`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -2922,6 +3402,8 @@ Count of active instance-level integrations for Pushover
Group: `group::ecosystem`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -2934,6 +3416,8 @@ Count of active instance-level integrations for Redmine
Group: `group::ecosystem`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -2946,6 +3430,8 @@ Count of active instance-level integrations for Slack
Group: `group::ecosystem`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -2958,6 +3444,8 @@ Count of active instance-level integrations for Slack (slash commands)
Group: `group::ecosystem`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -2970,6 +3458,8 @@ Count of active instance-level integrations for Teamcity CI
Group: `group::ecosystem`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -2982,6 +3472,8 @@ Count of active instance-level integrations for Unifiy Circuit
Group: `group::ecosystem`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -2994,6 +3486,8 @@ Count of active instance-level integrations for Webex Teams
Group: `group::ecosystem`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -3006,6 +3500,8 @@ Count of active instance-level integrations for YouTrack
Group: `group::ecosystem`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -3018,6 +3514,8 @@ Count of Issues created
Group: `group::plan`
+Data Category: `Operational`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -3028,7 +3526,9 @@ Count of issues created automatically on alerts from GitLab-Managed Prometheus
[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216180441_issues_created_from_alerts.yml)
-Group: `group::health`
+Group: `group::monitor`
+
+Data Category: `Optional`
Status: `data_available`
@@ -3040,11 +3540,13 @@ Count of issues manually created from the GitLab UI on Sentry errors
[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216180434_issues_created_from_gitlab_error_tracking_ui.yml)
-Group: `group::health`
+Group: `group::monitor`
+
+Data Category: `Optional`
Status: `data_available`
-Tiers: `free`
+Tiers: `free`, `premium`, `ultimate`
### `counts.issues_created_gitlab_alerts`
@@ -3052,7 +3554,9 @@ Count of all issues created from GitLab alerts (bot and non-bot)
[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216180443_issues_created_gitlab_alerts.yml)
-Group: `group::health`
+Group: `group::monitor`
+
+Data Category: `Optional`
Status: `data_available`
@@ -3064,7 +3568,9 @@ Count of issues created manually by non-bot users from GitLab alerts
[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216180445_issues_created_manually_from_alerts.yml)
-Group: `group::health`
+Group: `group::monitor`
+
+Data Category: `Optional`
Status: `data_available`
@@ -3076,7 +3582,9 @@ Count of issues where a user have added AND removed a zoom meeting using slash c
[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216180438_issues_using_zoom_quick_actions.yml)
-Group: `group::health`
+Group: `group::monitor`
+
+Data Category: `Optional`
Status: `data_available`
@@ -3088,7 +3596,9 @@ Count of issues where a user has linked a Zoom meeting
[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216180436_issues_with_associated_zoom_link.yml)
-Group: `group::health`
+Group: `group::monitor`
+
+Data Category: `Optional`
Status: `data_available`
@@ -3100,7 +3610,9 @@ Count of issues where a user has embedded a Grafana chart
[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216180440_issues_with_embedded_grafana_charts_approx.yml)
-Group: `group::health`
+Group: `group::monitor`
+
+Data Category: `Optional`
Status: `data_available`
@@ -3114,6 +3626,8 @@ Count of issues with health status
Group: `group::product planning`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `ultimate`
@@ -3126,6 +3640,8 @@ Count of Projects that imported Issues from Jira
Group: `group::ecosystem`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -3138,6 +3654,8 @@ Count of Jira imports completed
Group: `group::ecosystem`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -3150,6 +3668,8 @@ Count of total issues imported via the Jira Importer
Group: `group::ecosystem`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -3162,6 +3682,8 @@ Number of keys.
Group: `group::access`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -3174,6 +3696,8 @@ Count of events when an Agent is asked to synchronize the manifests or its confi
Group: `group::configure`
+Data Category: `Operational`
+
Status: `data_available`
Tiers: `premium`, `ultimate`
@@ -3186,6 +3710,8 @@ Count of Kubernetes API proxy requests
Group: `group::configure`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `premium`, `ultimate`
@@ -3198,6 +3724,8 @@ Count of Kubernetes registered agents
Group: `group::configure`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `premium`, `ultimate`
@@ -3210,6 +3738,8 @@ Count of Kubernetes agents with at least one token
Group: `group::configure`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `premium`, `ultimate`
@@ -3222,6 +3752,8 @@ Count of label lists created on Boards
Group: `group::project management`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -3234,6 +3766,8 @@ Count of Labels
Group: `group::project management`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -3246,6 +3780,8 @@ Number of groups that are synced via LDAP group sync `https://docs.gitlab.com/ee
Group: `group::access`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `premium`, `ultimate`
@@ -3258,6 +3794,8 @@ Number of keys synced as part of LDAP `https://docs.gitlab.com/ee/administration
Group: `group::access`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `premium`, `ultimate`
@@ -3270,6 +3808,8 @@ Number of users that are linked to LDAP
Group: `group::access`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `premium`, `ultimate`
@@ -3282,6 +3822,8 @@ Missing description
Group: `group::create`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`
@@ -3294,6 +3836,8 @@ Count of License Scanning jobs run
Group: `group::composition analysis`
+Data Category: `Subscription`
+
Status: `data_available`
Tiers: `ultimate`
@@ -3306,6 +3850,8 @@ Count to License List page views
Group: `group::composition analysis`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `ultimate`
@@ -3318,6 +3864,8 @@ Count of the number of merge request comments
Group: `group::code review`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -3330,6 +3878,8 @@ Count of the number of merge requests created
Group: `group::code review`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -3342,6 +3892,8 @@ Count of the number of merge requests
Group: `group::code review`
+Data Category: `Operational`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -3354,6 +3906,8 @@ Count of merge requests merged using approval rules
Group: `group::compliance`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`
@@ -3366,6 +3920,8 @@ Count of milestone lists created on Boards
Group: `group::project management`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `premium`, `ultimate`
@@ -3378,6 +3934,8 @@ Count of milestones created
Group: `group::project management`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -3390,6 +3948,8 @@ Total Searches using the navbar for All Basic Search and Advanced Search in self
Group: `group::global search`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -3402,6 +3962,8 @@ Cumulative count of packets dropped by Cilium (Container Network Security) since
Group: `group::container security`
+Data Category: `Operational`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -3414,6 +3976,8 @@ Cumulative count of packets forwarded by Cilium (Container Network Security) sin
Group: `group::container security`
+Data Category: `Operational`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -3426,6 +3990,8 @@ Count of Notes across all objects that use them
Group: `group::project management`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -3438,6 +4004,8 @@ Active users with enabled operations dashboard
Group: `group::monitor`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -3450,6 +4018,8 @@ Active users with projects on operations dashboard
Group: `group::monitor`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -3462,6 +4032,8 @@ A count of Composer packages that have been deleted
Group: `group::package`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -3474,6 +4046,8 @@ A count of Composer packages that have been downloaded
Group: `group::package`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -3486,6 +4060,8 @@ A count of Composer packages that have been published
Group: `group::package`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -3498,6 +4074,8 @@ A count of Conan packages that have been deleted
Group: `group::package`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -3510,6 +4088,8 @@ A count of Conan packages that have been downloaded
Group: `group::package`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -3522,6 +4102,8 @@ A count of Conan packages that have been published
Group: `group::package`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -3534,6 +4116,8 @@ A count of container images that have been deleted
Group: `group::package`
+Data Category: `Optional`
+
Status: `deprecated`
Tiers: `free`, `premium`, `ultimate`
@@ -3546,6 +4130,8 @@ A count of container images that have been downloaded
Group: `group::package`
+Data Category: `Optional`
+
Status: `deprecated`
Tiers: `free`, `premium`, `ultimate`
@@ -3558,6 +4144,8 @@ A count of container images that have been published
Group: `group::package`
+Data Category: `Optional`
+
Status: `deprecated`
Tiers: `free`, `premium`, `ultimate`
@@ -3570,6 +4158,8 @@ A count of Debian packages that have been deleted
Group: `group::package`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -3582,6 +4172,8 @@ A count of Debian packages that have been downloaded
Group: `group::package`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -3594,6 +4186,8 @@ A count of Debian packages that have been published
Group: `group::package`
+Data Category: `Optional`
+
Status: `deprecated`
Tiers: `free`, `premium`, `ultimate`
@@ -3606,6 +4200,8 @@ A count of packages that have been deleted
Group: `group::package`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -3618,6 +4214,8 @@ A count of packages that have been deleted using a Deploy Token
Group: `group::package`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -3630,6 +4228,8 @@ A count of packages that have been deleted using a Guest
Group: `group::package`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -3642,6 +4242,8 @@ A count of packages that have been deleted using a logged in user
Group: `group::package`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -3654,6 +4256,8 @@ A count of generic packages that have been deleted
Group: `group::package`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -3666,6 +4270,8 @@ A count of generic packages that have been downloaded
Group: `group::package`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -3678,6 +4284,8 @@ A count of generic packages that have been published
Group: `group::package`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -3690,6 +4298,8 @@ A count of Go modules that have been deleted
Group: `group::package`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -3702,6 +4312,8 @@ A count of Go modules that have been downloaded
Group: `group::package`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -3714,6 +4326,8 @@ A count of Go modules that have been published
Group: `group::package`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -3726,6 +4340,22 @@ Total count of pull Helm packages events
Group: `group::package`
+Data Category: `Optional`
+
+Status: `implemented`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.package_events_i_package_helm_push_package`
+
+The total count of Helm packages that have been published.
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210625095025_package_events_i_package_helm_push_package.yml)
+
+Group: `group::package`
+
+Data Category: `Optional`
+
Status: `implemented`
Tiers: `free`, `premium`, `ultimate`
@@ -3738,6 +4368,8 @@ A count of Maven packages that have been deleted
Group: `group::package`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -3750,6 +4382,8 @@ A count of Maven packages that have been downloaded
Group: `group::package`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -3762,6 +4396,8 @@ A count of Maven packages that have been published
Group: `group::package`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -3774,6 +4410,8 @@ A count of npm packages that have been deleted
Group: `group::package`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -3786,6 +4424,8 @@ A count of npm packages that have been downloaded
Group: `group::package`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -3798,6 +4438,8 @@ A count of npm packages that have been published
Group: `group::package`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -3810,6 +4452,8 @@ A count of NuGet packages that have been deleted
Group: `group::package`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -3822,10 +4466,26 @@ A count of NuGet packages that have been downloaded
Group: `group::package`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
+### `counts.package_events_i_package_nuget_pull_symbol_package`
+
+A count of NuGet symbol packages that have been downloaded from the package registry
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210709191135_package_events_i_package_nuget_pull_symbol_package.yml)
+
+Group: `group::package`
+
+Data Category: `Optional`
+
+Status: `implemented`
+
+Tiers: `free`, `premium`, `ultimate`
+
### `counts.package_events_i_package_nuget_push_package`
A count of NuGet packages that have been published
@@ -3834,10 +4494,26 @@ A count of NuGet packages that have been published
Group: `group::package`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
+### `counts.package_events_i_package_nuget_push_symbol_package`
+
+A count of NuGet symbol packages that have been uploaded to the package registry
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210709191829_package_events_i_package_nuget_push_symbol_package.yml)
+
+Group: `group::package`
+
+Data Category: `Optional`
+
+Status: `implemented`
+
+Tiers: `free`, `premium`, `ultimate`
+
### `counts.package_events_i_package_pull_package`
A count of packages that have been downloaded from the package registry
@@ -3846,6 +4522,8 @@ A count of packages that have been downloaded from the package registry
Group: `group::package`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -3858,6 +4536,8 @@ A count of packages that have been downloaded from the package registry using a
Group: `group::package`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -3870,6 +4550,8 @@ A count of packages that have been downloaded from the package registry by a gue
Group: `group::package`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -3882,10 +4564,68 @@ A count of packages that have been downloaded from the package registry by a use
Group: `group::package`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
+### `counts.package_events_i_package_pull_symbol_package`
+
+A count of symbol packages that have been pulled from the package registry
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210709210941_package_events_i_package_pull_symbol_package.yml)
+
+Group: `group::package`
+
+Data Category: `Optional`
+
+Status: `implemented`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.package_events_i_package_pull_symbol_package_by_deploy_token`
+
+A count of symbol packages that have been pulled with a deploy token from the package registry
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210709211058_package_events_i_package_pull_symbol_package_by_deploy_token.yml)
+
+Group: `group::package`
+
+Data Category: `Optional`
+
+Status: `implemented`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.package_events_i_package_pull_symbol_package_by_guest`
+
+A count of symbol packages that have been pulled with by a guest from the package registry
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210709211248_package_events_i_package_pull_symbol_package_by_guest.yml)
+
+Group: `group::package`
+
+Data Category: `Optional`
+
+Status: `implemented`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.package_events_i_package_pull_symbol_package_by_user`
+
+A count of symbol packages that have been pulled with by an authenticated user from the package registry
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210709211341_package_events_i_package_pull_symbol_package_by_user.yml)
+
+Group: `group::package`
+
+Data Category: `Optional`
+
+Status: `implemented`
+
+Tiers: `free`, `premium`, `ultimate`
+
### `counts.package_events_i_package_push_package`
A count of packages that have been published to the package registry
@@ -3894,6 +4634,8 @@ A count of packages that have been published to the package registry
Group: `group::package`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -3906,6 +4648,8 @@ A count of packages that have been published to the package registry using a dep
Group: `group::package`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -3918,6 +4662,8 @@ A count of packages that have been published to the package registry by a Guest
Group: `group::package`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -3930,10 +4676,68 @@ A count of packages that have been published to the package registry by a user
Group: `group::package`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
+### `counts.package_events_i_package_push_symbol_package`
+
+A count of symbol packages that have been pushed to the package registry
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210709211439_package_events_i_package_push_symbol_package.yml)
+
+Group: `group::package`
+
+Data Category: `Optional`
+
+Status: `implemented`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.package_events_i_package_push_symbol_package_by_deploy_token`
+
+A count of symbol packages that have been pushed with a deploy token to the package registry
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210709211636_package_events_i_package_push_symbol_package_by_deploy_token.yml)
+
+Group: `group::package`
+
+Data Category: `Optional`
+
+Status: `implemented`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.package_events_i_package_push_symbol_package_by_guest`
+
+A count of symbol packages that have been pushed by a guest to the package registry
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210709211731_package_events_i_package_push_symbol_package_by_guest.yml)
+
+Group: `group::package`
+
+Data Category: `Optional`
+
+Status: `implemented`
+
+Tiers: `free`, `premium`, `ultimate`
+
+### `counts.package_events_i_package_push_symbol_package_by_user`
+
+A count of symbol packages that have been pushed by an authenticated user to the package registry
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210709211831_package_events_i_package_push_symbol_package_by_user.yml)
+
+Group: `group::package`
+
+Data Category: `Optional`
+
+Status: `implemented`
+
+Tiers: `free`, `premium`, `ultimate`
+
### `counts.package_events_i_package_pypi_delete_package`
A count of Python packages that have been deleted from the package registry
@@ -3942,6 +4746,8 @@ A count of Python packages that have been deleted from the package registry
Group: `group::package`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -3954,6 +4760,8 @@ A count of Python packages that have been downloaded from the package registry
Group: `group::package`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -3966,6 +4774,8 @@ A count of Python packages that have been published to the package registry
Group: `group::package`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -3978,6 +4788,8 @@ Total count of RubyGems packages delete events
Group: `group::package`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -3990,6 +4802,8 @@ Total count of pull RubyGems packages events
Group: `group::package`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -4002,6 +4816,8 @@ Total count of push RubyGems packages events
Group: `group::package`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -4014,6 +4830,8 @@ A count of package tags that have been deleted from the package registry
Group: `group::package`
+Data Category: `Optional`
+
Status: `deprecated`
Tiers: `free`, `premium`, `ultimate`
@@ -4026,6 +4844,8 @@ A count of package tags that have been downloaded from the package registry
Group: `group::package`
+Data Category: `Optional`
+
Status: `deprecated`
Tiers: `free`, `premium`, `ultimate`
@@ -4038,6 +4858,8 @@ A count of package tags that have been published to the package registry
Group: `group::package`
+Data Category: `Optional`
+
Status: `deprecated`
Tiers: `free`, `premium`, `ultimate`
@@ -4050,6 +4872,8 @@ Total count of Terraform Module packages delete events
Group: `group::configure`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -4062,6 +4886,8 @@ Total count of pull Terraform Module packages events
Group: `group::configure`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -4074,6 +4900,8 @@ Total count of push Terraform Module packages events
Group: `group::configure`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -4086,6 +4914,8 @@ The total number of packages published to the registry
Group: `group::package`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -4098,6 +4928,8 @@ Total GitLab Pages domains
Group: `group::release management`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`
@@ -4110,6 +4942,8 @@ Count of personal Snippets
Group: `group::editor`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -4122,6 +4956,8 @@ Count the total number of log views
Group: `group::monitor`
+Data Category: `Optional`
+
Status: `removed`
Tiers: `free`
@@ -4134,6 +4970,8 @@ Count of unique object pool repositories for fork deduplication
Group: `group::gitaly`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -4146,6 +4984,8 @@ Total visits to /groups/:group/-/analytics/productivity_analytics all time
Group: `group::optimize`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -4158,6 +4998,8 @@ Total GitLab Managed disabled clusters previously attached to projects
Group: `group::configure`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -4170,6 +5012,8 @@ Total GitLab Managed clusters attached to projects
Group: `group::configure`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -4182,6 +5026,8 @@ Count of project Snippets
Group: `group::editor`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -4194,6 +5040,8 @@ Count of Projects created
Group: `group::project management`
+Data Category: `Operational`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -4206,6 +5054,8 @@ Count of projects with active integrations for Asana
Group: `group::ecosystem`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -4218,6 +5068,8 @@ Count of projects with active integrations for Assembla
Group: `group::ecosystem`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -4230,6 +5082,8 @@ Count of projects with active integrations for Bamboo CI
Group: `group::ecosystem`
+Data Category: `Operational`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -4242,6 +5096,8 @@ Count of projects with active integrations for Bugzilla
Group: `group::ecosystem`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -4254,6 +5110,8 @@ Count of projects with active integrations for Buildkite
Group: `group::ecosystem`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -4266,6 +5124,8 @@ Count of projects with active integrations for Campfire
Group: `group::ecosystem`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -4278,6 +5138,8 @@ Count of projects with active integrations for Confluence
Group: `group::ecosystem`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -4288,11 +5150,13 @@ Counts of Projects that have incident issues, regardless of status.
[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216180453_projects_creating_incidents.yml)
-Group: `group::health`
+Group: `group::monitor`
+
+Data Category: `Optional`
Status: `data_available`
-Tiers: `free`
+Tiers: `free`, `premium`, `ultimate`
### `counts.projects_custom_issue_tracker_active`
@@ -4302,6 +5166,8 @@ Count of projects with active integrations for a Custom Issue Tracker
Group: `group::ecosystem`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -4314,6 +5180,8 @@ Count of projects with active integrations for Datadog
Group: `group::ecosystem`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -4326,6 +5194,8 @@ Count of projects with active integrations for Discord
Group: `group::ecosystem`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -4338,6 +5208,8 @@ Count of projects with active integrations for Drone CI
Group: `group::ecosystem`
+Data Category: `Operational`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -4350,6 +5222,8 @@ Count of projects with active integrations for Emails on Push
Group: `group::ecosystem`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -4362,6 +5236,8 @@ Count of projects with active integrations for EWM
Group: `group::ecosystem`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -4374,6 +5250,8 @@ Count of projects with active integrations for External Wiki
Group: `group::ecosystem`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -4386,6 +5264,8 @@ Count of projects with active integrations for Flowdock
Group: `group::ecosystem`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -4398,6 +5278,8 @@ Count of projects with active integrations for GitHub
Group: `group::ecosystem`
+Data Category: `Operational`
+
Status: `data_available`
Tiers: `premium`, `ultimate`
@@ -4410,6 +5292,8 @@ Count of projects with active integrations for Hangouts Chat
Group: `group::ecosystem`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -4422,6 +5306,8 @@ Count of projects with active integrations for HipChat
Group: `group::ecosystem`
+Data Category: `Optional`
+
Status: `removed`
Tiers: `free`, `premium`, `ultimate`
@@ -4434,6 +5320,8 @@ Missing description
Group: `group::import`
+Data Category: `Operational`
+
Status: `data_available`
Tiers: `free`
@@ -4446,6 +5334,8 @@ Count of active projects inheriting integrations for Asana
Group: `group::ecosystem`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -4458,6 +5348,8 @@ Count of active projects inheriting integrations for Assembla
Group: `group::ecosystem`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -4470,6 +5362,8 @@ Count of active projects inheriting integrations for Bamboo CI
Group: `group::ecosystem`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -4482,6 +5376,8 @@ Count of active projects inheriting integrations for Bugzilla
Group: `group::ecosystem`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -4494,6 +5390,8 @@ Count of active projects inheriting integrations for Buildkite
Group: `group::ecosystem`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -4506,6 +5404,8 @@ Count of active projects inheriting integrations for Campfire
Group: `group::ecosystem`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -4518,6 +5418,8 @@ Count of active projects inheriting integrations for Confluence
Group: `group::ecosystem`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -4530,6 +5432,8 @@ Count of active projects inheriting integrations for a Custom Issue Tracker
Group: `group::ecosystem`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -4542,6 +5446,8 @@ Count of active projects inheriting integrations for Datadog
Group: `group::ecosystem`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -4554,6 +5460,8 @@ Count of active projects inheriting integrations for Discord
Group: `group::ecosystem`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -4566,6 +5474,8 @@ Count of active projects inheriting integrations for Drone CI
Group: `group::ecosystem`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -4578,6 +5488,8 @@ Count of active projects inheriting integrations for Emails on Push
Group: `group::ecosystem`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -4590,6 +5502,8 @@ Count of active projects inheriting integrations for EWM
Group: `group::ecosystem`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -4602,6 +5516,8 @@ Count of active projects inheriting integrations for External Wiki
Group: `group::ecosystem`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -4614,6 +5530,8 @@ Count of active projects inheriting integrations for Flowdock
Group: `group::ecosystem`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -4626,6 +5544,8 @@ Count of active projects inheriting integrations for GitHub
Group: `group::ecosystem`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `premium`, `ultimate`
@@ -4638,6 +5558,8 @@ Count of active projects inheriting integrations for Hangouts Chat
Group: `group::ecosystem`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -4650,6 +5572,8 @@ Count of active projects inheriting integrations for HipChat
Group: `group::ecosystem`
+Data Category: `Optional`
+
Status: `removed`
Tiers: `free`, `premium`, `ultimate`
@@ -4662,6 +5586,8 @@ Count of active projects inheriting integrations for Irker
Group: `group::ecosystem`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -4674,6 +5600,8 @@ Count of active projects inheriting integrations for Jenkins
Group: `group::ecosystem`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -4686,6 +5614,8 @@ Count of active projects inheriting integrations for Jira
Group: `group::ecosystem`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -4698,6 +5628,8 @@ Count of active projects inheriting integrations for Mattermost
Group: `group::ecosystem`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -4710,6 +5642,8 @@ Count of active projects inheriting integrations for Mattermost (slash commands)
Group: `group::ecosystem`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -4722,6 +5656,8 @@ Count of active projects inheriting integrations for Microsoft Teams
Group: `group::ecosystem`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -4734,6 +5670,8 @@ Count of active projects inheriting integrations for Mock CI
Group: `group::ecosystem`
+Data Category: `Optional`
+
Status: `removed`
Tiers: `free`, `premium`, `ultimate`
@@ -4746,6 +5684,8 @@ Count of active projects inheriting integrations for Mock Monitoring
Group: `group::ecosystem`
+Data Category: `Optional`
+
Status: `removed`
Tiers: `free`, `premium`, `ultimate`
@@ -4758,6 +5698,8 @@ Count of active projects inheriting integrations for Packagist
Group: `group::ecosystem`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -4770,6 +5712,8 @@ Count of active projects inheriting integrations for Pipeline Emails
Group: `group::ecosystem`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -4782,6 +5726,8 @@ Count of active projects inheriting integrations for Pivotal Tracker
Group: `group::ecosystem`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -4794,6 +5740,8 @@ Count of active projects inheriting integrations for Prometheus
Group: `group::monitor`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -4806,6 +5754,8 @@ Count of active projects inheriting integrations for Pushover
Group: `group::ecosystem`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -4818,6 +5768,8 @@ Count of active projects inheriting integrations for Redmine
Group: `group::ecosystem`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -4830,6 +5782,8 @@ Count of active projects inheriting integrations for Slack
Group: `group::ecosystem`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -4842,6 +5796,8 @@ Count of active projects inheriting integrations for Slack (slash commands)
Group: `group::ecosystem`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -4854,6 +5810,8 @@ Count of active projects inheriting integrations for Teamcity CI
Group: `group::ecosystem`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -4866,6 +5824,8 @@ Count of active projects inheriting integrations for Unifiy Circuit
Group: `group::ecosystem`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -4878,6 +5838,8 @@ Count of active projects inheriting integrations for Webex Teams
Group: `group::ecosystem`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -4890,6 +5852,8 @@ Count of active projects inheriting integrations for YouTrack
Group: `group::ecosystem`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -4902,6 +5866,8 @@ Count of projects with active integrations for Irker
Group: `group::ecosystem`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -4914,6 +5880,8 @@ Count of projects with active integrations for Jenkins
Group: `group::ecosystem`
+Data Category: `Operational`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -4926,6 +5894,8 @@ Count of projects with active integrations for Jira
Group: `group::ecosystem`
+Data Category: `Operational`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -4938,6 +5908,8 @@ Count of active integrations with Jira Cloud (Saas)
Group: `group::ecosystem`
+Data Category: `Operational`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -4950,6 +5922,8 @@ Count of active integrations with Jira Cloud (DVCS Connector)
Group: `group::ecosystem`
+Data Category: `Operational`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -4962,6 +5936,8 @@ Count of active integrations with Jira Software (DVCS connector)
Group: `group::ecosystem`
+Data Category: `Operational`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -4974,6 +5950,8 @@ Total Jira Issue feature enabled
Group: `group::ecosystem`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `premium`, `ultimate`
@@ -4986,6 +5964,8 @@ Count of active integrations with Jira Software (server)
Group: `group::ecosystem`
+Data Category: `Operational`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -4998,6 +5978,8 @@ Count of projects with active integrations for Mattermost
Group: `group::ecosystem`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -5010,6 +5992,8 @@ Count of projects with active integrations for Mattermost (slash commands)
Group: `group::ecosystem`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -5022,6 +6006,8 @@ Count of projects with active integrations for Microsoft Teams
Group: `group::ecosystem`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -5034,6 +6020,8 @@ Projects with repository mirroring enabled
Group: `group::pipeline execution`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `premium`, `ultimate`
@@ -5046,6 +6034,8 @@ Count of projects with active integrations for Mock CI
Group: `group::ecosystem`
+Data Category: `Optional`
+
Status: `removed`
Tiers: `free`, `premium`, `ultimate`
@@ -5058,6 +6048,8 @@ Count of projects with active integrations for Mock Monitoring
Group: `group::ecosystem`
+Data Category: `Optional`
+
Status: `removed`
Tiers: `free`, `premium`, `ultimate`
@@ -5070,6 +6062,8 @@ Count of projects with active integrations for Packagist
Group: `group::ecosystem`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -5082,6 +6076,8 @@ Count of projects with active integrations for Pipeline Emails
Group: `group::ecosystem`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -5094,6 +6090,8 @@ Count of projects with active integrations for Pivotal Tracker
Group: `group::ecosystem`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -5106,6 +6104,8 @@ Count of projects with active integrations for Prometheus
Group: `group::monitor`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -5118,6 +6118,8 @@ Count of projects with active integrations for Pushover
Group: `group::ecosystem`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -5130,6 +6132,8 @@ Count of projects with active integrations for Redmine
Group: `group::ecosystem`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -5142,6 +6146,8 @@ Projects with a GitHub service pipeline enabled
Group: `group::continuous_integration`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `premium`, `ultimate`
@@ -5154,6 +6160,8 @@ Count of projects with active integrations for Slack
Group: `group::ecosystem`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -5166,6 +6174,8 @@ Count of projects with active integrations for Slack (slash commands)
Group: `group::ecosystem`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -5178,6 +6188,8 @@ Count of projects with active integrations for Teamcity CI
Group: `group::ecosystem`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -5190,6 +6202,8 @@ Count of projects with active integrations for Unifiy Circuit
Group: `group::ecosystem`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -5202,6 +6216,8 @@ Count of projects with active integrations for Webex Teams
Group: `group::ecosystem`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -5212,11 +6228,13 @@ Count of projects with alerts created in given time period
[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216180458_projects_with_alerts_created.yml)
-Group: `group::health`
+Group: `group::monitor`
+
+Data Category: `Optional`
Status: `data_available`
-Tiers: `free`
+Tiers: `free`, `premium`, `ultimate`
### `counts.projects_with_alerts_service_enabled`
@@ -5224,7 +6242,9 @@ Count of projects that have enabled the Alerts service
[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216180456_projects_with_alerts_service_enabled.yml)
-Group: `group::health`
+Group: `group::monitor`
+
+Data Category: `Optional`
Status: `removed`
@@ -5236,11 +6256,13 @@ Count of projects with at least 1 enabled integration
[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216180500_projects_with_enabled_alert_integrations.yml)
-Group: `group::health`
+Group: `group::monitor`
+
+Data Category: `Optional`
Status: `data_available`
-Tiers: `free`
+Tiers: `free`, `premium`, `ultimate`
### `counts.projects_with_error_tracking_enabled`
@@ -5248,7 +6270,9 @@ Count of projects that have enabled Error tracking via Sentry
[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216180454_projects_with_error_tracking_enabled.yml)
-Group: `group::health`
+Group: `group::monitor`
+
+Data Category: `Optional`
Status: `data_available`
@@ -5262,6 +6286,8 @@ The number of projects with cleanup policy for tags turned off
Group: `group::package`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -5274,6 +6300,8 @@ A count of projects with the cleanup policy for tags turned on
Group: `group::package`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -5286,6 +6314,8 @@ A count of projects with the cleanup policy set to run every 14 days
Group: `group::package`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -5298,6 +6328,8 @@ A count of projects with the cleanup policy set to run every day
Group: `group::package`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -5310,6 +6342,8 @@ A count of projects with the cleanup policy set to run monthly
Group: `group::package`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -5322,6 +6356,8 @@ A count of projects with the cleanup policy set to run every 3 months
Group: `group::package`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -5334,6 +6370,8 @@ A count of projects with the cleanup policy set to run every 7 days
Group: `group::package`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -5346,6 +6384,8 @@ A count of projects with the cleanup policy set to keep 1 tag
Group: `group::package`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -5358,6 +6398,8 @@ A count of projects with the cleanup policy set to keep 10 tags
Group: `group::package`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -5370,6 +6412,8 @@ A count of projects with the cleanup policy set to keep 100 tags
Group: `group::package`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -5382,6 +6426,8 @@ A count of projects with the cleanup policy set to keep 25 tags
Group: `group::package`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -5394,6 +6440,8 @@ A count of projects with the cleanup policy set to keep 5 tags
Group: `group::package`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -5406,6 +6454,8 @@ A count of projects with the cleanup policy set to keep 50 tags
Group: `group::package`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -5418,6 +6468,8 @@ A count of projects with the cleanup policy with the number of tags to keep unse
Group: `group::package`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -5430,6 +6482,8 @@ A count of projects with the cleanup policy set delete tags older than 14 days
Group: `group::package`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -5442,6 +6496,8 @@ A count of projects with the cleanup policy set delete tags older than 30 days
Group: `group::package`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -5454,6 +6510,8 @@ A count of projects with the cleanup policy set delete tags older than 7 days
Group: `group::package`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -5466,6 +6524,8 @@ A count of projects with the cleanup policy set delete tags older than 90 days
Group: `group::package`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -5478,6 +6538,8 @@ A count of projects with the cleanup policy with the number of tags to delete un
Group: `group::package`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -5490,6 +6552,8 @@ Projects with package registry enabled
Group: `group::package`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -5502,6 +6566,8 @@ Projects with Prometheus alerting enabled
Group: `group::monitor`
+Data Category: `Optional`
+
Status: `removed`
Tiers: `free`
@@ -5514,6 +6580,8 @@ Count of users creating projects that have a matching Git repository, result of
Group: `group::source code`
+Data Category: `Operational`
+
Status: `data_available`
Tiers: `premium`, `ultimate`
@@ -5526,6 +6594,8 @@ Count of projects with Terraform MR reports
Group: `group::configure`
+Data Category: `Operational`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -5538,6 +6608,8 @@ Count of projects with GitLab Managed Terraform State
Group: `group::configure`
+Data Category: `Operational`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -5550,6 +6622,8 @@ Projects with tracing enabled
Group: `group::monitor`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -5562,6 +6636,8 @@ Count of projects with active integrations for YouTrack
Group: `group::ecosystem`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -5574,6 +6650,8 @@ Count of total protected branches
Group: `group::source code`
+Data Category: `Operational`
+
Status: `data_available`
Tiers: `premium`, `ultimate`
@@ -5586,6 +6664,8 @@ Count of branches that have been protected and are not the default branch
Group: `group::source code`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -5598,6 +6678,8 @@ Unique release tags
Group: `group::release`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`
@@ -5610,6 +6692,8 @@ Count of total remote mirrors. Includes both push and pull mirrors
Group: `group::source code`
+Data Category: `Operational`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -5622,6 +6706,8 @@ Count of requirement test reports created from CI
Group: `group::certify`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `ultimate`
@@ -5634,6 +6720,8 @@ Count of requirement test reports created manually
Group: `group::certify`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `ultimate`
@@ -5646,6 +6734,8 @@ Count of requirements created
Group: `group::certify`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `ultimate`
@@ -5658,6 +6748,8 @@ Count of requirements having a test report
Group: `group::certify`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `ultimate`
@@ -5670,18 +6762,22 @@ Count of SAST CI jobs for the month. Job names ending in '-sast'
Group: `group::static analysis`
+Data Category: `Operational`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
### `counts.secret_detection_jobs`
-Count of 'secret-detection' CI jobs fro the month.
+Count of all 'secret-detection' CI jobs.
[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216182114_secret_detection_jobs.yml)
Group: `group::static analysis`
+Data Category: `Operational`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -5694,6 +6790,8 @@ Count of service desk enabled projects
Group: `group::certify`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`
@@ -5706,6 +6804,8 @@ Count of service desk issues
Group: `group::certify`
+Data Category: `Operational`
+
Status: `data_available`
Tiers: `free`
@@ -5718,6 +6818,8 @@ Count of comments on Snippets
Group: `group::editor`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -5730,6 +6832,8 @@ Count of newly created Snippets
Group: `group::editor`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -5742,6 +6846,8 @@ Count of updates to existing Snippets
Group: `group::editor`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -5754,6 +6860,8 @@ Count of all Snippets
Group: `group::editor`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -5766,6 +6874,8 @@ Count of total Git push operations
Group: `group::source code`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -5778,6 +6888,8 @@ Count of commits created from the Static Site Editor
Group: `group::editor`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -5790,6 +6902,8 @@ Count of merge requests created via Static Site Editor
Group: `group::editor`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -5802,6 +6916,8 @@ Count of Static Site Editor views
Group: `group::editor`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -5810,49 +6926,57 @@ Tiers: `free`, `premium`, `ultimate`
Cumulative count of usages of publish operation
-[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216180502_status_page_incident_publishes.yml)
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_all/20210216180502_status_page_incident_publishes.yml)
+
+Group: `group::monitor`
-Group: `group::health`
+Data Category: `Optional`
Status: `data_available`
-Tiers: `free`
+Tiers: `ultimate`
### `counts.status_page_incident_unpublishes`
Cumulative count of usages of unpublish operation
-[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216180504_status_page_incident_unpublishes.yml)
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_all/20210216180504_status_page_incident_unpublishes.yml)
-Group: `group::health`
+Group: `group::monitor`
+
+Data Category: `Optional`
Status: `data_available`
-Tiers: `free`
+Tiers: `ultimate`
### `counts.status_page_issues`
Issues published to a Status Page
-[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216180507_status_page_issues.yml)
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_all/20210216180507_status_page_issues.yml)
-Group: `group::health`
+Group: `group::monitor`
+
+Data Category: `Optional`
Status: `data_available`
-Tiers: `free`
+Tiers: `ultimate`
### `counts.status_page_projects`
Projects with status page enabled
-[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216180506_status_page_projects.yml)
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_all/20210216180506_status_page_projects.yml)
-Group: `group::health`
+Group: `group::monitor`
+
+Data Category: `Optional`
Status: `data_available`
-Tiers: `free`
+Tiers: `ultimate`
### `counts.successful_deployments`
@@ -5862,6 +6986,8 @@ Total successful deployments
Group: `group::release`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`
@@ -5874,6 +7000,8 @@ Count of all comments that contain suggested changes
Group: `group::code review`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -5886,6 +7014,8 @@ Count of total repo templates used to aggregate all file templates
Group: `group::source code`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `premium`, `ultimate`
@@ -5898,6 +7028,8 @@ Count of active service templates for Asana
Group: `group::ecosystem`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -5910,6 +7042,8 @@ Count of active service templates for Assembla
Group: `group::ecosystem`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -5922,6 +7056,8 @@ Count of active service templates for Bamboo CI
Group: `group::ecosystem`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -5934,6 +7070,8 @@ Count of active service templates for Bugzilla
Group: `group::ecosystem`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -5946,6 +7084,8 @@ Count of active service templates for Buildkite
Group: `group::ecosystem`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -5958,6 +7098,8 @@ Count of active service templates for Campfire
Group: `group::ecosystem`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -5970,6 +7112,8 @@ Count of active service templates for Confluence
Group: `group::ecosystem`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -5982,6 +7126,8 @@ Count of active service templates for a Custom Issue Tracker
Group: `group::ecosystem`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -5994,6 +7140,8 @@ Count of active service templates for Datadog
Group: `group::ecosystem`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -6006,6 +7154,8 @@ Count of active service templates for Discord
Group: `group::ecosystem`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -6018,6 +7168,8 @@ Count of active service templates for Drone CI
Group: `group::ecosystem`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -6030,6 +7182,8 @@ Count of active service templates for Emails on Push
Group: `group::ecosystem`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -6042,6 +7196,8 @@ Count of active service templates for EWM
Group: `group::ecosystem`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -6054,6 +7210,8 @@ Count of active service templates for External Wiki
Group: `group::ecosystem`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -6066,6 +7224,8 @@ Count of active service templates for Flowdock
Group: `group::ecosystem`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -6078,6 +7238,8 @@ Count of active service templates for GitHub
Group: `group::ecosystem`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `premium`, `ultimate`
@@ -6090,6 +7252,8 @@ Count of active service templates for Hangouts Chat
Group: `group::ecosystem`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -6102,6 +7266,8 @@ Count of active service templates for HipChat
Group: `group::ecosystem`
+Data Category: `Optional`
+
Status: `removed`
Tiers: `free`, `premium`, `ultimate`
@@ -6114,6 +7280,8 @@ Count of active service templates for Irker
Group: `group::ecosystem`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -6126,6 +7294,8 @@ Count of active service templates for Jenkins
Group: `group::ecosystem`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -6138,6 +7308,8 @@ Count of active service templates for Jira
Group: `group::ecosystem`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -6150,6 +7322,8 @@ Count of active service templates for Mattermost
Group: `group::ecosystem`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -6162,6 +7336,8 @@ Count of active service templates for Mattermost (slash commands)
Group: `group::ecosystem`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -6174,6 +7350,8 @@ Count of active service templates for Microsoft Teams
Group: `group::ecosystem`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -6186,6 +7364,8 @@ Count of active service templates for Mock CI
Group: `group::ecosystem`
+Data Category: `Optional`
+
Status: `removed`
Tiers: `free`, `premium`, `ultimate`
@@ -6198,6 +7378,8 @@ Count of active service templates for Mock Monitoring
Group: `group::ecosystem`
+Data Category: `Optional`
+
Status: `removed`
Tiers: `free`, `premium`, `ultimate`
@@ -6210,6 +7392,8 @@ Count of active service templates for Packagist
Group: `group::ecosystem`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -6222,6 +7406,8 @@ Count of active service templates for Pipeline Emails
Group: `group::ecosystem`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -6234,6 +7420,8 @@ Count of active service templates for Pivotal Tracker
Group: `group::ecosystem`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -6246,6 +7434,8 @@ Count of active service templates for Prometheus
Group: `group::monitor`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -6258,6 +7448,8 @@ Count of active service templates for Pushover
Group: `group::ecosystem`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -6270,6 +7462,8 @@ Count of active service templates for Redmine
Group: `group::ecosystem`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -6282,6 +7476,8 @@ Count of active service templates for Slack
Group: `group::ecosystem`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -6294,6 +7490,8 @@ Count of active service templates for Slack (slash commands)
Group: `group::ecosystem`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -6306,6 +7504,8 @@ Count of active service templates for Teamcity CI
Group: `group::ecosystem`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -6318,6 +7518,8 @@ Count of active service templates for Unifiy Circuit
Group: `group::ecosystem`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -6330,6 +7532,8 @@ Count of active service templates for Webex Teams
Group: `group::ecosystem`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -6342,6 +7546,8 @@ Count of active service templates for YouTrack
Group: `group::ecosystem`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -6354,6 +7560,8 @@ Count of Terraform MR reports generated
Group: `group::configure`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -6366,6 +7574,8 @@ Count of GitLab Managed Terraform States
Group: `group::configure`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -6378,6 +7588,8 @@ Count of todos created
Group: `group::project management`
+Data Category: `Operational`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -6390,6 +7602,8 @@ Count of Uploads via Notes and Descriptions
Group: `group::project management`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -6402,6 +7616,8 @@ Count of users who set personal preference to see Details on Group information p
Group: `group::threat insights`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `ultimate`
@@ -6414,6 +7630,8 @@ Count of users who set personal preference to see Security Dashboard on Group in
Group: `group::threat insights`
+Data Category: `Operational`
+
Status: `data_available`
Tiers: `ultimate`
@@ -6426,6 +7644,8 @@ Count of users with the GitPod integration enabled
Group: `group::editor`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -6438,6 +7658,8 @@ Missing description
Group: `group::ecosystem`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`
@@ -6450,6 +7672,8 @@ Count of commits made from the Web IDE
Group: `group::editor`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -6462,6 +7686,8 @@ Count of merge requests created from the Web IDE
Group: `group::editor`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -6474,6 +7700,8 @@ Count of Pipeline tab views in the Web IDE
Group: `group::editor`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -6486,6 +7714,8 @@ Count of Live Preview tab views in the Web IDE
Group: `group::editor`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -6498,6 +7728,8 @@ Count of Web Terminal tab views in the Web IDE
Group: `group::editor`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -6510,6 +7742,8 @@ Count of views of the Web IDE
Group: `group::editor`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -6522,6 +7756,8 @@ Count of all Wiki pages created
Group: `group::editor`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -6534,6 +7770,8 @@ Count of all Wiki pages deleted
Group: `group::editor`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -6546,6 +7784,8 @@ Count of all Wiki page updates
Group: `group::editor`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -6558,6 +7798,8 @@ Missing description
Group: ``
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`
@@ -6570,6 +7812,8 @@ Missing description
Group: ``
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -6582,6 +7826,8 @@ Missing description
Group: ``
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -6594,21 +7840,25 @@ Missing description
Group: ``
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
### `counts_monthly.aggregated_metrics.compliance_features_track_unique_visits_union`
-Missing description
+Unique users that have used audit event screen, audit event API, compliance dashboard, or credential inventory
-[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216183201_compliance_features_track_unique_visits_union.yml)
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_28d/20210216183201_compliance_features_track_unique_visits_union.yml)
-Group: ``
+Group: `group::compliance`
+
+Data Category: `Optional`
Status: `data_available`
-Tiers: `free`
+Tiers: `premium`, `ultimate`
### `counts_monthly.aggregated_metrics.i_testing_paid_monthly_active_user_total`
@@ -6618,6 +7868,8 @@ Aggregated count of users who have engaged with a Premium or Ultimate tier testi
Group: `group::testing`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `premium`, `ultimate`
@@ -6628,11 +7880,13 @@ Count of unique users per month to take an action on an alert
[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216180509_incident_management_alerts_total_unique_counts.yml)
-Group: `group::health`
+Group: `group::monitor`
+
+Data Category: `Optional`
Status: `data_available`
-Tiers: `free`
+Tiers: `free`, `premium`, `ultimate`
### `counts_monthly.aggregated_metrics.incident_management_incidents_total_unique_counts`
@@ -6640,11 +7894,13 @@ Count of unique users per month to take an action on an incident
[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216180511_incident_management_incidents_total_unique_counts.yml)
-Group: `group::health`
+Group: `group::monitor`
+
+Data Category: `Optional`
Status: `data_available`
-Tiers: `free`
+Tiers: `free`, `premium`, `ultimate`
### `counts_monthly.aggregated_metrics.product_analytics_test_metrics_intersection`
@@ -6654,6 +7910,8 @@ This was test metric used for purpose of assuring correct implementation of aggr
Group: `group::product intelligence`
+Data Category: `Optional`
+
Status: `removed`
Tiers: `free`, `premium`, `ultimate`
@@ -6666,6 +7924,8 @@ This was test metric used for purpose of assuring correct implementation of aggr
Group: `group::product intelligence`
+Data Category: `Optional`
+
Status: `removed`
Tiers: `free`, `premium`, `ultimate`
@@ -6678,6 +7938,8 @@ Total deployments count for recent 28 days
Group: `group::ops release`
+Data Category: `Operational`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -6690,6 +7952,8 @@ Total failed deployments
Group: `group::release`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`
@@ -6702,6 +7966,8 @@ A monthly count of packages published to the registry
Group: `group::package`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -6714,6 +7980,8 @@ Monthly count of personal Snippets
Group: `group::editor`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -6726,6 +7994,8 @@ Monthly count of project Snippets
Group: `group::editor`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -6738,6 +8008,8 @@ Count number of projects created monthly
Group: `group::project management`
+Data Category: `Optional`
+
Status: `implemented`
Tiers: `free`, `premium`, `ultimate`
@@ -6750,6 +8022,8 @@ Monthly count of unique projects with HTTP alerting enabled
Group: `group::monitor`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -6762,6 +8036,8 @@ Monthly count of All Snippets
Group: `group::editor`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -6774,6 +8050,8 @@ Total successful deployments
Group: `group::release`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`
@@ -6786,6 +8064,8 @@ Missing description
Group: ``
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -6798,6 +8078,8 @@ Missing description
Group: ``
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -6810,21 +8092,25 @@ Missing description
Group: ``
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
### `counts_weekly.aggregated_metrics.compliance_features_track_unique_visits_union`
-Missing description
+Unique users that have used audit event screen, audit event API, compliance dashboard, or credential inventory
[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_7d/20210216183211_compliance_features_track_unique_visits_union.yml)
-Group: ``
+Group: `group::compliance`
+
+Data Category: `Optional`
Status: `data_available`
-Tiers:
+Tiers: `premium`, `ultimate`
### `counts_weekly.aggregated_metrics.i_testing_paid_monthly_active_user_total`
@@ -6834,6 +8120,8 @@ Aggregated count of users who have engaged with a Premium or Ultimate tier testi
Group: `group::testing`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `premium`, `ultimate`
@@ -6842,25 +8130,29 @@ Tiers: `premium`, `ultimate`
Count of unique users per week to take an action on an alert
-[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_7d/20210216180513_incident_management_alerts_total_unique_counts.yml)
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_7d/20210216180513_incident_management_alerts_total_unique_counts.yml)
-Group: `group::health`
+Group: `group::monitor`
+
+Data Category: `Optional`
Status: `data_available`
-Tiers:
+Tiers: `free`, `premium`, `ultimate`
### `counts_weekly.aggregated_metrics.incident_management_incidents_total_unique_counts`
Count of unique users per week to take an action on an incident
-[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_7d/20210216180515_incident_management_incidents_total_unique_counts.yml)
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_7d/20210216180515_incident_management_incidents_total_unique_counts.yml)
+
+Group: `group::monitor`
-Group: `group::health`
+Data Category: `Optional`
Status: `data_available`
-Tiers:
+Tiers: `free`, `premium`, `ultimate`
### `counts_weekly.aggregated_metrics.product_analytics_test_metrics_intersection`
@@ -6870,6 +8162,8 @@ This was test metric used for purpose of assuring correct implementation of aggr
Group: `group::product intelligence`
+Data Category: `Optional`
+
Status: `removed`
Tiers: `free`, `premium`, `ultimate`
@@ -6882,6 +8176,8 @@ This was test metric used for purpose of assuring correct implementation of aggr
Group: `group::product intelligence`
+Data Category: `Optional`
+
Status: `removed`
Tiers: `free`, `premium`, `ultimate`
@@ -6894,6 +8190,8 @@ This metric only returns a value of PostgreSQL in supported versions of GitLab.
Group: `group::enablement distribution`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -6906,6 +8204,8 @@ TBD
Group: `group::distribution`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`
@@ -6918,6 +8218,8 @@ The version of the PostgreSQL database.
Group: `group::distribution`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -6930,6 +8232,8 @@ A count of projects where the dependency proxy is enabled
Group: `group::package`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -6942,6 +8246,8 @@ Edition of GitLab such as EE or CE
Group: `group::distribution`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -6954,6 +8260,8 @@ Whether Elasticsearch is enabled
Group: `group::global search`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `premium`, `ultimate`
@@ -6966,6 +8274,8 @@ Is Geo enabled?
Group: `group::geo`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `premium`, `ultimate`
@@ -6978,6 +8288,8 @@ Information about Git version
Group: `group::distribution`
+Data Category: `Operational`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -6990,6 +8302,8 @@ Total GitLab Managed clusters both enabled and disabled
Group: `group::product intelligence`
+Data Category: `Operational`
+
Status: `data_available`
Tiers: `free`
@@ -7002,6 +8316,8 @@ Missing description
Group: ``
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`
@@ -7014,6 +8330,8 @@ Total Gitalty Servers
Group: `group::product intelligence`
+Data Category: `Operational`
+
Status: `data_available`
Tiers: `free`
@@ -7026,6 +8344,8 @@ Version of Gitaly
Group: `group::product intelligence`
+Data Category: `Operational`
+
Status: `data_available`
Tiers: `free`
@@ -7038,6 +8358,8 @@ Whether GitLab Pages is enabled
Group: `group::product intelligence`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`
@@ -7050,6 +8372,8 @@ The version number of GitLab Pages
Group: `group::product intelligence`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`
@@ -7062,6 +8386,8 @@ Whether shared runners is enabled
Group: `group::runner`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -7074,6 +8400,8 @@ Whether Gitpod is enabled in the instance
Group: `group::editor`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -7086,6 +8414,8 @@ Whether Grafana is enabled
Group: `group::product intelligence`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`
@@ -7098,6 +8428,8 @@ Whether gravatar is enabled
Group: `group::access`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -7110,6 +8442,8 @@ The peak active user count. Active is defined in UsersStatistics model.
Group: `group::license`
+Data Category: `Subscription`
+
Status: `data_available`
Tiers: `premium`, `ultimate`
@@ -7122,6 +8456,8 @@ Host name of GitLab instance
Group: `group::product intelligence`
+Data Category: `Standard`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -7134,6 +8470,8 @@ Whether or not ModSecurity is enabled within Ingress
Group: `group::container security`
+Data Category: `Operational`
+
Status: `removed`
Tiers: `free`, `premium`, `ultimate`
@@ -7146,6 +8484,8 @@ The installation method used to install GitLab (Omnibus, Helm, etc)
Group: `group::distribution`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -7158,6 +8498,8 @@ Whether auto DevOps is enabled
Group: `group::configure`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -7170,6 +8512,8 @@ Whether LDAP is enabled
Group: `group::product intelligence`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`
@@ -7182,6 +8526,8 @@ Number of all billable users (active users excluding bots and guests).
Group: `group::product intelligence`
+Data Category: `Optional`
+
Status: `implemented`
Tiers: `premium`, `ultimate`
@@ -7194,6 +8540,8 @@ The date the license ends
Group: `group::license`
+Data Category: `Subscription`
+
Status: `data_available`
Tiers: `premium`, `ultimate`
@@ -7206,6 +8554,8 @@ The ID of the license
Group: `group::license`
+Data Category: `Subscription`
+
Status: `data_available`
Tiers: `premium`, `ultimate`
@@ -7218,6 +8568,8 @@ The MD5 hash of license key of the GitLab instance
Group: `group::license`
+Data Category: `Standard`
+
Status: `data_available`
Tiers: `premium`, `ultimate`
@@ -7230,6 +8582,8 @@ The plan of the GitLab license
Group: `group::license`
+Data Category: `Subscription`
+
Status: `data_available`
Tiers: `premium`, `ultimate`
@@ -7242,6 +8596,8 @@ The date the license starts
Group: `group::license`
+Data Category: `Subscription`
+
Status: `data_available`
Tiers: `premium`, `ultimate`
@@ -7254,6 +8610,8 @@ Licese zuora_subscription_id
Group: `group::license`
+Data Category: `Standard`
+
Status: `data_available`
Tiers: `premium`, `ultimate`
@@ -7266,6 +8624,8 @@ Whether this is a trial license or not
Group: `group::license`
+Data Category: `Subscription`
+
Status: `data_available`
Tiers: `premium`, `ultimate`
@@ -7278,6 +8638,8 @@ Date the trial license ends on
Group: `group::license`
+Data Category: `Subscription`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -7290,6 +8652,8 @@ The number of seats included in the license
Group: `group::license`
+Data Category: `Subscription`
+
Status: `data_available`
Tiers: `premium`, `ultimate`
@@ -7302,6 +8666,8 @@ Company on the GitLab license
Group: `group::license`
+Data Category: `Subscription`
+
Status: `data_available`
Tiers: `premium`, `ultimate`
@@ -7314,6 +8680,8 @@ Email on the GitLab license
Group: `group::license`
+Data Category: `Subscription`
+
Status: `data_available`
Tiers: `premium`, `ultimate`
@@ -7326,6 +8694,8 @@ Name on the GitLab license
Group: `group::license`
+Data Category: `Subscription`
+
Status: `data_available`
Tiers: `premium`, `ultimate`
@@ -7338,6 +8708,8 @@ The value of the SMTP server that is used
Group: `group::activation`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -7350,6 +8722,8 @@ Whether Mattermost is enabled
Group: `group::ecosystem`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -7362,6 +8736,8 @@ Whether Object Storage is enabled for Artifacts
Group: `group::memory`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -7374,6 +8750,8 @@ Whether Background Upload for Object Storage is enabled for Artifacts
Group: `group::memory`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -7386,6 +8764,8 @@ Whether Direct Upload for Object Storage is enabled for Artifacts
Group: `group::memory`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -7398,6 +8778,8 @@ Whether Object Storage is enabled for Artifacts
Group: `group::memory`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -7410,6 +8792,8 @@ What Object Storage provider has been configured for Artifacts
Group: `group::memory`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -7422,6 +8806,8 @@ Whether Object Storage is enabled for External Diffs
Group: `group::memory`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -7434,6 +8820,8 @@ Whether Background Upload for Object Storage is enabled for External Diffs
Group: `group::memory`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -7446,6 +8834,8 @@ Whether Direct Upload for Object Storage is enabled for External Diffs
Group: `group::memory`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -7458,6 +8848,8 @@ Whether Object Storage is enabled for External Diffs
Group: `group::memory`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -7470,6 +8862,8 @@ What Object Storage provider has been configured for External Diffs
Group: `group::memory`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -7482,6 +8876,8 @@ Whether Object Storage is enabled for LFS
Group: `group::memory`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -7494,6 +8890,8 @@ Whether Background Upload for Object Storage is enabled for LFS
Group: `group::memory`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -7506,6 +8904,8 @@ Whether Direct Upload for Object Storage is enabled for LFS
Group: `group::memory`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -7518,6 +8918,8 @@ Whether Object Storage is enabled for LFS
Group: `group::memory`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -7530,6 +8932,8 @@ What Object Storage provider has been configured for LFS
Group: `group::memory`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -7542,6 +8946,8 @@ Whether Object Storage is enabled for Uploads
Group: `group::memory`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -7554,6 +8960,8 @@ Whether Background Upload for Object Storage is enabled for Packages
Group: `group::memory`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -7566,6 +8974,8 @@ Whether Direct Upload for Object Storage is enabled for Packages
Group: `group::memory`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -7578,6 +8988,8 @@ Whether Object Storage is enabled for Packages
Group: `group::memory`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -7590,6 +9002,8 @@ What Object Storage provider has been configured for Packages
Group: `group::memory`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -7602,6 +9016,8 @@ Whether Object Storage is enabled for Uploads
Group: `group::memory`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -7614,6 +9030,8 @@ Whether Background Upload for Object Storage is enabled for Uploads
Group: `group::memory`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -7626,6 +9044,8 @@ Whether Direct Upload for Object Storage is enabled for Uploads
Group: `group::memory`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -7638,6 +9058,8 @@ Whether Object Storage is enabled for Uploads
Group: `group::memory`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -7650,6 +9072,8 @@ What Object Storage provider has been configured for Uploads
Group: `group::memory`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -7662,6 +9086,8 @@ Whether OmniAuth is enabled
Group: `group::product intelligence`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`
@@ -7674,6 +9100,8 @@ Whether the bundled Prometheus is enabled
Group: `group::product intelligence`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -7686,6 +9114,8 @@ Whether Prometheus Metrics endpoint is enabled
Group: `group::product intelligence`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -7698,6 +9128,8 @@ When the Usage Ping computation was started
Group: `group::product intelligence`
+Data Category: `Standard`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -7710,6 +9142,8 @@ When the core features were computed
Group: `group::product intelligence`
+Data Category: `Standard`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -7722,6 +9156,8 @@ When the EE-specific features were computed
Group: `group::product intelligence`
+Data Category: `Standard`
+
Status: `data_available`
Tiers: `premium`, `ultimate`
@@ -7734,6 +9170,8 @@ The number of unique users who visited any analytics feature by month
Group: `group::optimize`
+Data Category: `Operational`
+
Status: `data_available`
Tiers: `free`
@@ -7746,6 +9184,8 @@ The number of unique users who visited any analytics feature by week
Group: `group::optimize`
+Data Category: `Optional`
+
Status: `data_available`
Tiers:
@@ -7758,6 +9198,8 @@ Unique visitors to /groups/:group/-/contribution_analytics by month
Group: `group::optimize`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`
@@ -7770,6 +9212,8 @@ Unique visitors to /groups/:group/-/contribution_analytics by week
Group: `group::optimize`
+Data Category: `Optional`
+
Status: `data_available`
Tiers:
@@ -7782,6 +9226,8 @@ Unique visitors to /groups/:group/-/insights/ by month
Group: `group::optimize`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`
@@ -7794,6 +9240,8 @@ Unique visitors to /groups/:group/-/insights/ by week
Group: `group::optimize`
+Data Category: `Optional`
+
Status: `data_available`
Tiers:
@@ -7806,6 +9254,8 @@ Unique visitors to /groups/:group/-/issues_analytics by month
Group: `group::optimize`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`
@@ -7818,6 +9268,8 @@ Unique visitors to /groups/:group/-/issues_analytics by week
Group: `group::optimize`
+Data Category: `Optional`
+
Status: `data_available`
Tiers:
@@ -7830,6 +9282,8 @@ Missing description
Group: `group::optimize`
+Data Category: `Optional`
+
Status: `removed`
Tiers: `free`
@@ -7842,6 +9296,8 @@ Missing description
Group: `group::optimize`
+Data Category: `Optional`
+
Status: `removed`
Tiers:
@@ -7854,6 +9310,8 @@ Unique visitors to /groups/:group/-/analytics/productivity_analytics by month
Group: `group::optimize`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`
@@ -7866,6 +9324,8 @@ Unique visitors to /groups/:group/-/analytics/productivity_analytics by week
Group: `group::optimize`
+Data Category: `Optional`
+
Status: `data_available`
Tiers:
@@ -7878,6 +9338,8 @@ Unique visitors to /groups/:group/-/analytics/value_stream_analytics by month
Group: `group::optimize`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`
@@ -7890,6 +9352,8 @@ Unique visitors to /groups/:group/-/analytics/value_stream_analytics by week
Group: `group::optimize`
+Data Category: `Optional`
+
Status: `data_available`
Tiers:
@@ -7902,6 +9366,8 @@ Missing description
Group: `group::utilization`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`
@@ -7914,6 +9380,8 @@ Missing description
Group: `group::utilization`
+Data Category: `Optional`
+
Status: `data_available`
Tiers:
@@ -7926,6 +9394,8 @@ Counts visits to DevOps Adoption page per month
Group: `group::optimize`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `premium`, `ultimate`
@@ -7938,6 +9408,8 @@ Counts visits to DevOps Adoption page per week
Group: `group::optimize`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `premium`, `ultimate`
@@ -7950,6 +9422,8 @@ Unique visitors to /admin/dev_ops_report by month
Group: `group::optimize`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`
@@ -7962,6 +9436,8 @@ Unique visitors to /admin/dev_ops_report by week
Group: `group::optimize`
+Data Category: `Optional`
+
Status: `data_available`
Tiers:
@@ -7974,6 +9450,8 @@ Unique visitors to /admin/usage_trends by month
Group: `group::optimize`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`
@@ -7986,6 +9464,8 @@ Unique visitors to /admin/usage_trends by week
Group: `group::optimize`
+Data Category: `Optional`
+
Status: `data_available`
Tiers:
@@ -7998,6 +9478,8 @@ Unique visitors to /:group/:project/-/analytics/code_reviews by month
Group: `group::optimize`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`
@@ -8010,6 +9492,8 @@ Unique visitors to /:group/:project/-/analytics/code_reviews by week
Group: `group::optimize`
+Data Category: `Optional`
+
Status: `data_available`
Tiers:
@@ -8022,6 +9506,8 @@ Unique visitors to /:group/:project/insights/ by month
Group: `group::optimize`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`
@@ -8034,6 +9520,8 @@ Unique visitors to /:group/:project/insights/ by week
Group: `group::optimize`
+Data Category: `Optional`
+
Status: `data_available`
Tiers:
@@ -8046,6 +9534,8 @@ Unique visitors to /:group/:project/-/analytics/issues_analytics by week
Group: `group::optimize`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`
@@ -8058,6 +9548,8 @@ Unique visitors to /:group/:project/-/analytics/issues_analytics by week
Group: `group::optimize`
+Data Category: `Optional`
+
Status: `data_available`
Tiers:
@@ -8070,6 +9562,8 @@ Unique visitors to /:group/:project/-/analytics/merge_request_analytics by month
Group: `group::optimize`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`
@@ -8082,6 +9576,8 @@ Unique visitors to /:group/:project/-/analytics/merge_request_analytics by week
Group: `group::optimize`
+Data Category: `Optional`
+
Status: `data_available`
Tiers:
@@ -8094,6 +9590,8 @@ Unique visitors to /groups/:group/-/analytics/ci_cd by month
Group: `group::optimize`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`
@@ -8106,6 +9604,8 @@ Unique visitors to /groups/:group/-/analytics/ci_cd by week
Group: `group::optimize`
+Data Category: `Optional`
+
Status: `data_available`
Tiers:
@@ -8118,6 +9618,8 @@ Unique visitors to /:group/:project/-/graphs/master/charts by month
Group: `group::optimize`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`
@@ -8130,6 +9632,8 @@ Unique visitors to /:group/:project/-/graphs/master/charts by week
Group: `group::optimize`
+Data Category: `Optional`
+
Status: `data_available`
Tiers:
@@ -8142,6 +9646,8 @@ Unique visitors to /:group/:project/-/value_stream_analytics by month
Group: `group::optimize`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`
@@ -8154,6 +9660,8 @@ Unique visitors to /:group/:project/-/value_stream_analytics by week
Group: `group::optimize`
+Data Category: `Optional`
+
Status: `data_available`
Tiers:
@@ -8166,6 +9674,8 @@ Counts visits to DevOps Adoption page per month
Group: `group::optimize`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `premium`, `ultimate`
@@ -8178,6 +9688,8 @@ Counts visits to DevOps Adoption page per week
Group: `group::optimize`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `premium`, `ultimate`
@@ -8190,6 +9702,8 @@ Monthly active users creating pipelines that that have the Vault JWT with it.'
Group: `group::configure`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `premium`, `ultimate`
@@ -8202,6 +9716,8 @@ Missing description
Group: ``
+Data Category: `Optional`
+
Status: `data_available`
Tiers:
@@ -8214,6 +9730,8 @@ Total count of pipelines runs
Group: `group::configure`
+Data Category: `Optional`
+
Status: `broken`
Tiers: `free`, `premium`, `ultimate`
@@ -8226,6 +9744,8 @@ Total count of pipelines runs
Group: `group::configure`
+Data Category: `Optional`
+
Status: `broken`
Tiers: `free`, `premium`, `ultimate`
@@ -8238,6 +9758,8 @@ Number of projects using 5 min production app CI template in last 7 days.
Group: `group::5-min-app`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -8250,6 +9772,8 @@ Number of projects using 5 min production app CI template in last 7 days.
Group: `group::5-min-app`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -8262,6 +9786,8 @@ Count of pipelines using the Auto Build template
Group: `group::configure`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -8274,6 +9800,8 @@ Missing description
Group: ``
+Data Category: `Optional`
+
Status: `data_available`
Tiers:
@@ -8286,6 +9814,8 @@ Count of pipelines using the latest Auto Deploy template
Group: `group::configure`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -8298,6 +9828,8 @@ Missing description
Group: ``
+Data Category: `Optional`
+
Status: `data_available`
Tiers:
@@ -8310,6 +9842,8 @@ Count of pipelines using the stable Auto Deploy template
Group: `group::configure`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -8322,6 +9856,8 @@ Missing description
Group: ``
+Data Category: `Optional`
+
Status: `data_available`
Tiers:
@@ -8334,6 +9870,8 @@ Count of pipelines using the Auto DevOps template
Group: `group::configure`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -8346,6 +9884,8 @@ Missing description
Group: ``
+Data Category: `Optional`
+
Status: `data_available`
Tiers:
@@ -8358,6 +9898,8 @@ Count of projects using `AWS/CF-Provision-and-Deploy-EC2.gitlab-ci.yml` template
Group: `group::release`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -8370,6 +9912,8 @@ Count of projects using `AWS/CF-Provision-and-Deploy-EC2.gitlab-ci.yml` template
Group: `group::release`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -8382,6 +9926,8 @@ Count of projects using `AWS/Deploy-ECS.gitlab-ci.yml` template in last 28 days.
Group: `group::release`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -8394,6 +9940,8 @@ Count of projects using `AWS/Deploy-ECS.gitlab-ci.yml` template in last 7 days.
Group: `group::release`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -8406,6 +9954,8 @@ Count of pipelines with implicit Auto Build runs
Group: `group::configure`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -8418,6 +9968,8 @@ Missing description
Group: ``
+Data Category: `Optional`
+
Status: `data_available`
Tiers:
@@ -8430,6 +9982,8 @@ Count of pipelines with implicit Auto Deploy runs
Group: `group::configure`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -8442,6 +9996,8 @@ Missing description
Group: ``
+Data Category: `Optional`
+
Status: `data_available`
Tiers:
@@ -8454,6 +10010,8 @@ Count of pipelines with implicit Auto DevOps runs
Group: `group::configure`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -8466,6 +10024,8 @@ Missing description
Group: ``
+Data Category: `Optional`
+
Status: `data_available`
Tiers:
@@ -8478,6 +10038,8 @@ Missing description
Group: ``
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`
@@ -8490,6 +10052,8 @@ Missing description
Group: ``
+Data Category: `Optional`
+
Status: `data_available`
Tiers:
@@ -8502,6 +10066,8 @@ Missing description
Group: ``
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`
@@ -8514,6 +10080,8 @@ Missing description
Group: ``
+Data Category: `Optional`
+
Status: `data_available`
Tiers:
@@ -8526,6 +10094,8 @@ Missing description
Group: ``
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`
@@ -8538,6 +10108,8 @@ Missing description
Group: ``
+Data Category: `Optional`
+
Status: `data_available`
Tiers:
@@ -8550,6 +10122,8 @@ Missing description
Group: ``
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`
@@ -8562,6 +10136,8 @@ Missing description
Group: ``
+Data Category: `Optional`
+
Status: `data_available`
Tiers:
@@ -8574,6 +10150,8 @@ Count of pipelines that include the terraform base template from GitLab
Group: `group::configure`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -8586,6 +10164,8 @@ Missing description
Group: ``
+Data Category: `Optional`
+
Status: `data_available`
Tiers:
@@ -8598,6 +10178,8 @@ Count of unique users per month who interact with a merge request
Group: `group::code review`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -8610,6 +10192,8 @@ Count of unique users per week who interact with a merge request
Group: `group::code review`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -8622,6 +10206,8 @@ Count of users clicking diff view setting
Group: `group::code review`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -8634,6 +10220,8 @@ Count of users clicking diff view setting
Group: `group::code review`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -8646,6 +10234,8 @@ Count of users clicking merge request file browser setting
Group: `group::code review`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -8658,6 +10248,8 @@ Count of users with merge request file list setting
Group: `group::code review`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -8670,6 +10262,8 @@ Count of users clicking single file mode setting
Group: `group::code review`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -8682,6 +10276,8 @@ Count of users clicking single file mode setting
Group: `group::code review`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -8694,6 +10290,8 @@ Count of users clicking merge request whitespae setting
Group: `group::code review`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -8706,6 +10304,8 @@ Count of users clicking merge request whitespae setting
Group: `group::code review`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -8718,6 +10318,8 @@ Count of users with show whitespace disabled
Group: `group::code review`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -8730,6 +10332,8 @@ Count of users with show whitespace disabled
Group: `group::code review`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -8742,6 +10346,8 @@ Count of users with single mode disabled
Group: `group::code review`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -8754,6 +10360,8 @@ Count of users with single mode disabled
Group: `group::code review`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -8766,6 +10374,8 @@ Count of users with show whitespace enabled
Group: `group::code review`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -8778,6 +10388,8 @@ Count of users with show whitespace enabled
Group: `group::code review`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -8790,6 +10402,8 @@ Count of users with single file mode enabled
Group: `group::code review`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -8802,6 +10416,8 @@ Count of users with single file mode enabled
Group: `group::code review`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -8814,6 +10430,8 @@ Count of users with merge request view type as inline
Group: `group::code review`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -8826,6 +10444,8 @@ Count of users with merge request view type as inline
Group: `group::code review`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -8838,6 +10458,8 @@ Count of users with merge request view type as parallel
Group: `group::code review`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -8850,6 +10472,8 @@ Count of users with merge request view type as parallel
Group: `group::code review`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -8862,6 +10486,8 @@ Count of unique users per month who edit the description of a merge request
Group: `group::code review`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -8874,6 +10500,8 @@ Count of unique users per week who edit the description of a merge request
Group: `group::code review`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -8886,6 +10514,8 @@ Count of unique users per month who edit the title of a merge request
Group: `group::code review`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -8898,6 +10528,8 @@ Count of unique users per week who edit the title of a merge request
Group: `group::code review`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -8910,6 +10542,8 @@ Count of users with merge request file list setting
Group: `group::code review`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -8922,6 +10556,8 @@ Count of users with merge request file list setting
Group: `group::code review`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -8934,6 +10570,8 @@ Count of users with merge request file tree setting
Group: `group::code review`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -8946,6 +10584,8 @@ Count of users with merge request file tree setting
Group: `group::code review`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -8958,6 +10598,8 @@ Count of unique merge requests per month with diffs viewed
Group: `group::code review`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -8970,6 +10612,8 @@ Count of unique merge requests per week with diffs viewed
Group: `group::code review`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -8982,6 +10626,8 @@ Count of unique merge requests per month with diffs viewed file by file
Group: `group::code review`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -8994,6 +10640,8 @@ Count of unique merge requests per week with diffs viewed file by file
Group: `group::code review`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -9006,6 +10654,8 @@ Count of unique users per month who added a suggestion
Group: `group::code review`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -9018,6 +10668,8 @@ Count of unique users per week who added a suggestion
Group: `group::code review`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -9030,6 +10682,8 @@ Count of unique users per month who applied a suggestion
Group: `group::code review`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -9042,6 +10696,8 @@ Count of unique users per week who applied a suggestion
Group: `group::code review`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -9054,6 +10710,8 @@ Count of unique users per month who add an approval rule to a merge request
Group: `group::code review`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -9066,6 +10724,8 @@ Count of unique users per week who add an approval rule to a merge request
Group: `group::code review`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -9078,6 +10738,8 @@ Count of unique users per month who delete an approval rule to a merge request
Group: `group::code review`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -9090,6 +10752,8 @@ Count of unique users per week who delete an approval rule to a merge request
Group: `group::code review`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -9102,6 +10766,8 @@ Count of unique users per month who delete an approval rule to a merge request
Group: `group::code review`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -9114,6 +10780,8 @@ Count of unique users per week who edit an approval rule to a merge request
Group: `group::code review`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -9126,6 +10794,8 @@ Count of unique users per month who approve a merge request
Group: `group::code review`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -9138,6 +10808,8 @@ Count of unique users per week who approve a merge request
Group: `group::code review`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -9150,6 +10822,8 @@ Count of unique users per month who are assigned to a merge request
Group: `group::code review`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -9162,6 +10836,8 @@ Count of unique users per week who are assigned to a merge request
Group: `group::code review`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -9174,6 +10850,8 @@ Count of unique users per month who changed assignees of a MR
Group: `group::code review`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -9186,6 +10864,8 @@ Count of unique users per week who changed assignees of a MR
Group: `group::code review`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -9198,6 +10878,8 @@ Count of unique users per month who closed a MR
Group: `group::code review`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -9210,6 +10892,8 @@ Count of unique users per week who closed a MR
Group: `group::code review`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -9222,6 +10906,8 @@ Count of unique users per month who commented on a MR
Group: `group::code review`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -9234,6 +10920,8 @@ Count of unique users per week who commented on a MR
Group: `group::code review`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -9246,6 +10934,8 @@ Count of unique users per month who create a merge request from an issue
Group: `group::code review`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -9258,6 +10948,8 @@ Count of unique users per week who create a merge request from an issue
Group: `group::code review`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -9270,6 +10962,8 @@ Count of unique users per month who created a MR
Group: `group::code review`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -9282,6 +10976,8 @@ Count of unique users per week who created a MR
Group: `group::code review`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -9294,6 +10990,8 @@ Count of unique users per month who create a multiline comment in a merge reques
Group: `group::code review`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -9306,6 +11004,8 @@ Count of unique users per week who create a multiline comment in a merge request
Group: `group::code review`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -9318,6 +11018,8 @@ Count of unique users per month who create a note as part of a merge request rev
Group: `group::code review`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -9330,6 +11032,8 @@ Count of unique users per week who create a note as part of a merge request revi
Group: `group::code review`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -9342,6 +11046,8 @@ Count of unique users per month who edited a comment on a MR
Group: `group::code review`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -9354,6 +11060,8 @@ Count of unique users per week who edited a comment on a MR
Group: `group::code review`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -9366,6 +11074,8 @@ Count of unique users per week who edit a multiline comment in a merge request
Group: `group::code review`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -9378,6 +11088,8 @@ Count of unique users per week who edit a multiline comment in a merge request
Group: `group::code review`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -9390,6 +11102,8 @@ Count of unique users per month who changed labels of a MR
Group: `group::code review`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -9402,6 +11116,8 @@ Count of unique users per week who changed labels of a MR
Group: `group::code review`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -9414,6 +11130,8 @@ Count of unique users per week who load the conflict resolution page
Group: `group::code review`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -9426,6 +11144,8 @@ Count of unique users per week who load the conflict resolution page
Group: `group::code review`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -9438,6 +11158,8 @@ Count of unique users per month who mark a merge request as a draft
Group: `group::code review`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -9450,6 +11172,8 @@ Count of unique users per week who mark a merge request as a draft
Group: `group::code review`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -9462,6 +11186,8 @@ Count of unique users per month who merged a MR
Group: `group::code review`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -9474,6 +11200,8 @@ Count of unique users per week who merged a MR
Group: `group::code review`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -9486,6 +11214,8 @@ Count of unique users per month who changed milestone of a MR
Group: `group::code review`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -9498,6 +11228,8 @@ Count of unique users per week who changed milestone of a MR
Group: `group::code review`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -9510,6 +11242,8 @@ Count of unique users per month who locked a MR
Group: `group::code review`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -9522,6 +11256,8 @@ Count of unique users per week who locked a MR
Group: `group::code review`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -9534,6 +11270,8 @@ Count of unique users per month who unlocked a MR
Group: `group::code review`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -9546,6 +11284,8 @@ Count of unique users per week who unlocked a MR
Group: `group::code review`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -9558,6 +11298,8 @@ Count of unique users per month who publish their review as part of a merge requ
Group: `group::code review`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -9570,6 +11312,8 @@ Count of unique users per week who publish their review as part of a merge reque
Group: `group::code review`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -9582,6 +11326,8 @@ Count of unique users per month who removed a comment on a MR
Group: `group::code review`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -9594,6 +11340,8 @@ Count of unique users per month who removed a comment on a MR
Group: `group::code review`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -9606,6 +11354,8 @@ Count of unique users per month who remove a multiline comment in a merge reques
Group: `group::code review`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -9618,6 +11368,8 @@ Count of unique users per week who remove a multiline comment in a merge request
Group: `group::code review`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -9630,6 +11382,8 @@ Count of unique users per month who reopened a MR
Group: `group::code review`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -9642,6 +11396,8 @@ Count of unique users per week who reopened a MR
Group: `group::code review`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -9654,6 +11410,8 @@ Count of unique users per week who attempt to resolve a conflict through the ui
Group: `group::code review`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -9666,6 +11424,8 @@ Count of unique users per week who attempt to resolve a conflict through the ui
Group: `group::code review`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -9678,6 +11438,8 @@ Count of unique users per month who resolve a thread in a merge request
Group: `group::code review`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -9690,6 +11452,8 @@ Count of unique users per week who resolve a thread in a merge request
Group: `group::code review`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -9702,6 +11466,8 @@ Count of unique users per month who request a review of a merge request
Group: `group::code review`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -9714,6 +11480,8 @@ Count of unique users per week who request a review of a merge request
Group: `group::code review`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -9726,6 +11494,8 @@ Count of unique users per month who changed reviewers of a MR
Group: `group::code review`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -9738,6 +11508,8 @@ Count of unique users per week who changed reviewers of a MR
Group: `group::code review`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -9750,6 +11522,8 @@ Count of unique users per month with diffs viewed file by file
Group: `group::code review`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -9762,6 +11536,8 @@ Count of unique users per week with diffs viewed file by file
Group: `group::code review`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -9774,6 +11550,8 @@ Count of unique users per month who changed time estimate of a MR
Group: `group::code review`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -9786,6 +11564,8 @@ Count of unique users per week who changed time estimate of a MR
Group: `group::code review`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -9798,6 +11578,8 @@ Count of unique users per month who changed time spent on a MR
Group: `group::code review`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -9810,6 +11592,8 @@ Count of unique users per week who changed time spent on a MR
Group: `group::code review`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -9822,6 +11606,8 @@ Count of unique users per month who toggled a task item in a merge request
Group: `group::code review`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -9834,6 +11620,8 @@ Count of unique users per week who toggled a task item in a merge request
Group: `group::code review`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -9846,6 +11634,8 @@ Count of unique users per month who unapprove a merge request
Group: `group::code review`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -9858,6 +11648,8 @@ Count of unique users per week who unapprove a merge request
Group: `group::code review`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -9870,6 +11662,8 @@ Count of unique users per month who unmark a merge request as a draft
Group: `group::code review`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -9882,6 +11676,8 @@ Count of unique users per week who unmark a merge request as a draft
Group: `group::code review`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -9894,6 +11690,8 @@ Count of unique users per month who unresolve a thread in a merge request
Group: `group::code review`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -9906,6 +11704,8 @@ Count of unique users per week who unresolve a thread in a merge request
Group: `group::code review`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -9918,6 +11718,8 @@ Count of unique users per month who use GitLab Workflow for VS Code
Group: `group::code review`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -9930,153 +11732,179 @@ Count of unique users per week who use GitLab Workflow for VS Code
Group: `group::code review`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
### `redis_hll_counters.compliance.a_compliance_audit_events_api_monthly`
-Missing description
+Unique users that have used the Audit Events API in a given month.
-[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216183942_a_compliance_audit_events_api_monthly.yml)
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_28d/20210216183942_a_compliance_audit_events_api_monthly.yml)
-Group: ``
+Group: `group::compliance`
+
+Data Category: `Optional`
Status: `data_available`
-Tiers: `free`
+Tiers: `premium`, `ultimate`
### `redis_hll_counters.compliance.a_compliance_audit_events_api_weekly`
-Missing description
+Unique users that have used the Audit Events API in a given week.
[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_7d/20210216183940_a_compliance_audit_events_api_weekly.yml)
-Group: ``
+Group: `group::compliance`
+
+Data Category: `Optional`
Status: `data_available`
-Tiers:
+Tiers: `premium`, `ultimate`
### `redis_hll_counters.compliance.compliance_total_unique_counts_monthly`
-Missing description
+Unique count of compliance actions in a given month
-[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216183946_compliance_total_unique_counts_monthly.yml)
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_28d/20210216183946_compliance_total_unique_counts_monthly.yml)
-Group: ``
+Group: `group::compliance`
+
+Data Category: `Optional`
Status: `data_available`
-Tiers: `free`
+Tiers: `premium`, `ultimate`
### `redis_hll_counters.compliance.compliance_total_unique_counts_weekly`
-Missing description
+Unique count of compliance actions in a given week
[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_7d/20210216183944_compliance_total_unique_counts_weekly.yml)
-Group: ``
+Group: `group::compliance`
+
+Data Category: `Optional`
Status: `data_available`
-Tiers:
+Tiers: `premium`, `ultimate`
### `redis_hll_counters.compliance.g_compliance_audit_events_monthly`
-Missing description
+Unique users who have viewed the audit event screen in a given month.
-[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216183930_g_compliance_audit_events_monthly.yml)
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_28d/20210216183930_g_compliance_audit_events_monthly.yml)
-Group: ``
+Group: `group::compliance`
+
+Data Category: `Optional`
Status: `data_available`
-Tiers: `free`
+Tiers: `premium`, `ultimate`
### `redis_hll_counters.compliance.g_compliance_audit_events_weekly`
-Missing description
+Number of unique visitors to group-level audit events screen in a given week
[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_7d/20210216183928_g_compliance_audit_events_weekly.yml)
-Group: ``
+Group: `group::compliance`
+
+Data Category: `Optional`
Status: `data_available`
-Tiers:
+Tiers: `premium`, `ultimate`
### `redis_hll_counters.compliance.g_compliance_dashboard_monthly`
-Missing description
+Unique users who have viewed the compliance dashboard in a given month.
-[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216183926_g_compliance_dashboard_monthly.yml)
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_28d/20210216183926_g_compliance_dashboard_monthly.yml)
-Group: ``
+Group: `group::compliance`
+
+Data Category: `Optional`
Status: `data_available`
-Tiers: `free`
+Tiers: `premium`, `ultimate`
### `redis_hll_counters.compliance.g_compliance_dashboard_weekly`
-Missing description
+Unique users who have looked at the compliance dashboard in a given week
[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_7d/20210216183924_g_compliance_dashboard_weekly.yml)
-Group: ``
+Group: `group::compliance`
+
+Data Category: `Optional`
Status: `data_available`
-Tiers:
+Tiers: `premium`, `ultimate`
### `redis_hll_counters.compliance.i_compliance_audit_events_monthly`
-Missing description
+Unique users that have viewed the instance-level audit events screen
-[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216183934_i_compliance_audit_events_monthly.yml)
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_28d/20210216183934_i_compliance_audit_events_monthly.yml)
-Group: ``
+Group: `group::compliance`
+
+Data Category: `Optional`
Status: `data_available`
-Tiers: `free`
+Tiers: `premium`, `ultimate`
### `redis_hll_counters.compliance.i_compliance_audit_events_weekly`
-Missing description
+Unique users that have viewed the instance-level audit events screen
[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_7d/20210216183932_i_compliance_audit_events_weekly.yml)
-Group: ``
+Group: `group::compliance`
+
+Data Category: `Optional`
Status: `data_available`
-Tiers:
+Tiers: `premium`, `ultimate`
### `redis_hll_counters.compliance.i_compliance_credential_inventory_monthly`
-Missing description
+Unique users who have viewed the credential inventory in a given month.
-[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216183938_i_compliance_credential_inventory_monthly.yml)
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_28d/20210216183938_i_compliance_credential_inventory_monthly.yml)
-Group: ``
+Group: `group::compliance`
+
+Data Category: `Optional`
Status: `data_available`
-Tiers: `free`
+Tiers: `ultimate`
### `redis_hll_counters.compliance.i_compliance_credential_inventory_weekly`
-Missing description
+Unique visitors to the credential inventory screen in a given week
[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_7d/20210216183936_i_compliance_credential_inventory_weekly.yml)
-Group: ``
+Group: `group::compliance`
+
+Data Category: `Optional`
Status: `data_available`
-Tiers:
+Tiers: `ultimate`
### `redis_hll_counters.deploy_token_packages.deploy_token_packages_total_unique_counts_monthly`
@@ -10086,6 +11914,8 @@ A monthly count of packages published to the registry using a deploy token
Group: `group::package`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -10098,6 +11928,8 @@ A weekly count of packages published to the registry using a deploy token
Group: `group::package`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -10110,6 +11942,8 @@ A monthly count of Composer packages published to the registry using a deploy to
Group: `group::package`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -10122,6 +11956,8 @@ A weekly count of Composer packages published to the registry using a deploy tok
Group: `group::package`
+Data Category: `Optional`
+
Status: `deprecated`
Tiers: `free`, `premium`, `ultimate`
@@ -10134,6 +11970,8 @@ A monthly count of Conan packages published to the registry using a deploy token
Group: `group::package`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -10146,6 +11984,8 @@ A weekly count of Conan packages published to the registry using a deploy token
Group: `group::package`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -10158,6 +11998,8 @@ A monthly count of container images published to the registry using a deploy tok
Group: `group::package`
+Data Category: `Optional`
+
Status: `deprecated`
Tiers: `free`, `premium`, `ultimate`
@@ -10170,6 +12012,8 @@ A weekly count of container images published to the registry using a deploy toke
Group: `group::package`
+Data Category: `Optional`
+
Status: `deprecated`
Tiers: `free`, `premium`, `ultimate`
@@ -10182,6 +12026,8 @@ A monthly count of Debian packages published to the registry using a deploy toke
Group: `group::package`
+Data Category: `Optional`
+
Status: `deprecated`
Tiers: `free`, `premium`, `ultimate`
@@ -10194,6 +12040,8 @@ A weekly count of Debian packages published to the registry using a deploy token
Group: `group::package`
+Data Category: `Optional`
+
Status: `deprecated`
Tiers: `free`, `premium`, `ultimate`
@@ -10206,6 +12054,8 @@ A monthly count of generic packages published to the registry using a deploy tok
Group: `group::package`
+Data Category: `Optional`
+
Status: `broken`
Tiers: `free`, `premium`, `ultimate`
@@ -10218,6 +12068,8 @@ A weekly count of generic packages published to the registry using a deploy toke
Group: `group::package`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -10230,6 +12082,8 @@ A monthly count of Go modules published to the registry using a deploy token
Group: `group::package`
+Data Category: `Optional`
+
Status: `deprecated`
Tiers: `free`, `premium`, `ultimate`
@@ -10242,6 +12096,8 @@ A weekly count of Go modules published to the registry using a deploy token
Group: `group::package`
+Data Category: `Optional`
+
Status: `deprecated`
Tiers: `free`, `premium`, `ultimate`
@@ -10254,6 +12110,8 @@ Distinct Helm pakages deployed in recent 28 days
Group: `group::package`
+Data Category: `Optional`
+
Status: `implemented`
Tiers: `free`, `premium`, `ultimate`
@@ -10266,6 +12124,8 @@ Distinct Helm pakages deployed in recent 7 days
Group: `group::package`
+Data Category: `Optional`
+
Status: `implemented`
Tiers: `free`, `premium`, `ultimate`
@@ -10278,6 +12138,8 @@ A monthly count of Maven packages published to the registry using a deploy token
Group: `group::package`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -10290,6 +12152,8 @@ A weekly count of Maven packages published to the registry using a deploy token
Group: `group::package`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -10302,6 +12166,8 @@ A monthly count of npm packages published to the registry using a deploy token
Group: `group::package`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -10314,6 +12180,8 @@ A weekly count of npm packages published to the registry using a deploy token
Group: `group::package`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -10326,6 +12194,8 @@ A monthly count of NuGet packages published to the registry using a deploy token
Group: `group::package`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -10338,6 +12208,8 @@ A weekly count of NuGet packages published to the registry using a deploy token
Group: `group::package`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -10350,6 +12222,8 @@ A monthly count of PyPI packages published to the registry using a deploy token
Group: `group::package`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -10362,6 +12236,8 @@ A weekly count of Python packages published to the registry using a deploy token
Group: `group::package`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -10374,6 +12250,8 @@ Distinct count events for RubyGems packages published using a Deploy token in re
Group: `group::package`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -10386,6 +12264,8 @@ A weekly count of distinct RubyGems packages published using a deploy token
Group: `group::package`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -10398,6 +12278,8 @@ A monthly count of package tags published to the registry using a deploy token
Group: `group::package`
+Data Category: `Optional`
+
Status: `deprecated`
Tiers: `free`, `premium`, `ultimate`
@@ -10410,6 +12292,8 @@ A weekly count of users that have published a package tag to the registry using
Group: `group::package`
+Data Category: `Optional`
+
Status: `deprecated`
Tiers: `free`, `premium`, `ultimate`
@@ -10422,6 +12306,8 @@ Number of distinct users authorized via deploy token creating Terraform Module p
Group: `group::configure`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -10434,6 +12320,8 @@ Number of distinct users authorized via deploy token creating Terraform Module p
Group: `group::configure`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -10446,6 +12334,8 @@ Number of users performing actions on Jira issues by month
Group: `group::ecosystem`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -10458,6 +12348,8 @@ Number of users performing actions on Jira issues by week
Group: `group::ecosystem`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -10470,6 +12362,8 @@ Number of users closing Jira issues by month
Group: `group::ecosystem`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -10482,6 +12376,8 @@ Number of users closing Jira issues by week
Group: `group::ecosystem`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -10494,6 +12390,8 @@ Number of users creating Jira issues by month
Group: `group::ecosystem`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `premium`, `ultimate`
@@ -10506,6 +12404,8 @@ Number of users creating Jira issues by week
Group: `group::ecosystem`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `premium`, `ultimate`
@@ -10518,6 +12418,8 @@ Number of users that cross-referenced Jira issues by month
Group: `group::ecosystem`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -10530,6 +12432,8 @@ Number of users that cross-referenced Jira issues by week
Group: `group::ecosystem`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -10542,6 +12446,8 @@ Count of Jira Issue List visits by month
Group: `group::ecosystem`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `premium`, `ultimate`
@@ -10554,6 +12460,8 @@ Count of Jira Issue List visits by week
Group: `group::ecosystem`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `premium`, `ultimate`
@@ -10566,6 +12474,8 @@ Calculated unique users to trigger a Slack message by performing an action on a
Group: `group::ecosystem`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -10578,6 +12488,8 @@ Calculated unique users to trigger a Slack message by performing an action on a
Group: `group::ecosystem`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -10590,6 +12502,8 @@ Calculated unique users to trigger a Slack message by creating a confidential no
Group: `group::ecosystem`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -10602,6 +12516,8 @@ Calculated unique users to trigger a Slack message by creating a confidential no
Group: `group::ecosystem`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -10614,6 +12530,8 @@ Calculated unique users to trigger a Slack message by performing a deployment by
Group: `group::ecosystem`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -10626,6 +12544,8 @@ Calculated unique users to trigger a Slack message by performing a deployment by
Group: `group::ecosystem`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -10638,6 +12558,8 @@ Calculated unique users to trigger a Slack message by performing an action on an
Group: `group::ecosystem`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -10650,6 +12572,8 @@ Calculated unique users to trigger a Slack message by performing an action on an
Group: `group::ecosystem`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -10662,6 +12586,8 @@ Calculated unique users to trigger a Slack message by performing an action on a
Group: `group::ecosystem`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -10674,6 +12600,8 @@ Calculated unique users to trigger a Slack message by performing an action on a
Group: `group::ecosystem`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -10686,6 +12614,8 @@ Calculated unique users to trigger a Slack message by creating a note by month
Group: `group::ecosystem`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -10698,6 +12628,8 @@ Calculated unique users to trigger a Slack message by creating a note by week
Group: `group::ecosystem`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -10710,6 +12642,8 @@ Calculated unique users to trigger a Slack message by performing a Git push by m
Group: `group::ecosystem`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -10722,6 +12656,8 @@ Calculated unique users to trigger a Slack message by performing a Git push by w
Group: `group::ecosystem`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -10734,6 +12670,8 @@ Calculated unique users to trigger a Slack message by performing a tag push by m
Group: `group::ecosystem`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -10746,6 +12684,8 @@ Calculated unique users to trigger a Slack message by performing a tag push by w
Group: `group::ecosystem`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -10758,6 +12698,8 @@ Calculated unique users to trigger a Slack message by performing an action on a
Group: `group::ecosystem`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -10770,6 +12712,8 @@ Calculated unique users to trigger a Slack message by performing an action on a
Group: `group::ecosystem`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -10782,6 +12726,8 @@ Missing description
Group: ``
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `ultimate`
@@ -10794,6 +12740,8 @@ Missing description
Group: ``
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `ultimate`
@@ -10806,6 +12754,8 @@ Count of MAU creating epic boards
Group: `group::product planning`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `premium`, `ultimate`
@@ -10818,6 +12768,8 @@ Count of WAU creating epic boards
Group: `group::product planning`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `premium`, `ultimate`
@@ -10830,6 +12782,8 @@ Count of MAU updating epic board names
Group: `group::product planning`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `premium`, `ultimate`
@@ -10842,6 +12796,8 @@ Count of WAU updating epic board names
Group: `group::product planning`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `premium`, `ultimate`
@@ -10854,6 +12810,8 @@ Count of MAU viewing epic boards
Group: `group::product planning`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `premium`, `ultimate`
@@ -10866,6 +12824,8 @@ Count of WAU viewing epic boards
Group: `group::product planning`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `premium`, `ultimate`
@@ -10878,6 +12838,8 @@ Total monthly users count for epics_usage
Group: `group::product planning`
+Data Category: `Operational`
+
Status: `data_available`
Tiers: `premium`, `ultimate`
@@ -10890,6 +12852,8 @@ Total weekly users count for epics_usage
Group: `group::product planning`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `premium`, `ultimate`
@@ -10902,6 +12866,8 @@ Counts of MAU closing epics
Group: `group::product planning`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `premium`, `ultimate`
@@ -10914,6 +12880,8 @@ Counts of WAU closing epics
Group: `group::product planning`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `premium`, `ultimate`
@@ -10926,6 +12894,8 @@ Count of MAU creating epics
Group: `group::product planning`
+Data Category: `Operational`
+
Status: `data_available`
Tiers: `premium`, `ultimate`
@@ -10938,6 +12908,8 @@ Count of WAU creating epics
Group: `group::product planning`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `premium`, `ultimate`
@@ -10950,6 +12922,8 @@ Count of MAU cross referencing epics
Group: `group::product planning`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `premium`, `ultimate`
@@ -10962,6 +12936,8 @@ Counts of WAU cross referencing epics
Group: `group::product planning`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `premium`, `ultimate`
@@ -10974,6 +12950,8 @@ Count of MAU destroying epics
Group: `group::product planning`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `premium`, `ultimate`
@@ -10986,6 +12964,8 @@ Count of WAU destroying epics
Group: `group::product planning`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `premium`, `ultimate`
@@ -10998,6 +12978,8 @@ Count of MAU adding issues to epics
Group: `group::product planning`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `premium`, `ultimate`
@@ -11010,6 +12992,8 @@ Count of WAU adding issues to epics
Group: `group::product planning`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `premium`, `ultimate`
@@ -11022,6 +13006,8 @@ Counts of MAU moving epic issues between projects
Group: `group::product planning`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `premium`, `ultimate`
@@ -11034,6 +13020,8 @@ Counts of WAU moving epic issues between projects
Group: `group::product planning`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `premium`, `ultimate`
@@ -11046,6 +13034,8 @@ Count of MAU removing issues from epics
Group: `group::product planning`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `premium`, `ultimate`
@@ -11058,6 +13048,8 @@ Counts of WAU removing issues from epics
Group: `group::product planning`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `premium`, `ultimate`
@@ -11070,6 +13062,8 @@ Counts of MAU closing epics
Group: `group::product planning`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `premium`, `ultimate`
@@ -11082,6 +13076,8 @@ Counts of WAU re-opening epics
Group: `group::product planning`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `premium`, `ultimate`
@@ -11094,6 +13090,8 @@ Count of MAU chaging the epic lables
Group: `group::product planning`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `premium`, `ultimate`
@@ -11106,6 +13104,8 @@ Count of WAU chaging the epic lables
Group: `group::product planning`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `premium`, `ultimate`
@@ -11118,6 +13118,8 @@ Count of MAU promoting issues to epics
Group: `group::product planning`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `premium`, `ultimate`
@@ -11130,6 +13132,8 @@ Counts of WAU promoting issues to epics
Group: `group::product planning`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `premium`, `ultimate`
@@ -11142,6 +13146,8 @@ Counts of MAU awarding emoji on epic
Group: `group::product planning`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `premium`, `ultimate`
@@ -11154,6 +13160,8 @@ Counts of WAU awarding emoji on epic
Group: `group::product planning`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `premium`, `ultimate`
@@ -11166,6 +13174,8 @@ Counts of MAU adding epic notes
Group: `group::product planning`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `premium`, `ultimate`
@@ -11178,6 +13188,8 @@ Counts of WAU adding epic notes
Group: `group::product planning`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `premium`, `ultimate`
@@ -11190,6 +13202,8 @@ Counts of MAU destroying epic notes
Group: `group::product planning`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `premium`, `ultimate`
@@ -11202,6 +13216,8 @@ Counts of WAU destroying epic notes
Group: `group::product planning`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `premium`, `ultimate`
@@ -11214,6 +13230,8 @@ Number of users creating an issue from an epic
Group: `group::product planning`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `premium`
@@ -11226,6 +13244,8 @@ Number of users creating an issue from an epic
Group: `group::product planning`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `premium`
@@ -11238,6 +13258,8 @@ Counts of MAU removing emoji on epic
Group: `group::product planning`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `premium`, `ultimate`
@@ -11250,6 +13272,8 @@ Counts of WAU removing emoji on epic
Group: `group::product planning`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `premium`, `ultimate`
@@ -11262,6 +13286,8 @@ Count of MAU making epics confidential
Group: `group::product planning`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `premium`, `ultimate`
@@ -11274,6 +13300,8 @@ Count of WAU making epics confidential
Group: `group::product planning`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `premium`, `ultimate`
@@ -11286,6 +13314,8 @@ Counts of MAU setting epic due date as inherited
Group: `group::product planning`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `premium`, `ultimate`
@@ -11298,6 +13328,8 @@ Counts of WAU setting epic due date as fixed
Group: `group::product planning`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `premium`, `ultimate`
@@ -11310,6 +13342,8 @@ Counts of MAU setting epic due date as inherited
Group: `group::product planning`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `premium`, `ultimate`
@@ -11322,6 +13356,8 @@ Counts of WAU setting epic due date as inherited
Group: `group::product planning`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `premium`, `ultimate`
@@ -11334,6 +13370,8 @@ Counts of MAU setting epic start date as fixed
Group: `group::product planning`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `premium`, `ultimate`
@@ -11346,6 +13384,8 @@ Counts of WAU setting epic start date as fixed
Group: `group::product planning`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `premium`, `ultimate`
@@ -11358,6 +13398,8 @@ Counts of MAU setting epic start date as inherited
Group: `group::product planning`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `premium`, `ultimate`
@@ -11370,6 +13412,8 @@ Counts of WAU setting epic start date as inherited
Group: `group::product planning`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `premium`, `ultimate`
@@ -11382,6 +13426,8 @@ Count of MAU making epics visible
Group: `group::product planning`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `premium`, `ultimate`
@@ -11394,6 +13440,8 @@ Count of WAU making epics visible
Group: `group::product planning`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `premium`, `ultimate`
@@ -11406,6 +13454,8 @@ Counts of MAU changing epic descriptions
Group: `group::product planning`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `premium`, `ultimate`
@@ -11418,6 +13468,8 @@ Counts of WAU changing epic descriptions
Group: `group::product planning`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `premium`, `ultimate`
@@ -11430,6 +13482,8 @@ Counts of MAU updating epic notes
Group: `group::product planning`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `premium`, `ultimate`
@@ -11442,6 +13496,8 @@ Counts of WAU updating epic notes
Group: `group::product planning`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `premium`, `ultimate`
@@ -11454,6 +13510,8 @@ Counts of MAU updating parent on epic
Group: `group::product planning`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `premium`, `ultimate`
@@ -11466,6 +13524,8 @@ Counts of WAU updating parent on epic
Group: `group::product planning`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `premium`, `ultimate`
@@ -11478,6 +13538,8 @@ Counts of MAU changing epic titles
Group: `group::product planning`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `premium`, `ultimate`
@@ -11490,6 +13552,8 @@ Counts of WAU changing epic titles
Group: `group::product planning`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `premium`, `ultimate`
@@ -11502,6 +13566,8 @@ Counts of MAU manually updating fixed due date
Group: `group::product planning`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `premium`, `ultimate`
@@ -11514,6 +13580,8 @@ Counts of WAU manually updating fixed due date
Group: `group::product planning`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `premium`, `ultimate`
@@ -11526,6 +13594,8 @@ Counts of MAU manually updating fixed start date
Group: `group::product planning`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `premium`, `ultimate`
@@ -11538,6 +13608,8 @@ Counts of WAU manually updating fixed start date
Group: `group::product planning`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `premium`, `ultimate`
@@ -11550,6 +13622,8 @@ Counts of MAU checking epic task
Group: `group::product planning`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `premium`, `ultimate`
@@ -11562,6 +13636,8 @@ Counts of WAU checking epic task
Group: `group::product planning`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `premium`, `ultimate`
@@ -11574,6 +13650,8 @@ Counts of MAU unchecking epic task
Group: `group::product planning`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `premium`, `ultimate`
@@ -11586,6 +13664,8 @@ Counts of WAU unchecking epic task
Group: `group::product planning`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `premium`, `ultimate`
@@ -11598,6 +13678,8 @@ Number of users editing a file from the single file editor
Group: `group::editor`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -11610,6 +13692,8 @@ Weekly number of users editing from the single file editor
Group: `group::editor`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -11622,6 +13706,8 @@ Count of monthly edits to a snippet
Group: `group::editor`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -11634,6 +13720,8 @@ Weekly number of users editing Snippets
Group: `group::editor`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -11646,6 +13734,8 @@ Number of user editing files using the Static Site Editor
Group: `group::editor`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -11658,6 +13748,8 @@ Weekly number of users editing using the Static Site Editor
Group: `group::editor`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -11670,6 +13762,8 @@ Number of users editing a file from the Web IDE
Group: `group::editor`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -11682,6 +13776,8 @@ Weekly number of users editing using the Web IDE
Group: `group::editor`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -11694,6 +13790,8 @@ Count of unique users per month who edited a file from the Web IDE
Group: `group::editor`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -11706,369 +13804,431 @@ Weekly number of users editing a file using the Web IDE
Group: `group::editor`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
### `redis_hll_counters.incident_management.incident_management_alert_assigned_monthly`
-Missing description
+Count of unique users assigning an alert per month
[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216180533_incident_management_alert_assigned_monthly.yml)
-Group: `group::health`
+Group: `group::monitor`
+
+Data Category: `Optional`
Status: `data_available`
-Tiers: `free`
+Tiers: `free`, `premium`, `ultimate`
### `redis_hll_counters.incident_management.incident_management_alert_assigned_weekly`
-Missing description
+Count of unique users assigning an alert per week
-[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_7d/20210216180532_incident_management_alert_assigned_weekly.yml)
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_7d/20210216180532_incident_management_alert_assigned_weekly.yml)
+
+Group: `group::monitor`
-Group: `group::health`
+Data Category: `Optional`
Status: `data_available`
-Tiers:
+Tiers: `free`, `premium`, `ultimate`
### `redis_hll_counters.incident_management.incident_management_alert_status_changed_monthly`
-Missing description
+Count of unique users changing alert's status changes per month
[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216180530_incident_management_alert_status_changed_monthly.yml)
-Group: `group::health`
+Group: `group::monitor`
+
+Data Category: `Optional`
Status: `data_available`
-Tiers: `free`
+Tiers: `free`, `premium`, `ultimate`
### `redis_hll_counters.incident_management.incident_management_alert_status_changed_weekly`
-Missing description
+Count of unique users changing alert's status per week
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_7d/20210216180528_incident_management_alert_status_changed_weekly.yml)
-[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_7d/20210216180528_incident_management_alert_status_changed_weekly.yml)
+Group: `group::monitor`
-Group: `group::health`
+Data Category: `Optional`
Status: `data_available`
-Tiers:
+Tiers: `free`, `premium`, `ultimate`
### `redis_hll_counters.incident_management.incident_management_alert_todo_monthly`
-Missing description
+Count of unique users adding alerts to the TODO list per month
[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216180537_incident_management_alert_todo_monthly.yml)
-Group: `group::health`
+Group: `group::monitor`
+
+Data Category: `Optional`
Status: `data_available`
-Tiers: `free`
+Tiers: `free`, `premium`, `ultimate`
### `redis_hll_counters.incident_management.incident_management_alert_todo_weekly`
-Missing description
+Count of unique users adding alerts to the TODO list per week
-[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_7d/20210216180535_incident_management_alert_todo_weekly.yml)
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_7d/20210216180535_incident_management_alert_todo_weekly.yml)
-Group: `group::health`
+Group: `group::monitor`
+
+Data Category: `Optional`
Status: `data_available`
-Tiers:
+Tiers: `free`, `premium`, `ultimate`
### `redis_hll_counters.incident_management.incident_management_incident_assigned_monthly`
-Missing description
+Count of users assigning incidents per month
[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216180552_incident_management_incident_assigned_monthly.yml)
-Group: `group::health`
+Group: `group::monitor`
+
+Data Category: `Optional`
Status: `data_available`
-Tiers: `free`
+Tiers: `free`, `premium`, `ultimate`
### `redis_hll_counters.incident_management.incident_management_incident_assigned_weekly`
-Missing description
+Count of unique users assiging incidents per week
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_7d/20210216180550_incident_management_incident_assigned_weekly.yml)
-[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_7d/20210216180550_incident_management_incident_assigned_weekly.yml)
+Group: `group::monitor`
-Group: `group::health`
+Data Category: `Optional`
Status: `data_available`
-Tiers:
+Tiers: `free`, `premium`, `ultimate`
### `redis_hll_counters.incident_management.incident_management_incident_change_confidential_monthly`
-Missing description
+Count of users changing incidents to confidential per month
[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216180618_incident_management_incident_change_confidential_monthly.yml)
-Group: `group::health`
+Group: `group::monitor`
+
+Data Category: `Optional`
Status: `data_available`
-Tiers: `free`
+Tiers: `free`, `premium`, `ultimate`
### `redis_hll_counters.incident_management.incident_management_incident_change_confidential_weekly`
-Missing description
+Count of unique users changing incidents to confidential per week
-[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_7d/20210216180616_incident_management_incident_change_confidential_weekly.yml)
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_7d/20210216180616_incident_management_incident_change_confidential_weekly.yml)
+
+Group: `group::monitor`
-Group: `group::health`
+Data Category: `Optional`
Status: `data_available`
-Tiers:
+Tiers: `free`, `premium`, `ultimate`
### `redis_hll_counters.incident_management.incident_management_incident_closed_monthly`
-Missing description
+Count of users closing incidents per month
[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216180548_incident_management_incident_closed_monthly.yml)
-Group: `group::health`
+Group: `group::monitor`
+
+Data Category: `Optional`
Status: `data_available`
-Tiers: `free`
+Tiers: `free`, `premium`, `ultimate`
### `redis_hll_counters.incident_management.incident_management_incident_closed_weekly`
-Missing description
+Count of users closing incidents per week
-[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_7d/20210216180546_incident_management_incident_closed_weekly.yml)
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_7d/20210216180546_incident_management_incident_closed_weekly.yml)
-Group: `group::health`
+Group: `group::monitor`
+
+Data Category: `Optional`
Status: `data_available`
-Tiers:
+Tiers: `free`, `premium`, `ultimate`
### `redis_hll_counters.incident_management.incident_management_incident_comment_monthly`
-Missing description
+Count of unique users adding comments per month on incidents
[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216180559_incident_management_incident_comment_monthly.yml)
-Group: `group::health`
+Group: `group::monitor`
+
+Data Category: `Optional`
Status: `data_available`
-Tiers: `free`
+Tiers: `free`, `premium`, `ultimate`
### `redis_hll_counters.incident_management.incident_management_incident_comment_weekly`
-Missing description
+Count of unique users adding comments on incidents per week
-[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_7d/20210216180558_incident_management_incident_comment_weekly.yml)
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_7d/20210216180558_incident_management_incident_comment_weekly.yml)
-Group: `group::health`
+Group: `group::monitor`
+
+Data Category: `Optional`
Status: `data_available`
-Tiers:
+Tiers: `free`, `premium`, `ultimate`
### `redis_hll_counters.incident_management.incident_management_incident_created_monthly`
-Missing description
+Count of unique users creating incidents per month
[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216180541_incident_management_incident_created_monthly.yml)
-Group: `group::health`
+Group: `group::monitor`
+
+Data Category: `Optional`
Status: `data_available`
-Tiers: `free`
+Tiers: `free`, `premium`, `ultimate`
### `redis_hll_counters.incident_management.incident_management_incident_created_weekly`
-Missing description
+Count of unique users creating incidents per week
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_7d/20210216180539_incident_management_incident_created_weekly.yml)
-[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_7d/20210216180539_incident_management_incident_created_weekly.yml)
+Group: `group::monitor`
-Group: `group::health`
+Data Category: `Optional`
Status: `data_available`
-Tiers:
+Tiers: `free`, `premium`, `ultimate`
### `redis_hll_counters.incident_management.incident_management_incident_published_monthly`
-Missing description
+Count of unique users that published incidents per month
-[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216180607_incident_management_incident_published_monthly.yml)
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_28d/20210216180607_incident_management_incident_published_monthly.yml)
-Group: `group::health`
+Group: `group::monitor`
+
+Data Category: `Optional`
Status: `data_available`
-Tiers: `free`
+Tiers: `free`, `premium`, `ultimate`
### `redis_hll_counters.incident_management.incident_management_incident_published_weekly`
-Missing description
+Count of unique users that published incidents per week
[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_7d/20210216180605_incident_management_incident_published_weekly.yml)
-Group: `group::health`
+Group: `group::monitor`
+
+Data Category: `Optional`
Status: `data_available`
-Tiers:
+Tiers: `free`, `premium`, `ultimate`
### `redis_hll_counters.incident_management.incident_management_incident_relate_monthly`
-Missing description
+Count of unique users adding issues per month that are related to an incident
[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216180611_incident_management_incident_relate_monthly.yml)
-Group: `group::health`
+Group: `group::monitor`
+
+Data Category: `Optional`
Status: `data_available`
-Tiers: `free`
+Tiers: `free`, `premium`, `ultimate`
### `redis_hll_counters.incident_management.incident_management_incident_relate_weekly`
-Missing description
+Count of unique users adding issues per that are related to an incident week
-[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_7d/20210216180609_incident_management_incident_relate_weekly.yml)
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_7d/20210216180609_incident_management_incident_relate_weekly.yml)
-Group: `group::health`
+Group: `group::monitor`
+
+Data Category: `Optional`
Status: `data_available`
-Tiers:
+Tiers: `free`, `premium`, `ultimate`
### `redis_hll_counters.incident_management.incident_management_incident_reopened_monthly`
-Missing description
+Count of unique users reopening incidents per month
[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216180545_incident_management_incident_reopened_monthly.yml)
-Group: `group::health`
+Group: `group::monitor`
+
+Data Category: `Optional`
Status: `data_available`
-Tiers: `free`
+Tiers: `free`, `premium`, `ultimate`
### `redis_hll_counters.incident_management.incident_management_incident_reopened_weekly`
-Missing description
+Count of unique users reopening incidents per week
-[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_7d/20210216180543_incident_management_incident_reopened_weekly.yml)
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_7d/20210216180543_incident_management_incident_reopened_weekly.yml)
-Group: `group::health`
+Group: `group::monitor`
+
+Data Category: `Optional`
Status: `data_available`
-Tiers:
+Tiers: `free`, `premium`, `ultimate`
### `redis_hll_counters.incident_management.incident_management_incident_todo_monthly`
-Missing description
+Count of unique users adding incidents to the TODO list per month
[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216180556_incident_management_incident_todo_monthly.yml)
-Group: `group::health`
+Group: `group::monitor`
+
+Data Category: `Optional`
Status: `data_available`
-Tiers: `free`
+Tiers: `free`, `premium`, `ultimate`
### `redis_hll_counters.incident_management.incident_management_incident_todo_weekly`
-Missing description
+Count of unique users adding incidents to the TODO list per week
-[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_7d/20210216180554_incident_management_incident_todo_weekly.yml)
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_7d/20210216180554_incident_management_incident_todo_weekly.yml)
-Group: `group::health`
+Group: `group::monitor`
+
+Data Category: `Optional`
Status: `data_available`
-Tiers:
+Tiers: `free`, `premium`, `ultimate`
### `redis_hll_counters.incident_management.incident_management_incident_unrelate_monthly`
-Missing description
+Count of users removing issues that are related to an incident per month
[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216180614_incident_management_incident_unrelate_monthly.yml)
-Group: `group::health`
+Group: `group::monitor`
+
+Data Category: `Optional`
Status: `data_available`
-Tiers: `free`
+Tiers: `free`, `premium`, `ultimate`
### `redis_hll_counters.incident_management.incident_management_incident_unrelate_weekly`
-Missing description
+Count of unique users removing issue that are related to an incident per week
-[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_7d/20210216180612_incident_management_incident_unrelate_weekly.yml)
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_7d/20210216180612_incident_management_incident_unrelate_weekly.yml)
+
+Group: `group::monitor`
-Group: `group::health`
+Data Category: `Optional`
Status: `data_available`
-Tiers:
+Tiers: `free`, `premium`, `ultimate`
### `redis_hll_counters.incident_management.incident_management_incident_zoom_meeting_monthly`
-Missing description
+Count of users creating Zoom meetings about incidents per month
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216180603_incident_management_incident_zoom_meeting_monthly.yml)
-[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_28d/20210216180603_incident_management_incident_zoom_meeting_monthly.yml)
+Group: `group::monitor`
-Group: `group::health`
+Data Category: `Optional`
Status: `data_available`
-Tiers:
+Tiers: `free`, `premium`, `ultimate`
### `redis_hll_counters.incident_management.incident_management_incident_zoom_meeting_weekly`
-Missing description
+Count of unique users creating Zoom meetings about incidents per week
-[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_7d/20210216180601_incident_management_incident_zoom_meeting_weekly.yml)
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_7d/20210216180601_incident_management_incident_zoom_meeting_weekly.yml)
-Group: `group::health`
+Group: `group::monitor`
+
+Data Category: `Optional`
Status: `data_available`
-Tiers:
+Tiers: `free`, `premium`, `ultimate`
### `redis_hll_counters.incident_management.incident_management_total_unique_counts_monthly`
-Missing description
+Count of unique users performing events related with incidents per month
[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216180622_incident_management_total_unique_counts_monthly.yml)
-Group: `group::health`
+Group: `group::monitor`
+
+Data Category: `Operational`
Status: `data_available`
-Tiers: `free`
+Tiers: `free`, `premium`, `ultimate`
### `redis_hll_counters.incident_management.incident_management_total_unique_counts_weekly`
-Missing description
+Count of unique users performing events related to the incident management
-[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_7d/20210216180620_incident_management_total_unique_counts_weekly.yml)
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_7d/20210216180620_incident_management_total_unique_counts_weekly.yml)
-Group: `group::health`
+Group: `group::monitor`
+
+Data Category: `Optional`
Status: `data_available`
-Tiers:
+Tiers: `free`, `premium`, `ultimate`
### `redis_hll_counters.incident_management_alerts.incident_management_alert_create_incident_monthly`
@@ -12076,23 +14236,27 @@ Count of unique users per month to create an incident corresponding to an alert
[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216180625_incident_management_alert_create_incident_monthly.yml)
-Group: `group::health`
+Group: `group::monitor`
+
+Data Category: `Optional`
Status: `data_available`
-Tiers: `free`
+Tiers: `free`, `premium`, `ultimate`
### `redis_hll_counters.incident_management_alerts.incident_management_alert_create_incident_weekly`
Count of unique users per week to create an incident corresponding to an alert
-[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_7d/20210216180623_incident_management_alert_create_incident_weekly.yml)
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_7d/20210216180623_incident_management_alert_create_incident_weekly.yml)
-Group: `group::health`
+Group: `group::monitor`
+
+Data Category: `Optional`
Status: `data_available`
-Tiers:
+Tiers: `free`, `premium`, `ultimate`
### `redis_hll_counters.incident_management_oncall.i_incident_management_oncall_notification_sent_monthly`
@@ -12102,6 +14266,8 @@ Count of unique users to receive a notification while on-call
Group: `group::monitor`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `premium`, `ultimate`
@@ -12114,6 +14280,8 @@ Count of unique users to receive a notification while on-call
Group: `group::monitor`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `premium`, `ultimate`
@@ -12126,6 +14294,8 @@ Count of MAU adding an issue to an epic
Group: `group::project management`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `premium`, `ultimate`
@@ -12138,6 +14308,8 @@ Count of WAU adding an issue to an epic
Group: `group::project management`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `premium`, `ultimate`
@@ -12150,6 +14322,8 @@ Count of MAU changing issue assignees
Group: `group::project management`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -12162,6 +14336,8 @@ Count of WAU changing issue assignees
Group: `group::project management`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -12174,6 +14350,8 @@ Count of MAU changing the epic on an issue
Group: `group::project management`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `premium`, `ultimate`
@@ -12186,6 +14364,8 @@ Count of WAU changing the epic on an issue
Group: `group::project management`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `premium`, `ultimate`
@@ -12198,6 +14378,8 @@ Count of MAU cloning an issue
Group: `group::project management`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -12210,6 +14392,8 @@ Count of WAU cloning an issue
Group: `group::project management`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -12222,6 +14406,8 @@ Count of MAU closing an issue
Group: `group::project management`
+Data Category: `Operational`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -12234,6 +14420,8 @@ Count of WAU closing an issue
Group: `group::project management`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -12246,6 +14434,8 @@ Count of MAU commenting on an issue
Group: `group::project management`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -12258,6 +14448,8 @@ Count of WAU commenting on an issue
Group: `group::project management`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -12270,6 +14462,8 @@ Count of MAU editing a comment on an issue
Group: `group::project management`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -12282,6 +14476,8 @@ Count of WAU editing a comment on an issue
Group: `group::project management`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -12294,6 +14490,8 @@ Count of MAU deleting a comment from an issue
Group: `group::project management`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -12306,6 +14504,8 @@ Count of WAU deleting a comment from an issue
Group: `group::project management`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -12318,6 +14518,8 @@ Count of MAU creating new issues
Group: `group::project management`
+Data Category: `Operational`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -12330,6 +14532,8 @@ Count of WAU creating issues
Group: `group::project management`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -12342,6 +14546,8 @@ Count of MAU referencing an issue from somewhere else
Group: `group::project management`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -12354,6 +14560,8 @@ Count of WAU referencing an issue from somewhere else
Group: `group::project management`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -12366,6 +14574,8 @@ Count of MAU editing an issue description
Group: `group::project management`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -12378,6 +14588,8 @@ Count of WAU editing an issue description
Group: `group::project management`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -12390,6 +14602,8 @@ Count of MAU adding a design to an issue
Group: `group::project management`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -12402,6 +14616,8 @@ Count of WAU adding a design to an issue
Group: `group::project management`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -12414,6 +14630,8 @@ Count of MAU modifying a design on an issue
Group: `group::project management`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -12426,6 +14644,8 @@ Count of WAU modifying a design on an issue
Group: `group::project management`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -12438,6 +14658,8 @@ Count of MAU removing a design from an issue
Group: `group::project management`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -12450,6 +14672,8 @@ Count of WAU removing a design from an issue
Group: `group::project management`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -12462,6 +14686,8 @@ Count of MAU changing an issue due date
Group: `group::project management`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -12474,6 +14700,8 @@ Count of WAU changing an issue due date
Group: `group::project management`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -12486,6 +14714,8 @@ Count of MAU changing the health status on an issue
Group: `group::product planning`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `ultimate`
@@ -12498,6 +14728,8 @@ Count of WAU changing the health status on an issue
Group: `group::product planning`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `ultimate`
@@ -12510,6 +14742,8 @@ Count of MAU changing an issue's iteration
Group: `group::project management`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `premium`, `ultimate`
@@ -12522,6 +14756,8 @@ Count of WAU changing an issue's iteration
Group: `group::project management`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `premium`, `ultimate`
@@ -12534,6 +14770,8 @@ Count of MAU changing an issue's label
Group: `group::project management`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -12546,6 +14784,8 @@ Count of WAU changing an issue's label
Group: `group::project management`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -12558,6 +14798,8 @@ Count of MAU locking an issue
Group: `group::project management`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -12570,6 +14812,8 @@ Count of WAU locking an issue
Group: `group::project management`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -12582,6 +14826,8 @@ Count of MAU making an issue confidential
Group: `group::project management`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -12594,6 +14840,8 @@ Count of WAU making an issue confidential
Group: `group::project management`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -12606,6 +14854,8 @@ Count of MAU making an issue not confidential
Group: `group::project management`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -12618,6 +14868,8 @@ Count of WAU making an issue not confidential
Group: `group::project management`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -12630,6 +14882,8 @@ Count of MAU marking an issue as a duplicate
Group: `group::project management`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -12642,6 +14896,8 @@ Count of WAU marking an issue as a duplicate
Group: `group::project management`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -12654,6 +14910,8 @@ Count of MAU changing an issue's milestone
Group: `group::project management`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -12666,6 +14924,8 @@ Count of WAU changing an issue's milestone
Group: `group::project management`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -12678,6 +14938,8 @@ Count of MAU moving an issue to another project
Group: `group::project management`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -12690,6 +14952,8 @@ Count of WAU moving an issue to another project
Group: `group::project management`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -12702,6 +14966,8 @@ Count of MAU relating an issue to another issue
Group: `group::project management`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -12714,6 +14980,8 @@ Count of WAU relating an issue to another issue
Group: `group::project management`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -12726,6 +14994,8 @@ Count of MAU removing an issue from an epic
Group: `group::project management`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `premium`, `ultimate`
@@ -12738,6 +15008,8 @@ Missing description
Group: ``
+Data Category: `Optional`
+
Status: `data_available`
Tiers:
@@ -12750,6 +15022,8 @@ Count of MAU re-opening a closed issue
Group: `group::project management`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -12762,6 +15036,8 @@ Count of WAU re-opening a closed issue
Group: `group::project management`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -12774,6 +15050,8 @@ Count of MAU changing an issue time estimate
Group: `group::project management`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -12786,6 +15064,8 @@ Count of WAU changing an issue time estimate
Group: `group::project management`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -12798,6 +15078,8 @@ Count of MAU recording time spent on an issue
Group: `group::project management`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -12810,6 +15092,8 @@ Count of WAU recording time spent on an issue
Group: `group::project management`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -12822,6 +15106,8 @@ Count of MAU editing an issue title
Group: `group::project management`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -12834,6 +15120,8 @@ Count of WAU editing an issue title
Group: `group::project management`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -12846,6 +15134,8 @@ Count of MAU unlocking an issue
Group: `group::project management`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -12858,6 +15148,8 @@ Count of WAU unlocking an issue
Group: `group::project management`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -12870,6 +15162,8 @@ Count of MAU unrelating an issue to another issue
Group: `group::project management`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -12882,6 +15176,8 @@ Count of WAU unrelating an issue to another issue
Group: `group::project management`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -12894,6 +15190,8 @@ Count of MAU changing an issue's weight
Group: `group::project management`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `premium`, `ultimate`
@@ -12906,6 +15204,8 @@ Count of WAU changing an issue's weight
Group: `group::project management`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `premium`, `ultimate`
@@ -12918,6 +15218,8 @@ Aggregate count of MAU taking an action related to an issue
Group: `group::project management`
+Data Category: `Operational`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -12930,10 +15232,40 @@ Aggregate count of WAU taking an action related to an issue
Group: `group::project management`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
+### `redis_hll_counters.network_policies.clusters_using_network_policies_ui_monthly`
+
+Monthly number of distinct clusters with network policies using the network policies UI
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_28d/20210623202402_clusters_using_network_policies_ui_monthly.yml)
+
+Group: `group::container security`
+
+Data Category: `Operational`
+
+Status: `implemented`
+
+Tiers: `ultimate`
+
+### `redis_hll_counters.network_policies.clusters_using_network_policies_ui_weekly`
+
+Weekly number of distinct clusters with network policies using the network policies UI
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_7d/20210623202358_clusters_using_network_policies_ui_weekly.yml)
+
+Group: `group::container security`
+
+Data Category: `Operational`
+
+Status: `implemented`
+
+Tiers: `ultimate`
+
### `redis_hll_counters.pipeline_authoring.o_pipeline_authoring_unique_users_committing_ciconfigfile_monthly`
Monthly unique user count doing commits which contains the CI config file
@@ -12942,6 +15274,8 @@ Monthly unique user count doing commits which contains the CI config file
Group: `group::pipeline authoring`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -12954,6 +15288,8 @@ Weekly unique user count doing commits which contains the CI config file
Group: `group::pipeline authoring`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -12966,6 +15302,8 @@ Monthly unique user count having merge requests which contains the CI config fil
Group: `group::pipeline authoring`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -12978,6 +15316,8 @@ Weekly unique user count having merge requests which contains the CI config file
Group: `group::pipeline authoring`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -12990,6 +15330,8 @@ Missing description
Group: ``
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -13002,6 +15344,8 @@ Missing description
Group: ``
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -13014,6 +15358,8 @@ Count of MAU using the `/approve` quick action
Group: `group::code review`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -13026,6 +15372,8 @@ Count of WAU using the `/approve` quick action
Group: `group::code review`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -13038,6 +15386,8 @@ Count of MAU using the `/assign @user1 @user2` quick action
Group: `group::project management`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `premium`, `ultimate`
@@ -13050,6 +15400,8 @@ Count of WAU using the `/assign @user1 @user2` quick action
Group: `group::project management`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `premium`, `ultimate`
@@ -13062,6 +15414,8 @@ Count of MAU using the `/assign_reviewer` or `request_reviewer` quick action
Group: `group::code review`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -13074,6 +15428,8 @@ Count of WAU using the `/assign_reviewer` or `request_reviewer` quick action
Group: `group::code review`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -13086,6 +15442,8 @@ Count of MAU using the `/assign me` quick action to assign self to an issuable
Group: `group::project management`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -13098,6 +15456,8 @@ Count of WAU using the `/assign me` quick action to assign self to an issuable
Group: `group::project management`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -13110,6 +15470,8 @@ Count of MAU using the `/assign @user1` quick action to assign a single individu
Group: `group::project management`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -13122,6 +15484,8 @@ Count of WAU using the `/assign @user1` quick action to assign a single individu
Group: `group::project management`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -13134,6 +15498,8 @@ Count of MAU using the `/award` quick action to set an award emoji on an issuabl
Group: `group::project management`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -13146,6 +15512,8 @@ Count of WAU using the `/award` quick action to set an award emoji on an issuabl
Group: `group::project management`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -13158,6 +15526,8 @@ Count of MAU using the `/board_move` quick action
Group: `group::project management`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -13170,6 +15540,8 @@ Count of WAU using the `/board_move` quick action
Group: `group::project management`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -13182,6 +15554,8 @@ Count of MAU using the `/child_epic` quick action
Group: `group::product planning`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `ultimate`
@@ -13194,6 +15568,8 @@ Count of WAU using the `/child_epic` quick action
Group: `group::product planning`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `ultimate`
@@ -13206,6 +15582,8 @@ Count of MAU using the `/clear_weight` quick action
Group: `group::project management`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `premium`, `ultimate`
@@ -13218,6 +15596,8 @@ Count of WAU using the `/clear_weight` quick action
Group: `group::project management`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `premium`, `ultimate`
@@ -13230,6 +15610,8 @@ Count of MAU using the `/clone` quick action to clone an issue.
Group: `group::project management`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -13242,6 +15624,8 @@ Count of WAU using the `/clone` quick action to clone an issue.
Group: `group::project management`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -13254,6 +15638,8 @@ Count of MAU using the `/close` quick action to close an issuable
Group: `group::project management`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -13266,6 +15652,8 @@ Count of WAU using the `/close` quick action to close an issuable
Group: `group::project management`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -13278,6 +15666,8 @@ Count of MAU using the `/confidential` quick action to set an issue as confident
Group: `group::project management`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -13290,6 +15680,8 @@ Count of WAU using the `/confidential` quick action to set an issue as confident
Group: `group::project management`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -13302,6 +15694,8 @@ Count of MAU using the `/copy_metadata` quick action on an issue
Group: `group::project management`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -13314,6 +15708,8 @@ Count of WAU using the `/copy_metadata` quick action on an issue
Group: `group::project management`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -13326,6 +15722,8 @@ Count of MAU using the `/copy_metadata` quick action on a Merge Request
Group: `group::source code`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -13338,6 +15736,8 @@ Count of WAU using the `/copy_metadata` quick action on a Merge Request
Group: `group::source code`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -13350,6 +15750,8 @@ Count of MAU using the `/create_merge_request` quick action
Group: `group::project management`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -13362,6 +15764,8 @@ Count of WAU using the `/create_merge_request` quick action
Group: `group::project management`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -13374,6 +15778,8 @@ Count of MAU using the `/done` quick action to mark a todo as done
Group: `group::project management`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -13386,6 +15792,8 @@ Count of WAU using the `/done` quick action to mark a todo as done
Group: `group::project management`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -13398,6 +15806,8 @@ Count of MAU using the `/draft` quick action on a Merge Request
Group: `group::source code`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -13410,6 +15820,8 @@ Count of WAU using the `/draft` quick action on a Merge Request
Group: `group::source code`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -13422,6 +15834,8 @@ Count of MAU using the `/due` quick action to change the due date on an issuable
Group: `group::project management`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -13434,6 +15848,8 @@ Count of WAU using the `/due` quick action to change the due date on an issuable
Group: `group::project management`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -13446,6 +15862,8 @@ Count of MAU using the `/duplicate` quick action to mark an issue as a duplicate
Group: `group::project management`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -13458,6 +15876,8 @@ Count of WAU using the `/duplicate` quick action to mark an issue as a duplicate
Group: `group::project management`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -13470,6 +15890,8 @@ Count of MAU using the `/epic` quick action
Group: `group::project management`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `premium`, `ultimate`
@@ -13482,6 +15904,8 @@ Count of WAU using the `/epic` quick action
Group: `group::project management`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `premium`, `ultimate`
@@ -13494,6 +15918,8 @@ Count of MAU using the `/estimate` quick action to set a time estimate on an iss
Group: `group::project management`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -13506,6 +15932,8 @@ Count of WAU using the `/estimate` quick action to set a time estimate on an iss
Group: `group::project management`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -13518,6 +15946,8 @@ Unique users using the /invite_email quick action to add a multiple email partic
Group: `group::product planning`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -13530,6 +15960,8 @@ Unique users using the /invite_email quick action to add a multiple email partic
Group: `group::product planning`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -13542,6 +15974,8 @@ Unique users using the /invite_email quick action to add a single email particip
Group: `group::product planning`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -13554,6 +15988,8 @@ Unique users using the /invite_email quick action to add a single email particip
Group: `group::product planning`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -13566,6 +16002,8 @@ Count of MAU using the `/iteration` quick action
Group: `group::project management`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `premium`, `ultimate`
@@ -13578,6 +16016,8 @@ Count of WAU using the `/iteration` quick action
Group: `group::project management`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `premium`, `ultimate`
@@ -13590,6 +16030,8 @@ Count of MAU using the `/label` quick action
Group: `group::project management`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -13602,6 +16044,8 @@ Count of WAU using the `/label` quick action
Group: `group::project management`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -13614,6 +16058,8 @@ Count of MAU using the `/lock` quick action
Group: `group::project management`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -13626,6 +16072,8 @@ Count of WAU using the `/lock` quick action
Group: `group::project management`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -13638,6 +16086,8 @@ Count of MAU using the `/merge` quick action
Group: `group::source code`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -13650,6 +16100,8 @@ Count of WAU using the `/merge` quick action
Group: `group::source code`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -13662,6 +16114,8 @@ Count of MAU using the `/milestone` quick action
Group: `group::project management`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -13674,6 +16128,8 @@ Count of WAU using the `/milestone` quick action
Group: `group::project management`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -13686,6 +16142,8 @@ Count of MAU using the `/move` quick action
Group: `group::project management`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -13698,6 +16156,8 @@ Count of WAU using the `/move` quick action
Group: `group::project management`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -13710,6 +16170,8 @@ Count of MAU using the `/parent_epic` quick action
Group: `group::product planning`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `ultimate`
@@ -13722,6 +16184,8 @@ Count of WAU using the `/parent_epic` quick action
Group: `group::product planning`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `ultimate`
@@ -13734,6 +16198,8 @@ Count of MAU using the `/promote` quick action
Group: `group::project management`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `premium`, `ultimate`
@@ -13746,6 +16212,8 @@ Count of WAU using the `/promote` quick action
Group: `group::project management`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `premium`, `ultimate`
@@ -13758,6 +16226,8 @@ Count of MAU using the `/publish` quick action
Group: `group::monitor`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `ultimate`
@@ -13770,6 +16240,8 @@ Count of WAU using the `/publish` quick action
Group: `group::monitor`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `ultimate`
@@ -13782,6 +16254,8 @@ Count of MAU using the `/reassign @user1` quick action
Group: `group::project management`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -13794,6 +16268,8 @@ Count of MAU using the `/reassign_reviewer` quick action
Group: `group::code review`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -13806,6 +16282,8 @@ Count of WAU using the `/reassign_reviewer` quick action
Group: `group::code review`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -13818,6 +16296,8 @@ Count of WAU using the `/reassign @user1` quick action
Group: `group::project management`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -13830,6 +16310,8 @@ Count of MAU using the `/rebase` quick action on a Merge Request
Group: `group::source code`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -13842,6 +16324,8 @@ Count of WAU using the `/rebase` quick action on a Merge Request
Group: `group::source code`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -13854,6 +16338,8 @@ Count of MAU using the `/relabel` quick action
Group: `group::project management`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -13866,6 +16352,8 @@ Count of WAU using the `/relabel` quick action
Group: `group::project management`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -13878,6 +16366,8 @@ Count of MAU using the `/relate` quick action
Group: `group::project management`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -13890,6 +16380,8 @@ Count of WAU using the `/relate` quick action
Group: `group::project management`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -13902,6 +16394,8 @@ Count of MAU using the `/remove_child_epic` quick action
Group: `group::product planning`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `ultimate`
@@ -13914,6 +16408,8 @@ Count of WAU using the `/remove_child_epic` quick action
Group: `group::product planning`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `ultimate`
@@ -13926,6 +16422,8 @@ Count of MAU using the `/remove_due_date` quick action
Group: `group::project management`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -13938,6 +16436,8 @@ Count of WAU using the `/remove_due_date` quick action
Group: `group::project management`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -13950,6 +16450,8 @@ Count of MAU using the `/remove_epic` quick action
Group: `group::project management`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `premium`, `ultimate`
@@ -13962,6 +16464,8 @@ Count of WAU using the `/remove_epic` quick action
Group: `group::project management`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `premium`, `ultimate`
@@ -13974,6 +16478,8 @@ Count of MAU using the `/remove_estimate` quick action
Group: `group::project management`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -13986,6 +16492,8 @@ Count of WAU using the `/remove_estimate` quick action
Group: `group::project management`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -13998,6 +16506,8 @@ Count of MAU using the `/remove_iteration` quick action
Group: `group::project management`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `premium`, `ultimate`
@@ -14010,6 +16520,8 @@ Count of WAU using the `/remove_iteration` quick action
Group: `group::project management`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `premium`, `ultimate`
@@ -14022,6 +16534,8 @@ Count of MAU using the `/remove_milestone` quick action
Group: `group::project management`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -14034,6 +16548,8 @@ Count of WAU using the `/remove_milestone` quick action
Group: `group::project management`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -14046,6 +16562,8 @@ Count of MAU using the `/remove_parent_epic` quick action
Group: `group::product planning`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `ultimate`
@@ -14058,6 +16576,8 @@ Count of WAU using the `/remove_parent_epic` quick action
Group: `group::product planning`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `ultimate`
@@ -14070,6 +16590,8 @@ Count of MAU using the `/remove_time_spent` quick action
Group: `group::project management`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -14082,6 +16604,8 @@ Count of WAU using the `/remove_time_spent` quick action
Group: `group::project management`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -14094,6 +16618,8 @@ Count of MAU using the `/remove_zoom` quick action
Group: `group::project management`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -14106,6 +16632,8 @@ Count of WAU using the `/remove_zoom` quick action
Group: `group::project management`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -14118,6 +16646,8 @@ Count of MAU using the `/reopen` quick action
Group: `group::project management`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -14130,6 +16660,8 @@ Count of WAU using the `/reopen` quick action
Group: `group::project management`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -14142,6 +16674,8 @@ Count of MAU using the `/shrug` quick action
Group: `group::project management`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -14154,6 +16688,8 @@ Count of WAU using the `/shrug` quick action
Group: `group::project management`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -14166,6 +16702,8 @@ Count of MAU using the `/spend` quick action to add time spent
Group: `group::project management`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -14178,6 +16716,8 @@ Count of WAU using the `/spend` quick action to add time spent
Group: `group::project management`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -14190,6 +16730,8 @@ Count of MAU using the `/spend` quick action to subtract time spent
Group: `group::project management`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -14202,6 +16744,8 @@ Count of WAU using the `/spend` quick action to subtract time spent
Group: `group::project management`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -14214,6 +16758,8 @@ Count of MAU using the `/submit_review` quick action on Merge Requests
Group: `group::code review`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -14226,6 +16772,8 @@ Count of WAU using the `/submit_review` quick action on Merge Requests
Group: `group::code review`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -14238,6 +16786,8 @@ Count of MAU using the `/subscribe` quick action
Group: `group::project management`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -14250,6 +16800,8 @@ Count of WAU using the `/subscribe` quick action
Group: `group::project management`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -14262,6 +16814,8 @@ Count of MAU using the `/tableflip` quick action
Group: `group::project management`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -14274,6 +16828,8 @@ Count of WAU using the `/tableflip` quick action
Group: `group::project management`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -14286,6 +16842,8 @@ Count of MAU using the `/tag` quick action
Group: `group::source code`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -14298,6 +16856,8 @@ Count of WAU using the `/tag` quick action
Group: `group::source code`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -14310,6 +16870,8 @@ Count of MAU using the `/target_branch` quick action on Merge Requests
Group: `group::source code`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -14322,6 +16884,8 @@ Count of WAU using the `/target_branch` quick action on Merge Requests
Group: `group::source code`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -14334,6 +16898,8 @@ Count of MAU using the `/title` quick action
Group: `group::project management`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -14346,6 +16912,8 @@ Count of WAU using the `/title` quick action
Group: `group::project management`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -14358,6 +16926,8 @@ Count of MAU using the `/todo` quick action
Group: `group::project management`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -14370,6 +16940,8 @@ Count of WAU using the `/todo` quick action
Group: `group::project management`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -14382,6 +16954,8 @@ Count of MAU using the `/unassign` quick action on Merge Requests
Group: `group::source code`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -14394,6 +16968,8 @@ Count of WAU using the `/unassign` quick action on Merge Requests
Group: `group::source code`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -14406,6 +16982,8 @@ Count of MAU using the `/unassign_reviewer` or `/remove_reviewer` quick action o
Group: `group::code review`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -14418,6 +16996,8 @@ Count of WAU using the `/unassign_reviewer` or `/remove_reviewer` quick action o
Group: `group::code review`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -14430,6 +17010,8 @@ Count of MAU using the `/unassign @user1` quick action on Merge Requests
Group: `group::source code`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -14442,6 +17024,8 @@ Count of WAU using the `/unassign @user1` quick action on Merge Requests
Group: `group::source code`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -14454,6 +17038,8 @@ Count of MAU using the `/unlabel` quick action to remove all labels
Group: `group::project management`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -14466,6 +17052,8 @@ Count of WAU using the `/unlabel` quick action to remove all labels
Group: `group::project management`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -14478,6 +17066,8 @@ Count of MAU using the `/unlabel` or `/remove_label` quick action to remove one
Group: `group::project management`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -14490,6 +17080,8 @@ Count of WAU using the `/unlabel` or `/remove_label` quick action to remove one
Group: `group::project management`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -14502,6 +17094,8 @@ Count of MAU using the `/unlock` quick action
Group: `group::project management`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -14514,6 +17108,8 @@ Count of WAU using the `/unlock` quick action
Group: `group::project management`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -14526,6 +17122,8 @@ Count of MAU using the `/unsubscribe` quick action
Group: `group::project management`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -14538,6 +17136,8 @@ Count of WAU using the `/unsubscribe` quick action
Group: `group::project management`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -14550,6 +17150,8 @@ Count of MAU using the `/weight` quick action
Group: `group::project management`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `premium`, `ultimate`
@@ -14562,6 +17164,8 @@ Count of WAU using the `/weight` quick action
Group: `group::project management`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `premium`, `ultimate`
@@ -14574,6 +17178,8 @@ Count of MAU using the `/wip` quick action on Merge Requests
Group: `group::source code`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -14586,6 +17192,8 @@ Count of WAU using the `/wip` quick action on Merge Requests
Group: `group::source code`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -14598,6 +17206,8 @@ Count of MAU using the `/zoom` quick action on Issues
Group: `group::project management`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -14610,6 +17220,8 @@ Count of WAU using the `/zoom` quick action on Issues
Group: `group::project management`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -14622,6 +17234,8 @@ Count of MAU using one or more quick actions
Group: `group::project management`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -14634,6 +17248,8 @@ Missing description
Group: ``
+Data Category: `Optional`
+
Status: `data_available`
Tiers:
@@ -14646,6 +17262,8 @@ Calculated unique users to perform Advanced searches by month
Group: `group::global search`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `premium`, `ultimate`
@@ -14658,6 +17276,8 @@ Calculated unique users to perform Advanced searches by week
Group: `group::global search`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `premium`, `ultimate`
@@ -14670,6 +17290,8 @@ Calculated unique users to perform a search with a paid license enabled by month
Group: `group::global search`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `premium`, `ultimate`
@@ -14682,6 +17304,8 @@ Calculated unique users to perform a search with a paid license enabled by week
Group: `group::global search`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `premium`, `ultimate`
@@ -14694,6 +17318,8 @@ Calculated unique users to perform Basic or Advanced searches by month
Group: `group::global search`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -14706,6 +17332,8 @@ Calculated unique users to perform Basic or Advanced searches by week
Group: `group::global search`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -14718,6 +17346,8 @@ Total unique users for i_search_total, i_search_advanced, i_search_paid for rece
Group: `group::global search`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -14730,6 +17360,8 @@ Calculated unique users to perform Basic or Advanced searches by week
Group: `group::global search`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -14742,6 +17374,8 @@ Count of expanding the security report widget
Group: `group::static analysis`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -14754,6 +17388,8 @@ Count of expanding the security report widget
Group: `group::static analysis`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -14766,6 +17402,8 @@ Monthly number of users viewing snippets
Group: `group::editor`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -14778,6 +17416,8 @@ Weekly number of users viewing snippets
Group: `group::editor`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -14790,6 +17430,8 @@ Count of total design actions (upload, delete, comment, reply)
Group: `group::source code`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -14802,6 +17444,8 @@ Count of total design actions (upload, delete, comment, reply)
Group: `group::source code`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -14814,6 +17458,8 @@ Count of unique Git write actions
Group: `group::source code`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -14826,6 +17472,8 @@ Count of unique Git write actions
Group: `group::source code`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -14838,6 +17486,8 @@ Count of unique users who use code intelligence
Group: `group::source code`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -14850,6 +17500,8 @@ Count of unique users who use code intelligence
Group: `group::source code`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -14862,6 +17514,8 @@ Count of unique users who perform an action on a merge request
Group: `group::code review`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -14874,6 +17528,8 @@ Count of unique users who perform an action on a merge request
Group: `group::code review`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -14886,6 +17542,8 @@ Count of unique actions done on projects and related resources (create, edit, de
Group: `group::source code`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -14898,6 +17556,8 @@ Count of unique actions done on projects and related resources (create, edit, de
Group: `group::source code`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -14910,6 +17570,8 @@ Count of unique actions done on a wiki (create, edit, delete)
Group: `group::source code`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -14922,6 +17584,8 @@ Count of unique actions done on a wiki (create, edit, delete)
Group: `group::source code`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -14934,6 +17598,8 @@ Monthly active users of GitLab Managed Terraform states
Group: `group::configure`
+Data Category: `Operational`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -14946,6 +17612,8 @@ Missing description
Group: ``
+Data Category: `Optional`
+
Status: `data_available`
Tiers:
@@ -14958,6 +17626,8 @@ Count of unique users per week|month who visit the full code quality report
Group: `group::testing`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `premium`, `ultimate`
@@ -14970,6 +17640,8 @@ Count of unique users per week who visit the full code quality report
Group: `group::testing`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `premium`, `ultimate`
@@ -14982,6 +17654,8 @@ Aggregated count of unique users who have clicked from group code coverage page
Group: `group::testing`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `premium`, `ultimate`
@@ -14994,6 +17668,8 @@ Aggregated count of unique users who have clicked from group code coverage page
Group: `group::testing`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `premium`, `ultimate`
@@ -15006,6 +17682,8 @@ Count of unique users per month who visited the group code coverage page
Group: `group::testing`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `premium`, `ultimate`
@@ -15018,6 +17696,8 @@ Count of unique users per week who visited the group code coverage page
Group: `group::testing`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `premium`, `ultimate`
@@ -15030,6 +17710,8 @@ Count of unique users per month who expanded the load performance report MR widg
Group: `group::testing`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `premium`, `ultimate`
@@ -15042,6 +17724,8 @@ Count of unique users per week who expanded the load performance report MR widge
Group: `group::testing`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `premium`, `ultimate`
@@ -15054,6 +17738,8 @@ Tracks number of metrics reports uploaded monthly.
Group: `group::testing`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `premium`, `ultimate`
@@ -15066,6 +17752,8 @@ Count of unique users per week who trigger a pipeline that uploads a metrics rep
Group: `group::testing`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `premium`, `ultimate`
@@ -15078,6 +17766,8 @@ Count of unique users per month who expanded the metrics report MR widget
Group: `group::testing`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `premium`, `ultimate`
@@ -15090,6 +17780,8 @@ Count of unique users per week who expanded the metrics report MR widget
Group: `group::testing`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `premium`, `ultimate`
@@ -15102,6 +17794,8 @@ Unique users that expand the test summary merge request widget by month
Group: `group::testing`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -15114,6 +17808,8 @@ Unique users that expand the test summary merge request widget by week
Group: `group::testing`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -15126,6 +17822,8 @@ Internal Tracking to count number of unit tests parsed for planning of future co
Group: `group::testing`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -15138,6 +17836,8 @@ Internal Tracking to count number of unit tests parsed for planning of future co
Group: `group::testing`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -15150,6 +17850,8 @@ Count of unique users per month who expanded the browser performance report MR w
Group: `group::testing`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `premium`, `ultimate`
@@ -15162,6 +17864,8 @@ Count of unique users per week who expanded the browser performance report MR wi
Group: `group::testing`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `premium`, `ultimate`
@@ -15174,6 +17878,8 @@ Missing description
Group: ``
+Data Category: `Optional`
+
Status: `removed`
Tiers: `free`
@@ -15186,6 +17892,8 @@ Missing description
Group: ``
+Data Category: `Optional`
+
Status: `removed`
Tiers: `premium`, `ultimate`
@@ -15198,6 +17906,8 @@ Count of expanding the accessibility report widget
Group: `group::testing`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -15210,6 +17920,8 @@ Count of expanding the accessibility report widget
Group: `group::testing`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -15222,6 +17934,8 @@ Count of expanding the code quality widget
Group: `group::testing`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -15234,6 +17948,8 @@ Count of expanding the code quality widget
Group: `group::testing`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -15246,6 +17962,8 @@ A monthly count of users that have published a Composer package to the registry
Group: `group::package`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -15258,6 +17976,8 @@ A weekly count of users that have published a Composer package to the registry
Group: `group::package`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -15270,6 +17990,8 @@ A monthly count of users that have published a Conan package to the registry
Group: `group::package`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -15282,6 +18004,8 @@ A weekly count of users that have published a Conan package to the registry
Group: `group::package`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -15294,6 +18018,8 @@ A monthly count of users that have published a container image to the registry
Group: `group::package`
+Data Category: `Optional`
+
Status: `deprecated`
Tiers: `free`, `premium`, `ultimate`
@@ -15306,6 +18032,8 @@ A weekly count of users that have published a container image to the registry
Group: `group::package`
+Data Category: `Optional`
+
Status: `deprecated`
Tiers: `free`, `premium`, `ultimate`
@@ -15318,6 +18046,8 @@ A monthly count of users that have published a Debian package to the registry
Group: `group::package`
+Data Category: `Optional`
+
Status: `deprecated`
Tiers: `free`, `premium`, `ultimate`
@@ -15330,6 +18060,8 @@ A weekly count of users that have published a Debian package to the registry
Group: `group::package`
+Data Category: `Optional`
+
Status: `deprecated`
Tiers: `free`, `premium`, `ultimate`
@@ -15342,6 +18074,8 @@ A monthly count of users that have published a generic package to the registry
Group: `group::package`
+Data Category: `Optional`
+
Status: `broken`
Tiers: `free`, `premium`, `ultimate`
@@ -15354,6 +18088,8 @@ A weekly count of users that have published a generic package to the registry
Group: `group::package`
+Data Category: `Optional`
+
Status: `broken`
Tiers: `free`, `premium`, `ultimate`
@@ -15366,6 +18102,8 @@ A monthly count of users that have published a Go moduleto the registry
Group: `group::package`
+Data Category: `Optional`
+
Status: `deprecated`
Tiers: `free`, `premium`, `ultimate`
@@ -15378,6 +18116,8 @@ A weekly count of users that have published a Go module to the registry
Group: `group::package`
+Data Category: `Optional`
+
Status: `deprecated`
Tiers: `free`, `premium`, `ultimate`
@@ -15390,6 +18130,8 @@ Distinct user count events for Helm packages in recent 28 days
Group: `group::package`
+Data Category: `Optional`
+
Status: `implemented`
Tiers: `free`, `premium`, `ultimate`
@@ -15402,6 +18144,8 @@ Distinct user count events for Helm packages in recent 7 days
Group: `group::package`
+Data Category: `Optional`
+
Status: `implemented`
Tiers: `free`, `premium`, `ultimate`
@@ -15414,6 +18158,8 @@ A monthly count of users that have published a Maven package to the registry
Group: `group::package`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -15426,6 +18172,8 @@ A weekly count of users that have published a Maven package to the registry
Group: `group::package`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -15438,6 +18186,8 @@ A monthly count of users that have published an npm package to the registry
Group: `group::package`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -15450,6 +18200,8 @@ A weekly count of users that have published an npm package to the registry
Group: `group::package`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -15462,6 +18214,8 @@ A monthly count of users that have published a NuGet package to the registry
Group: `group::package`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -15474,6 +18228,8 @@ A weekly count of users that have published a NuGet package to the registry
Group: `group::package`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -15486,6 +18242,8 @@ A monthly count of users that have published a PyPI package to the registry
Group: `group::package`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -15498,6 +18256,8 @@ A weekly count of users that have published a Python package to the registry
Group: `group::package`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -15510,6 +18270,8 @@ Distinct user count of RubyGems packages published in recent 28 days
Group: `group::package`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -15522,6 +18284,8 @@ A weekly count of distinct RubyGems packages published by a user
Group: `group::package`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -15534,6 +18298,8 @@ A monthly count of users that have published a package tag to the registry
Group: `group::package`
+Data Category: `Optional`
+
Status: `deprecated`
Tiers: `free`, `premium`, `ultimate`
@@ -15546,6 +18312,8 @@ A weekly count of users that have published a package with a tag to the registry
Group: `group::package`
+Data Category: `Optional`
+
Status: `deprecated`
Tiers: `free`, `premium`, `ultimate`
@@ -15558,6 +18326,8 @@ Number of distinct users creating Terraform Module packages in recent 28 days
Group: `group::configure`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -15570,6 +18340,8 @@ Number of distinct users creating Terraform Module packages in recent 7 days
Group: `group::configure`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -15582,6 +18354,8 @@ A monthly count of users that have published a package to the registry
Group: `group::package`
+Data Category: `Operational`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -15594,6 +18368,8 @@ A weekly count of users that have published a package to the registry
Group: `group::package`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -15606,6 +18382,8 @@ Whether incoming email is setup
Group: `group::certify`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -15618,6 +18396,8 @@ Calculated unique users to perform Advanced searches by week
Group: `group::global search`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `premium`, `ultimate`
@@ -15630,6 +18410,8 @@ Calculated unique users to perform a search with a paid license enabled by week
Group: `group::global search`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `premium`, `ultimate`
@@ -15642,6 +18424,8 @@ Calculated unique users to perform Basic or Advanced searches by week
Group: `group::global search`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -15654,6 +18438,8 @@ Total unique users for i_search_total, i_search_advanced, i_search_paid for rece
Group: `group::global search`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -15666,10 +18452,28 @@ Total unique users for i_search_total, i_search_advanced, i_search_paid for rece
Group: `group::global search`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
+### `settings.collected_data_categories`
+
+List of collected data categories corresponding to instance settings
+
+[Object JSON schema](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/objects_schemas/collected_data_categories_schema.json)
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/settings/20210702140138_collected_data_categories.yml)
+
+Group: `group::product intelligence`
+
+Data Category: `Standard`
+
+Status: `implemented`
+
+Tiers: `free`, `premium`, `ultimate`
+
### `settings.gitaly_apdex`
Gitaly application performance
@@ -15678,6 +18482,8 @@ Gitaly application performance
Group: `group::gitaly`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -15690,6 +18496,8 @@ Is encrypted LDAP secrets configured?
Group: `group::distribution`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -15702,6 +18510,8 @@ Information about the operating system running GitLab
Group: `group::distribution`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -15714,6 +18524,8 @@ Whether public signup is enabled
Group: `group::access`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -15728,6 +18540,8 @@ Topology data
Group: `group::memory`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -15740,6 +18554,8 @@ Total GitLab Managed clusters with GitLab Managed App:Cert Manager installed
Group: `group::configure`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -15752,6 +18568,8 @@ Total GitLab Managed clusters with GitLab Managed App:Helm enabled
Group: `group::configure`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -15764,6 +18582,8 @@ Total GitLab Managed clusters with GitLab Managed App:Ingress installed
Group: `group::configure`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -15776,6 +18596,8 @@ Total GitLab Managed clusters with GitLab Managed App:Knative installed
Group: `group::configure`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -15788,6 +18610,8 @@ Total GitLab Managed disabled clusters
Group: `group::configure`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -15800,6 +18624,8 @@ Total GitLab Managed clusters currently enabled
Group: `group::configure`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -15812,6 +18638,8 @@ Total GitLab Managed clusters with defined cluster management project
Group: `group::configure`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -15824,6 +18652,8 @@ Total GitLab Managed clusters provisioned with GitLab on AWS EKS
Group: `group::configure`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -15836,6 +18666,8 @@ Total GitLab Managed clusters provisioned with GitLab on GCE GKE
Group: `group::configure`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -15848,6 +18680,8 @@ Total GitLab Managed clusters that are user provisioned
Group: `group::configure`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -15860,6 +18694,8 @@ Total GitLab Managed disabled clusters attached to groups
Group: `group::configure`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -15872,6 +18708,8 @@ Total GitLab Managed enabled clusters attached to groups
Group: `group::configure`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -15884,6 +18722,8 @@ Total GitLab Managed disabled clusters attached to the instance
Group: `group::configure`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -15896,6 +18736,8 @@ Total GitLab Managed enabled clusters attached to the instance
Group: `group::configure`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -15908,6 +18750,8 @@ Total GitLab Managed disabled clusters attached to projects
Group: `group::configure`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -15920,6 +18764,8 @@ Total GitLab Managed enabled clusters attached to projects
Group: `group::configure`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -15932,6 +18778,8 @@ Unique projects with Slack webhook enabled
Group: `group::configure`
+Data Category: `Optional`
+
Status: `data_available`
Tiers:
@@ -15944,6 +18792,8 @@ Unique projects with Slack ‘/’ commands enabled
Group: `group::configure`
+Data Category: `Optional`
+
Status: `data_available`
Tiers:
@@ -15956,6 +18806,8 @@ Projects with Prometheus alerting enabled
Group: `group::configure`
+Data Category: `Optional`
+
Status: `removed`
Tiers: `free`, `premium`, `ultimate`
@@ -15968,6 +18820,8 @@ Total number of project approval rules
Group: `group::source code`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `premium`, `ultimate`
@@ -15980,6 +18834,8 @@ Number of approval rules with the exact number of required approvers.
Group: `group::source code`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `premium`, `ultimate`
@@ -15992,6 +18848,8 @@ Number of approval rules with fewer approvers than required.
Group: `group::source code`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `premium`, `ultimate`
@@ -16004,6 +18862,8 @@ Number of approval rules with more approvers than required.
Group: `group::source code`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `premium`, `ultimate`
@@ -16016,6 +18876,8 @@ Number of project approval rules scoped to a specific repo branch.
Group: `group::source code`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `premium`, `ultimate`
@@ -16028,6 +18890,8 @@ Count of users creating deploy keys.
Group: `group::source code`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -16040,6 +18904,8 @@ Count of users creating regular keys.
Group: `group::source code`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -16052,6 +18918,8 @@ Count of the number of users creating merge requests
Group: `group::code review`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -16064,6 +18932,8 @@ Merge requests with added rules
Group: `group::code review`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `premium`, `ultimate`
@@ -16076,6 +18946,8 @@ Count of merge requests with optional codeowner approval rules
Group: `group::source code`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `premium`, `ultimate`
@@ -16088,6 +18960,8 @@ Number of merge requests that have overridden rules created at the project level
Group: `group::source code`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `premium`, `ultimate`
@@ -16100,6 +18974,8 @@ Count of merge requests with required codeowner approval rules
Group: `group::source code`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `premium`, `ultimate`
@@ -16112,6 +18988,8 @@ Count of users creating projects that require approval by code owners for code c
Group: `group::source code`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `premium`, `ultimate`
@@ -16124,6 +19002,8 @@ Missing description
Group: `group::import`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`
@@ -16136,6 +19016,8 @@ Total count of projects that do not allow overriding approvers on discrete merge
Group: `group::source code`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -16148,6 +19030,8 @@ Count of projects that have a matching Git repository, result of a Git push acti
Group: `group::source code`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `premium`, `ultimate`
@@ -16160,6 +19044,8 @@ Count of projects using code owners with code owners section feature
Group: `group::source code`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `premium`, `ultimate`
@@ -16172,6 +19058,8 @@ Count of total projects that do not disable overriding approvers per discrete me
Group: `group::source code`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -16184,6 +19072,8 @@ Count of users creating projects with repositories making use of at least one pr
Group: `group::source code`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `premium`, `ultimate`
@@ -16196,6 +19086,8 @@ Count of users creating projects with remote mirrors.
Group: `group::source code`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -16208,6 +19100,8 @@ Count of distinct author_id from snippets
Group: `group::editor`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -16220,6 +19114,8 @@ Count of unique users who create suggestions in merge request comments
Group: `group::code review`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -16232,6 +19128,8 @@ The total number of files which have been locked via the GitLab UI
Group: `group::source code`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `premium`, `ultimate`
@@ -16244,6 +19142,8 @@ Number of paths/directories manually locked through the UI
Group: `group::source code`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `premium`, `ultimate`
@@ -16256,6 +19156,8 @@ Number of unique users who have locked files or directories using LFS via the co
Group: `group::source code`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `premium`, `ultimate`
@@ -16268,6 +19170,8 @@ Number of users who have manually locked paths/directories through the UI
Group: `group::source code`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `premium`, `ultimate`
@@ -16280,6 +19184,8 @@ Number of Git fetch events from Prometheus on the Geo secondary
Group: `group::geo`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `premium`, `ultimate`
@@ -16292,6 +19198,8 @@ Number of Git push events from Prometheus on the Geo secondary
Group: `group::geo`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `premium`, `ultimate`
@@ -16304,6 +19212,8 @@ Missing description
Group: ``
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -16316,6 +19226,8 @@ Distinct count of users that triggered an import using the Group Migration tool
Group: `group::import`
+Data Category: `Optional`
+
Status: `deprecated`
Tiers: `free`
@@ -16328,10 +19240,26 @@ Count of imports using GitLab Migration
Group: `group::import`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`
+### `usage_activity_by_stage.manage.compliance_frameworks_with_pipeline`
+
+Count of compliance frameworks that have a pipeline configuration
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_all/20210622123800_compliance_frameworks_with_pipeline.yml)
+
+Group: `compliance`
+
+Data Category: `Optional`
+
+Status: `implemented`
+
+Tiers: `ultimate`
+
### `usage_activity_by_stage.manage.custom_compliance_frameworks`
Total count of all custom compliance framework labels
@@ -16340,6 +19268,8 @@ Total count of all custom compliance framework labels
Group: `compliance`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `premium`, `ultimate`
@@ -16352,6 +19282,8 @@ Missing description
Group: `group::manage`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`
@@ -16364,6 +19296,8 @@ Count of groups imported using GitLab Migration
Group: `group::import`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`
@@ -16376,6 +19310,8 @@ Count of group imports using Group Import/Export
Group: `group::import`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`
@@ -16388,6 +19324,8 @@ Has the instance enabled Group SAML SSO `https://docs.gitlab.com/ee/user/group/s
Group: `group::manage`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `premium`
@@ -16400,6 +19338,8 @@ Number of users who are group members.
Group: `group::access`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -16412,6 +19352,8 @@ Distinct count of users that imported groups using Group Import
Group: `group::import`
+Data Category: `Optional`
+
Status: `deprecated`
Tiers: `free`
@@ -16424,6 +19366,8 @@ Count of (attempted) imports from csv files
Group: `group::import`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`
@@ -16436,6 +19380,8 @@ Count of projects imported from fogbugz
Group: `group::import`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`
@@ -16448,6 +19394,8 @@ Count of projects imported from Jira
Group: `group::import`
+Data Category: `Operational`
+
Status: `data_available`
Tiers: `free`
@@ -16460,6 +19408,8 @@ Count of projects imported from phabricator
Group: `group::import`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`
@@ -16472,6 +19422,8 @@ Distinct count of users that imported issues into projects using CSV upload
Group: `group::import`
+Data Category: `Optional`
+
Status: `deprecated`
Tiers: `free`
@@ -16484,6 +19436,8 @@ Distinct count of users that imported issues into projects using FogBugz
Group: `group::import`
+Data Category: `Optional`
+
Status: `deprecated`
Tiers: `free`
@@ -16496,6 +19450,8 @@ Distinct count of users that imported issues into projects using Jira
Group: `group::import`
+Data Category: `Optional`
+
Status: `deprecated`
Tiers: `free`
@@ -16508,6 +19464,8 @@ Distinct count of users that imported issues into projects using Phabricator
Group: `group::import`
+Data Category: `Optional`
+
Status: `deprecated`
Tiers: `free`
@@ -16520,6 +19478,8 @@ Has the instance configured [LDAP Admin Sync](https://docs.gitlab.com/ee/adminis
Group: `group::access`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `premium`, `ultimate`
@@ -16532,6 +19492,8 @@ Has the instance configured [LDAP Group Sync](https://docs.gitlab.com/ee/adminis
Group: `group::access`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `premium`, `ultimate`
@@ -16544,6 +19506,8 @@ Number of users creating keys synced as part of LDAP
Group: `group::access`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `premium`, `ultimate`
@@ -16556,6 +19520,8 @@ Number of [LDAP servers configured for the instance](https://docs.gitlab.com/ee/
Group: `group::access`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `premium`, `ultimate`
@@ -16568,6 +19534,8 @@ Number of users that are linked to LDAP
Group: `group::access`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `premium`, `ultimate`
@@ -16580,6 +19548,8 @@ Number of unique user logins using an OmniAuth provider
Group: `group::access`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -16592,6 +19562,8 @@ Count of projects imported from Bitbucket
Group: `group::import`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -16604,6 +19576,8 @@ Count of projects imported from Bitbucket Server
Group: `group::import`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -16616,6 +19590,8 @@ Count of projects imported by URL
Group: `group::import`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -16628,6 +19604,8 @@ Count of projects imported from Gitea
Group: `group::import`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -16640,6 +19618,8 @@ Count of projects imported from GitHub
Group: `group::import`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -16652,6 +19632,8 @@ Count of projects imported from GitLab.com
Group: `group::import`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -16664,6 +19646,8 @@ Count of projects imported using GitLab Migration
Group: `group::import`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -16676,6 +19660,8 @@ Count of projects imported using Project Import/Export
Group: `group::import`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -16688,6 +19674,8 @@ Count of projects imported using manifst file
Group: `group::import`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -16700,6 +19688,8 @@ Count number of projects imported monthly
Group: `group::import`
+Data Category: `Optional`
+
Status: `implemented`
Tiers: `free`, `premium`, `ultimate`
@@ -16712,6 +19702,8 @@ Distinct count of users that imported projects from Bitbucket Cloud
Group: `group::import`
+Data Category: `Optional`
+
Status: `deprecated`
Tiers: `free`
@@ -16724,6 +19716,8 @@ Distinct count of users that imported projects from Bitbucket Server
Group: `group::import`
+Data Category: `Optional`
+
Status: `deprecated`
Tiers: `free`
@@ -16736,6 +19730,8 @@ Distinct count of users that imported projects using Import by URL
Group: `group::import`
+Data Category: `Optional`
+
Status: `deprecated`
Tiers: `free`
@@ -16748,6 +19744,8 @@ Distinct count of users that imported projects from Gitea
Group: `group::import`
+Data Category: `Optional`
+
Status: `deprecated`
Tiers: `free`
@@ -16760,6 +19758,8 @@ Distinct count of users that imported projects from GitHub
Group: `group::import`
+Data Category: `Optional`
+
Status: `deprecated`
Tiers: `free`
@@ -16772,6 +19772,8 @@ Distinct count of users that imported projects from GitLab.com
Group: `group::import`
+Data Category: `Optional`
+
Status: `deprecated`
Tiers: `free`
@@ -16784,6 +19786,8 @@ Distinct count of users that imported projects using Project Import/Export
Group: `group::import`
+Data Category: `Optional`
+
Status: `deprecated`
Tiers: `free`
@@ -16796,6 +19800,8 @@ Distinct count of users that imported projects using Manifest file
Group: `group::import`
+Data Category: `Optional`
+
Status: `deprecated`
Tiers: `free`
@@ -16808,6 +19814,8 @@ Total count of all projects imported with import_source NOT NULL
Group: `group::import`
+Data Category: `Optional`
+
Status: `deprecated`
Tiers: `free`
@@ -16820,6 +19828,8 @@ Number of projects labeled with a compliance framework label [see](https://gitla
Group: `group::manage`
+Data Category: `Optional`
+
Status: `data_available`
Tiers:
@@ -16832,6 +19842,8 @@ Distinct count of users that triggered any kind of import
Group: `group::import`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`
@@ -16844,6 +19856,8 @@ Number of unique user logins using Google OAuth authentication
Group: `group::access`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -16856,6 +19870,8 @@ Number of unique user logins using password authentication
Group: `group::access`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -16868,6 +19884,8 @@ Number of unique user logins using two factor authentication
Group: `group::access`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -16880,6 +19898,8 @@ Number of unique user logins using two factor via a U2F device
Group: `group::access`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -16892,6 +19912,8 @@ Number of unique user logins using two factor via a WebAuthn device
Group: `group::access`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -16904,6 +19926,8 @@ Number of users
Group: `group::access`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -16916,6 +19940,8 @@ Number of custom value stream analytics stages.
Group: `group::optimize`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `premium`, `ultimate`
@@ -16928,6 +19954,8 @@ Users creating clusters.
Group: `group::monitor`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -16940,6 +19968,8 @@ Users creating clusters with Prometheus enabled.
Group: `group::monitor`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -16952,6 +19982,8 @@ Active users with enabled operations dashboard
Group: `group::monitor`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`
@@ -16964,6 +19996,8 @@ Active users with projects on operations dashboard
Group: `group::monitor`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -16972,13 +20006,15 @@ Tiers: `free`, `premium`, `ultimate`
Projects where Incident SLA is enabled
-[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216180522_projects_incident_sla_enabled.yml)
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_all/20210216180522_projects_incident_sla_enabled.yml)
+
+Group: `group::monitor`
-Group: `group::health`
+Data Category: `Optional`
Status: `data_available`
-Tiers: `free`
+Tiers: `premium`, `ultimate`
### `usage_activity_by_stage.monitor.projects_with_alert_incidents`
@@ -16986,11 +20022,13 @@ Count of unique projects with an incident from an alert
[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216180520_projects_with_alert_incidents.yml)
-Group: `group::health`
+Group: `group::monitor`
+
+Data Category: `Optional`
Status: `data_available`
-Tiers: `free`
+Tiers: `free`, `premium`, `ultimate`
### `usage_activity_by_stage.monitor.projects_with_enabled_alert_integrations_histogram`
@@ -17002,6 +20040,8 @@ Histogram (buckets 1 to 100) of projects with at least 1 enabled integration.
Group: `group::monitor`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -17012,11 +20052,13 @@ Projects where error tracking is enabled
[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216180517_projects_with_error_tracking_enabled.yml)
-Group: `group::health`
+Group: `group::monitor`
+
+Data Category: `Optional`
Status: `data_available`
-Tiers: `free`
+Tiers: `free`, `premium`, `ultimate`
### `usage_activity_by_stage.monitor.projects_with_incidents`
@@ -17024,11 +20066,13 @@ Count of unique projects with an incident
[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216180518_projects_with_incidents.yml)
-Group: `group::health`
+Group: `group::monitor`
+
+Data Category: `Optional`
Status: `data_available`
-Tiers: `free`
+Tiers: `free`, `premium`, `ultimate`
### `usage_activity_by_stage.monitor.projects_with_tracing_enabled`
@@ -17038,6 +20082,8 @@ Projects with tracing enabled
Group: `group::monitor`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -17050,6 +20096,8 @@ Projects with package registry enabled
Group: `group::package`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -17062,6 +20110,8 @@ Count of users creating assignee lists on Boards
Group: `group::project management`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `premium`, `ultimate`
@@ -17074,6 +20124,8 @@ Missing description
Group: `group::plan`
+Data Category: `Operational`
+
Status: `data_available`
Tiers: `free`
@@ -17086,6 +20138,8 @@ Count of users creating Issues
Group: `group::project management`
+Data Category: `Operational`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -17098,6 +20152,8 @@ Count of users creating label lists on Boards
Group: `group::project management`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -17110,6 +20166,8 @@ Count of users creating milestone lists on Boards
Group: `group::project management`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `premium`, `ultimate`
@@ -17122,6 +20180,8 @@ Count of users creating Notes on Issues
Group: `group::project management`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -17134,6 +20194,8 @@ Count of users creating projects
Group: `group::project management`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -17146,6 +20208,8 @@ Missing description
Group: `group::plan`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`
@@ -17158,6 +20222,8 @@ Missing description
Group: `group::plan`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`
@@ -17170,6 +20236,8 @@ Missing description
Group: `group::plan`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`
@@ -17182,6 +20250,8 @@ Missing description
Group: `group::plan`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`
@@ -17194,6 +20264,8 @@ Missing description
Group: `group::plan`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`
@@ -17206,6 +20278,8 @@ Count of users todos created
Group: `group::project management`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -17218,6 +20292,8 @@ Unique users triggering deployments
Group: `group::release`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`
@@ -17230,6 +20306,8 @@ Total failed deployments
Group: `group::release`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`
@@ -17242,6 +20320,8 @@ Count creator_id from projects with repository mirroring enabled.
Group: `group::pipeline execution`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `premium`, `ultimate`
@@ -17254,6 +20334,8 @@ Unique users creating release tags
Group: `group::release`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`
@@ -17266,6 +20348,8 @@ Total successful deployments
Group: `group::release`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`
@@ -17278,10 +20362,26 @@ Counts API fuzzing jobs
Group: `group::fuzz testing`
+Data Category: `Operational`
+
Status: `data_available`
Tiers:
+### `usage_activity_by_stage.secure.cluster_image_scanning_scans`
+
+Counts cluster image scanning jobs
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_all/20210618124854_cluster_image_scanning_scans.yml)
+
+Group: `group::container security`
+
+Data Category: `Optional`
+
+Status: `implemented`
+
+Tiers: `ultimate`
+
### `usage_activity_by_stage.secure.container_scanning_scans`
Counts container scanning jobs
@@ -17290,6 +20390,8 @@ Counts container scanning jobs
Group: `group::container security`
+Data Category: `Operational`
+
Status: `data_available`
Tiers: `ultimate`
@@ -17302,6 +20404,8 @@ Counts fuzzing jobs
Group: `group::fuzz testing`
+Data Category: `Operational`
+
Status: `data_available`
Tiers:
@@ -17312,11 +20416,13 @@ Counts dast jobs
[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_all/20210216182122_dast_scans.yml)
-Group: `group::static analysis`
+Group: `group::dynamic analysis`
+
+Data Category: `Operational`
Status: `data_available`
-Tiers:
+Tiers: `ultimate`
### `usage_activity_by_stage.secure.dependency_scanning_scans`
@@ -17326,6 +20432,8 @@ Total number of users running Dependency Scanning Scans
Group: `group::composition analysis`
+Data Category: `Operational`
+
Status: `data_available`
Tiers: `ultimate`
@@ -17338,21 +20446,25 @@ Counts sast jobs
Group: `group::static analysis`
+Data Category: `Operational`
+
Status: `data_available`
-Tiers:
+Tiers: `ultimate`
### `usage_activity_by_stage.secure.secret_detection_scans`
-Counts secret detection jobs
+counts secret detection jobs
[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_all/20210216182123_secret_detection_scans.yml)
Group: `group::static analysis`
+Data Category: `Operational`
+
Status: `data_available`
-Tiers:
+Tiers: `ultimate`
### `usage_activity_by_stage.secure.user_api_fuzzing_dnd_jobs`
@@ -17362,6 +20474,8 @@ Count of API Fuzzing `docker-in-docker` jobs by job name
Group: `group::fuzz testing`
+Data Category: `Operational`
+
Status: `data_available`
Tiers: `free`
@@ -17374,10 +20488,26 @@ Count of API Fuzzing jobs by job name
Group: `group::fuzz testing`
+Data Category: `Operational`
+
Status: `data_available`
Tiers: `free`
+### `usage_activity_by_stage.secure.user_api_fuzzing_scans`
+
+Number of users who have run a API Fuzzing scan
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_all/20210607044126_user_api_fuzzing_scans.yml)
+
+Group: `category::fuzz testing`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `ultimate`
+
### `usage_activity_by_stage.secure.user_container_scanning_jobs`
Distinct count per user of Container Scanning jobs run
@@ -17386,6 +20516,22 @@ Distinct count per user of Container Scanning jobs run
Group: `group::container security`
+Data Category: `Operational`
+
+Status: `data_available`
+
+Tiers: `ultimate`
+
+### `usage_activity_by_stage.secure.user_container_scanning_scans`
+
+Number of users who have run a Container Scanning scan
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_all/20210607043902_user_container_scanning_scans.yml)
+
+Group: `group::composition analysis`
+
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `ultimate`
@@ -17398,10 +20544,26 @@ Missing description
Group: ``
+Data Category: `Operational`
+
Status: `data_available`
Tiers: `free`
+### `usage_activity_by_stage.secure.user_coverage_fuzzing_scans`
+
+Number of users who have run a Coverage Fuzzing scan
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_all/20210607044040_user_coverage_fuzzing_scans.yml)
+
+Group: `category::fuzz testing`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `ultimate`
+
### `usage_activity_by_stage.secure.user_dast_jobs`
Count of DAST jobs
@@ -17410,10 +20572,26 @@ Count of DAST jobs
Group: `group::dynamic analysis`
+Data Category: `Operational`
+
Status: `data_available`
Tiers: `free`
+### `usage_activity_by_stage.secure.user_dast_scans`
+
+Number of users who have run a DAST scan
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_all/20210607043109_user_dast_scans.yml)
+
+Group: `group::dynamic analysis`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `ultimate`
+
### `usage_activity_by_stage.secure.user_dependency_scanning_jobs`
Total number of users running Dependency Scanning jobs
@@ -17422,6 +20600,22 @@ Total number of users running Dependency Scanning jobs
Group: `group::composition analysis`
+Data Category: `Operational`
+
+Status: `data_available`
+
+Tiers: `ultimate`
+
+### `usage_activity_by_stage.secure.user_dependency_scanning_scans`
+
+Number of users who have run a Dependency Scanning scan
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_all/20210607043819_user_dependency_scanning_scans.yml)
+
+Group: `group::composition analysis`
+
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `ultimate`
@@ -17434,6 +20628,8 @@ Total number of users running License Scanning jobs
Group: `group::composition analysis`
+Data Category: `Operational`
+
Status: `data_available`
Tiers: `ultimate`
@@ -17446,34 +20642,68 @@ Users who set personal preference to see Details on Group information page
Group: `group::threat insights`
+Data Category: `Operational`
+
Status: `data_available`
Tiers: `ultimate`
### `usage_activity_by_stage.secure.user_sast_jobs`
-Count of SAST jobs
+Count of SAST jobs per user
[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216182116_user_sast_jobs.yml)
Group: `group::static analysis`
+Data Category: `Operational`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
+### `usage_activity_by_stage.secure.user_sast_scans`
+
+Number of users who have run a SAST scan
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_all/20210607043741_user_sast_scans.yml)
+
+Group: `group::static analysis`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `ultimate`
+
### `usage_activity_by_stage.secure.user_secret_detection_jobs`
-Count of Secret Detection Jobs
+Count of Secret Detection Jobs per user
[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_all/20210216182118_user_secret_detection_jobs.yml)
Group: `group::static analysis`
+Data Category: `Operational`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
+### `usage_activity_by_stage.secure.user_secret_detection_scans`
+
+Number of users who have run a Secret Detection scan
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_all/20210607043957_user_secret_detection_scans.yml)
+
+Group: `group::static analysis`
+
+Data Category: `Optional`
+
+Status: `data_available`
+
+Tiers: `ultimate`
+
### `usage_activity_by_stage.secure.user_unique_users_all_secure_scanners`
Missing description
@@ -17482,6 +20712,8 @@ Missing description
Group: `group::secure`
+Data Category: `Operational`
+
Status: `data_available`
Tiers: `free`
@@ -17494,6 +20726,8 @@ Unique count of builds in project
Group: `group::pipeline execution`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -17506,6 +20740,8 @@ Total pipelines in external repositories
Group: `group::pipeline execution`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -17518,6 +20754,8 @@ Total pipelines in GitLab repositories
Group: `group::pipeline execution`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -17530,6 +20768,8 @@ Total pipelines from an Auto DevOps template
Group: `group::configure`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -17542,6 +20782,8 @@ Total Pipelines from templates in repository
Group: `group::pipeline execution`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -17554,6 +20796,8 @@ Pipeline schedules in GitLab
Group: `group::pipeline execution`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -17566,6 +20810,8 @@ Distinct Users triggering Total pipelines
Group: `group::pipeline execution`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -17578,6 +20824,8 @@ Total configured Triggers in project
Group: `group::pipeline execution`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -17590,6 +20838,8 @@ Count of users creating managed clusters with Runner enabled
Group: `group::configure`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -17602,6 +20852,8 @@ Projects with a GitHub service pipeline enabled
Group: `group::pipeline execution`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `premium`, `ultimate`
@@ -17614,6 +20866,8 @@ Total GitLab Managed clusters with Cert Manager enabled
Group: `group::configure`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -17626,6 +20880,8 @@ Total GitLab Managed clusters with Helm enabled
Group: `group::configure`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -17638,6 +20894,8 @@ Total GitLab Managed clusters with Ingress enabled
Group: `group::configure`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -17650,6 +20908,8 @@ Total GitLab Managed clusters with Knative enabled
Group: `group::configure`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -17662,6 +20922,8 @@ Total GitLab Managed disabled clusters
Group: `group::configure`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -17674,6 +20936,8 @@ Total GitLab Managed clusters currently enabled
Group: `group::configure`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -17686,6 +20950,8 @@ Number of Kubernetes clusters with clusters management project being set
Group: `group::configure`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -17698,6 +20964,8 @@ Total GitLab Managed clusters provisioned with GitLab on AWS EKS
Group: `group::configure`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -17710,6 +20978,8 @@ Total GitLab Managed clusters provisioned with GitLab on GCE GKE
Group: `group::configure`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -17722,6 +20992,8 @@ Total GitLab Managed clusters that are user provisioned
Group: `group::configure`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -17734,6 +21006,8 @@ Total GitLab Managed disabled clusters attached to groups
Group: `group::configure`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -17746,6 +21020,8 @@ Total GitLab Managed enabled clusters attached to groups
Group: `group::configure`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -17758,6 +21034,8 @@ Total GitLab Managed disabled clusters attached to the instance
Group: `group::configure`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -17770,6 +21048,8 @@ Total GitLab Managed enabled clusters attached to the instance
Group: `group::configure`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -17782,6 +21062,8 @@ Total GitLab Managed disabled clusters attached to projects
Group: `group::configure`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -17794,6 +21076,8 @@ Total GitLab Managed enabled clusters attached to projects
Group: `group::configure`
+Data Category: `Operational`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -17806,6 +21090,8 @@ Unique projects created in the past 28 days that have Slack notifications enable
Group: `group::configure`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -17818,6 +21104,8 @@ Unique projects created in the past 28 days that have Slack ‘/’ commands ena
Group: `group::configure`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -17830,6 +21118,8 @@ Projects with Prometheus alerting enabled
Group: `group::monitor`
+Data Category: `Optional`
+
Status: `removed`
Tiers: `free`, `premium`, `ultimate`
@@ -17842,6 +21132,8 @@ Monthly active users for design management
Group: `group::product planning`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -17854,6 +21146,8 @@ Aggregated value for wiki, design, and project repo Git write actions
Group: `group::source code`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -17866,6 +21160,8 @@ Number of unique users per month who edited a file from any web editor
Group: `group::editor`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -17878,6 +21174,8 @@ Count of monthly active users who have performed any Git operation (read/write/p
Group: `group::source code`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -17890,6 +21188,8 @@ Number of users using single file editor
Group: `group::editor`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -17902,6 +21202,8 @@ Number of users using the snippet editor
Group: `group::editor`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -17914,6 +21216,8 @@ Number of users using the static site editor
Group: `group::editor`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -17926,6 +21230,8 @@ Number of users editing using web IDE
Group: `group::editor`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -17938,6 +21244,8 @@ Unique monthly active users of the Wiki
Group: `group::editor`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -17950,6 +21258,8 @@ Total number of project approval rules
Group: `group::source code`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `premium`, `ultimate`
@@ -17962,6 +21272,8 @@ Number of approval rules with the exact number of required approvers.
Group: `group::source code`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `premium`, `ultimate`
@@ -17974,6 +21286,8 @@ Number of approval rules with fewer approvers than required.
Group: `group::source code`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `premium`, `ultimate`
@@ -17986,6 +21300,8 @@ Number of approval rules with more approvers than required.
Group: `group::source code`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `premium`, `ultimate`
@@ -17998,6 +21314,8 @@ Number of project approval rules scoped to a specific repo branch.
Group: `group::source code`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `premium`, `ultimate`
@@ -18010,6 +21328,8 @@ Count of users creating deploy keys in last 28 days.
Group: `group::source code`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -18022,6 +21342,8 @@ Count of users creating regular keys in last 28 days.
Group: `group::source code`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -18034,6 +21356,8 @@ Count of the number of users creating merge requests
Group: `group::code review`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -18046,6 +21370,8 @@ Monthly count of the number of merge request users
Group: `group::code review`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -18058,6 +21384,8 @@ Merge requests with added rules
Group: `group::code review`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `premium`, `ultimate`
@@ -18070,6 +21398,8 @@ Count of merge requests with optional codeowner approval rules
Group: `group::source code`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `premium`, `ultimate`
@@ -18082,6 +21412,8 @@ Number of merge requests which have overriden rules created at the project level
Group: `group::source code`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `premium`, `ultimate`
@@ -18094,6 +21426,8 @@ Count of merge requests with required codeowner approval rules
Group: `group::source code`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `premium`, `ultimate`
@@ -18106,6 +21440,8 @@ Count of total projects that require approval by code owners for code changes
Group: `group::source code`
+Data Category: `Operational`
+
Status: `data_available`
Tiers: `premium`, `ultimate`
@@ -18118,6 +21454,8 @@ Missing description
Group: `group::import`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`
@@ -18130,6 +21468,8 @@ Count of the number of projects with setting to disable overriding approvers per
Group: `group::source code`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -18142,6 +21482,8 @@ Count of users creating projects that have a matching Git repository, result of
Group: `group::source code`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `premium`, `ultimate`
@@ -18154,6 +21496,8 @@ Count of projects using code owners with code owners section feature
Group: `group::source code`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `premium`, `ultimate`
@@ -18166,6 +21510,8 @@ Count of the number of projects without setting to disable overriding approvers
Group: `group::source code`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -18178,6 +21524,8 @@ Count of users creating projects with repositories making use of at least one pr
Group: `group::source code`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -18190,6 +21538,8 @@ Count of users creating projects with remote mirrors. Includes both push and pul
Group: `group::source code`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -18202,6 +21552,8 @@ Count of distinct author_id from snippets for last 28 days
Group: `group::editor`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -18214,6 +21566,8 @@ Count of unique users per month who create suggestions in merge request comments
Group: `group::code review`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -18226,6 +21580,8 @@ The total number of files which have been locked via the GitLab UI
Group: `group::source code`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `premium`, `ultimate`
@@ -18238,6 +21594,8 @@ Number of paths/directories manually locked through the UI
Group: `group::source code`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `premium`, `ultimate`
@@ -18250,6 +21608,8 @@ Number of unique users who have locked files or directories using LFS via the co
Group: `group::source code`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `premium`, `ultimate`
@@ -18262,6 +21622,8 @@ Number of users creating path_locks in last 28 days.
Group: `group::source code`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `premium`, `ultimate`
@@ -18274,6 +21636,8 @@ Missing description
Group: ``
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -18286,6 +21650,8 @@ Missing description
Group: ``
+Data Category: `Optional`
+
Status: `deprecated`
Tiers: `free`
@@ -18298,10 +21664,26 @@ Missing description
Group: ``
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`
+### `usage_activity_by_stage_monthly.manage.compliance_frameworks_with_pipeline`
+
+Count of compliance frameworks that have a pipeline configuration
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_28d/20210622091519_compliance_frameworks_with_pipeline.yml)
+
+Group: `compliance`
+
+Data Category: `Optional`
+
+Status: `implemented`
+
+Tiers: `ultimate`
+
### `usage_activity_by_stage_monthly.manage.custom_compliance_frameworks`
Monthly count of all custom compliance framework labels
@@ -18310,6 +21692,8 @@ Monthly count of all custom compliance framework labels
Group: `compliance`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `premium`, `ultimate`
@@ -18322,6 +21706,8 @@ Missing description
Group: `group::manage`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`
@@ -18334,6 +21720,8 @@ Missing description
Group: ``
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`
@@ -18346,6 +21734,8 @@ Number of group import states
Group: `group::import`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -18358,6 +21748,8 @@ Whether group SAML is enabled
Group: `group:access`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `premium`, `ultimate`
@@ -18370,6 +21762,8 @@ Number of users who are group members for last 28 days
Group: `group::access`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -18382,6 +21776,8 @@ Missing description
Group: `group::import`
+Data Category: `Optional`
+
Status: `deprecated`
Tiers: `free`
@@ -18394,6 +21790,8 @@ Missing description
Group: ``
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`
@@ -18406,6 +21804,8 @@ Missing description
Group: ``
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`
@@ -18418,6 +21818,8 @@ Missing description
Group: ``
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`
@@ -18430,6 +21832,8 @@ Missing description
Group: ``
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`
@@ -18442,6 +21846,8 @@ Missing description
Group: ``
+Data Category: `Optional`
+
Status: `deprecated`
Tiers: `free`
@@ -18454,6 +21860,8 @@ Missing description
Group: ``
+Data Category: `Optional`
+
Status: `deprecated`
Tiers: `free`
@@ -18466,6 +21874,8 @@ Missing description
Group: ``
+Data Category: `Optional`
+
Status: `deprecated`
Tiers: `free`
@@ -18478,6 +21888,8 @@ Missing description
Group: ``
+Data Category: `Optional`
+
Status: `deprecated`
Tiers: `free`
@@ -18490,6 +21902,8 @@ Whether LDAP admin sync is enabled
Group: `group::access`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `premium`, `ultimate`
@@ -18502,6 +21916,8 @@ Has the instance configured [LDAP Group Sync](https://docs.gitlab.com/ee/adminis
Group: `group::acess`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `premium`, `ultimate`
@@ -18514,6 +21930,8 @@ Number of users creating keys synced as part of LDAP for last 28 days.
Group: `group::acess`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `premium`, `ultimate`
@@ -18526,6 +21944,8 @@ Number of LDAP servers configured
Group: `group::manage`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `premium`, `ultimate`
@@ -18538,6 +21958,8 @@ Number of users that are linked to LDAP
Group: `group::access`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `premium`, `ultimate`
@@ -18550,6 +21972,8 @@ Number of unique user logins using an OmniAuth provider
Group: `group::access`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -18562,6 +21986,8 @@ Count of projects imported from Bitbucket
Group: `group::import`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -18574,6 +22000,8 @@ Count of projects imported from Bitbucket Server
Group: `group::import`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -18586,6 +22014,8 @@ Count of projects imported from Git
Group: `group::import`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -18598,6 +22028,8 @@ Count of projects imported from Gitea
Group: `group::import`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -18610,6 +22042,8 @@ Count of projects imported from GitHub
Group: `group::import`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -18622,6 +22056,8 @@ Count of projects imported from GitLab using Project Export/Import
Group: `group::import`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -18634,6 +22070,8 @@ Missing description
Group: `group::import`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -18646,6 +22084,8 @@ Missing description
Group: `group::import`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -18658,6 +22098,8 @@ Missing description
Group: `group::import`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -18670,6 +22112,8 @@ Total count of projects imported
Group: `group::import`
+Data Category: `Optional`
+
Status: `implemented`
Tiers: `free`, `premium`, `ultimate`
@@ -18682,6 +22126,8 @@ Count of projects imported from Bitbucket
Group: `group::import`
+Data Category: `Optional`
+
Status: `deprecated`
Tiers: `free`, `premium`, `ultimate`
@@ -18694,6 +22140,8 @@ Count of projects imported from Bitbucket Server
Group: `group::import`
+Data Category: `Optional`
+
Status: `deprecated`
Tiers: `free`, `premium`, `ultimate`
@@ -18706,6 +22154,8 @@ Missing description
Group: ``
+Data Category: `Optional`
+
Status: `deprecated`
Tiers: `free`
@@ -18718,6 +22168,8 @@ Missing description
Group: ``
+Data Category: `Optional`
+
Status: `deprecated`
Tiers: `free`
@@ -18730,6 +22182,8 @@ Missing description
Group: ``
+Data Category: `Optional`
+
Status: `deprecated`
Tiers: `free`
@@ -18742,6 +22196,8 @@ Missing description
Group: ``
+Data Category: `Optional`
+
Status: `deprecated`
Tiers: `free`
@@ -18754,6 +22210,8 @@ Missing description
Group: ``
+Data Category: `Optional`
+
Status: `deprecated`
Tiers: `free`
@@ -18766,6 +22224,8 @@ Missing description
Group: ``
+Data Category: `Optional`
+
Status: `deprecated`
Tiers: `free`
@@ -18778,6 +22238,8 @@ Missing description
Group: ``
+Data Category: `Optional`
+
Status: `deprecated`
Tiers: `free`
@@ -18790,6 +22252,8 @@ Missing description
Group: `group::manage`
+Data Category: `Optional`
+
Status: `data_available`
Tiers:
@@ -18802,6 +22266,8 @@ Number of users from projects imported
Group: `group::import`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -18814,6 +22280,8 @@ Number of unique user logins using Google OAuth authentication
Group: `group::access`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -18826,6 +22294,8 @@ Number of unique user logins using password authentication
Group: `group::access`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -18838,6 +22308,8 @@ Number of unique user logins using two factor authentication
Group: `group::access`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -18850,6 +22322,8 @@ Number of unique user logins using two factor via a U2F device
Group: `group::access`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -18862,6 +22336,8 @@ Number of unique user logins using two factor via a WebAuthn device
Group: `group::access`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -18874,6 +22350,8 @@ Number of users created in the month
Group: `group::access`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -18886,9 +22364,11 @@ Missing description
Group: `group::manage`
+Data Category: `Optional`
+
Status: `data_available`
-Tiers:
+Tiers: `premium`, `ultimate`
### `usage_activity_by_stage_monthly.monitor.clusters`
@@ -18898,6 +22378,8 @@ Count users creating clusters in last 28 days.
Group: `group::monitor`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -18910,6 +22392,8 @@ Users creating clusters with Prometheus enabled in last 28 days.
Group: `group::monitor`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -18922,6 +22406,8 @@ Active users with enabled operations dashboard
Group: `group::monitor`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -18934,6 +22420,8 @@ Active users with projects on operations dashboard
Group: `group::monitor`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -18946,7 +22434,9 @@ Count of projects with Incident SLA enabled
Group: `group::monitor`
-Status: `data_available`
+Data Category: `Optional`
+
+Status: `deprecated`
Tiers: `premium`, `ultimate`
@@ -18956,11 +22446,13 @@ Count of unique projects with an incident from an alert created in the last mont
[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216180526_projects_with_alert_incidents.yml)
-Group: `group::health`
+Group: `group::monitor`
+
+Data Category: `Optional`
Status: `data_available`
-Tiers: `free`
+Tiers: `free`, `premium`, `ultimate`
### `usage_activity_by_stage_monthly.monitor.projects_with_error_tracking_enabled`
@@ -18970,6 +22462,8 @@ Count of users creating projects with error tracking enabled.
Group: `group::monitor`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -18980,11 +22474,13 @@ Count of unique projects with an incident created in the last month
[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/counts_28d/20210216180524_projects_with_incidents.yml)
-Group: `group::health`
+Group: `group::monitor`
+
+Data Category: `Optional`
Status: `data_available`
-Tiers: `free`
+Tiers: `free`, `premium`, `ultimate`
### `usage_activity_by_stage_monthly.monitor.projects_with_tracing_enabled`
@@ -18994,6 +22490,8 @@ Projects with tracing enabled
Group: `group::monitor`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -19006,6 +22504,8 @@ The total number of projects in a given month with at least one package
Group: `group::package`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -19018,6 +22518,8 @@ Count of MAU creating assignee lists on Boards
Group: `group::project management`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `premium`, `ultimate`
@@ -19030,6 +22532,8 @@ Missing description
Group: `group::plan`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`
@@ -19042,6 +22546,8 @@ Count of users creating Issues in last 28 days.
Group: `group::project management`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -19054,6 +22560,8 @@ Count of MAU creating label lists on Boards
Group: `group::project management`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -19066,6 +22574,8 @@ Count of MAU created milestone lists on Boards
Group: `group::project management`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `premium`, `ultimate`
@@ -19078,6 +22588,8 @@ Count of MAU commenting on an issuable
Group: `group::project management`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -19090,6 +22602,8 @@ Count of MAU creating projects
Group: `group::project management`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -19102,6 +22616,8 @@ Missing description
Group: `group::plan`
+Data Category: `Operational`
+
Status: `data_available`
Tiers: `free`
@@ -19114,6 +22630,8 @@ Missing description
Group: `group::plan`
+Data Category: `Operational`
+
Status: `data_available`
Tiers: `free`
@@ -19126,6 +22644,8 @@ Missing description
Group: `group::plan`
+Data Category: `Operational`
+
Status: `data_available`
Tiers: `free`
@@ -19138,6 +22658,8 @@ Missing description
Group: `group::plan`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`
@@ -19150,6 +22672,8 @@ Missing description
Group: `group::plan`
+Data Category: `Operational`
+
Status: `data_available`
Tiers: `free`
@@ -19162,6 +22686,8 @@ Count of MAU creating todos
Group: `group::project management`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -19174,6 +22700,8 @@ Unique users triggering deployments
Group: `group::release`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`
@@ -19186,6 +22714,8 @@ Total failed deployments
Group: `group::release`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`
@@ -19198,6 +22728,8 @@ Count creator_id from projects with repository mirroring enabled.
Group: `group::pipeline execution`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `premium`, `ultimate`
@@ -19210,6 +22742,8 @@ Unique users creating release tags
Group: `group::release`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`
@@ -19222,6 +22756,8 @@ Total successful deployments
Group: `group::release`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`
@@ -19234,6 +22770,8 @@ Counts of Pipelines that have at least 1 API Fuzzing Testing job
Group: `group::fuzz testing`
+Data Category: `Operational`
+
Status: `data_available`
Tiers: `ultimate`
@@ -19246,10 +22784,40 @@ Missing description
Group: ``
+Data Category: `Operational`
+
Status: `data_available`
Tiers: `free`
+### `usage_activity_by_stage_monthly.secure.cluster_image_scanning_pipeline`
+
+Pipelines containing a Cluster Image Scanning job
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_28d/20210618125224_cluster_image_scanning_pipeline.yml)
+
+Group: `group::container security`
+
+Data Category: `Optional`
+
+Status: `implemented`
+
+Tiers: `ultimate`
+
+### `usage_activity_by_stage_monthly.secure.cluster_image_scanning_scans`
+
+Counts cluster image scanning jobs
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_28d/20210618101233_cluster_image_scanning_scans.yml)
+
+Group: `group::container security`
+
+Data Category: `Optional`
+
+Status: `implemented`
+
+Tiers: `ultimate`
+
### `usage_activity_by_stage_monthly.secure.container_scanning_pipeline`
Pipelines containing a Container Scanning job
@@ -19258,6 +22826,8 @@ Pipelines containing a Container Scanning job
Group: `group::container security`
+Data Category: `Operational`
+
Status: `data_available`
Tiers: `ultimate`
@@ -19270,6 +22840,8 @@ Missing description
Group: ``
+Data Category: `Operational`
+
Status: `data_available`
Tiers: `free`
@@ -19282,6 +22854,8 @@ Counts of Pipelines that have at least 1 coverage-guided Fuzz Testing job
Group: `group::fuzz testing`
+Data Category: `Operational`
+
Status: `data_available`
Tiers: `ultimate`
@@ -19294,6 +22868,8 @@ Missing description
Group: ``
+Data Category: `Operational`
+
Status: `data_available`
Tiers: `free`
@@ -19306,6 +22882,8 @@ Count of pipelines that have at least 1 DAST job
Group: `group::dynamic analysis`
+Data Category: `Operational`
+
Status: `data_available`
Tiers: `ultimate`
@@ -19318,6 +22896,8 @@ Missing description
Group: ``
+Data Category: `Operational`
+
Status: `data_available`
Tiers: `free`
@@ -19330,6 +22910,8 @@ Count of pipelines with successful Dependency Scanning jobs
Group: `group::composition analysis`
+Data Category: `Operational`
+
Status: `data_available`
Tiers: `ultimate`
@@ -19342,6 +22924,8 @@ Monthly number of users running Dependency Scanning Scans
Group: `group::composition analysis`
+Data Category: `Operational`
+
Status: `data_available`
Tiers: `ultimate`
@@ -19354,6 +22938,8 @@ Counts of Pipelines that have at least 1 SAST job
Group: `group::static analysis`
+Data Category: `Operational`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -19366,6 +22952,8 @@ Missing description
Group: ``
+Data Category: `Operational`
+
Status: `data_available`
Tiers: `free`
@@ -19378,6 +22966,8 @@ Counts of Pipelines that have at least 1 Secret Detection job
Group: `group::static analysis`
+Data Category: `Operational`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -19390,6 +22980,8 @@ Missing description
Group: ``
+Data Category: `Operational`
+
Status: `data_available`
Tiers: `free`
@@ -19402,6 +22994,8 @@ Count of API Fuzzing `docker-in-docker` jobs by job names
Group: `group::fuzz testing`
+Data Category: `Operational`
+
Status: `data_available`
Tiers: `free`
@@ -19414,10 +23008,26 @@ Count of API Fuzzing jobs by job name
Group: `group::fuzz testing`
+Data Category: `Operational`
+
Status: `data_available`
Tiers: `free`
+### `usage_activity_by_stage_monthly.secure.user_api_fuzzing_scans`
+
+Number of users who have run a API Fuzzing scan
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_28d/20210607043622_user_api_fuzzing_scans.yml)
+
+Group: `category::fuzz testing`
+
+Data Category: `Operational`
+
+Status: `data_available`
+
+Tiers: `ultimate`
+
### `usage_activity_by_stage_monthly.secure.user_container_scanning_jobs`
Distinct count per user of Container Scanning jobs run monthly
@@ -19426,6 +23036,22 @@ Distinct count per user of Container Scanning jobs run monthly
Group: `group::container security`
+Data Category: `Operational`
+
+Status: `data_available`
+
+Tiers: `ultimate`
+
+### `usage_activity_by_stage_monthly.secure.user_container_scanning_scans`
+
+Number of users who have run a Container Scanning scan
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_28d/20210607043336_user_container_scanning_scans.yml)
+
+Group: `group::composition analysis`
+
+Data Category: `Operational`
+
Status: `data_available`
Tiers: `ultimate`
@@ -19438,10 +23064,26 @@ Missing description
Group: ``
+Data Category: `Operational`
+
Status: `data_available`
Tiers: `free`
+### `usage_activity_by_stage_monthly.secure.user_coverage_fuzzing_scans`
+
+Number of users who have run a Coverage Fuzzing scan
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_28d/20210607043509_user_coverage_fuzzing_scans.yml)
+
+Group: `category::fuzz testing`
+
+Data Category: `Operational`
+
+Status: `data_available`
+
+Tiers: `ultimate`
+
### `usage_activity_by_stage_monthly.secure.user_dast_jobs`
Users who run a DAST job
@@ -19450,10 +23092,26 @@ Users who run a DAST job
Group: `group::dynamic analysis`
+Data Category: `Operational`
+
Status: `data_available`
Tiers: `free`
+### `usage_activity_by_stage_monthly.secure.user_dast_scans`
+
+Number of users who have run a DAST scan
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_28d/20210607041718_user_dast_scans.yml)
+
+Group: `group::dynamic analysis`
+
+Data Category: `Operational`
+
+Status: `data_available`
+
+Tiers: `ultimate`
+
### `usage_activity_by_stage_monthly.secure.user_dependency_scanning_jobs`
Monthly number of users creating Dependency Scanning jobs
@@ -19462,6 +23120,22 @@ Monthly number of users creating Dependency Scanning jobs
Group: `group::composition analysis`
+Data Category: `Operational`
+
+Status: `data_available`
+
+Tiers: `ultimate`
+
+### `usage_activity_by_stage_monthly.secure.user_dependency_scanning_scans`
+
+Number of users who have run a Dependency Scanning scan
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_28d/20210607043301_user_dependency_scanning_scans.yml)
+
+Group: `group::composition analysis`
+
+Data Category: `Operational`
+
Status: `data_available`
Tiers: `ultimate`
@@ -19474,6 +23148,8 @@ Monthly number of users running License Scanning jobs
Group: `group::composition analysis`
+Data Category: `Operational`
+
Status: `data_available`
Tiers: `ultimate`
@@ -19486,6 +23162,8 @@ Users who set personal preference to see Security Dashboard on Group information
Group: `group::threat insights`
+Data Category: `Operational`
+
Status: `data_available`
Tiers: `ultimate`
@@ -19498,10 +23176,26 @@ Users who run a SAST job
Group: `group::static analysis`
+Data Category: `Operational`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
+### `usage_activity_by_stage_monthly.secure.user_sast_scans`
+
+Number of users who have run a SAST scan
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_28d/20210607043218_user_sast_scans.yml)
+
+Group: `group::static analysis`
+
+Data Category: `Operational`
+
+Status: `data_available`
+
+Tiers: `ultimate`
+
### `usage_activity_by_stage_monthly.secure.user_secret_detection_jobs`
Users who run a Secret Detection job
@@ -19510,10 +23204,26 @@ Users who run a Secret Detection job
Group: `group::static analysis`
+Data Category: `Operational`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
+### `usage_activity_by_stage_monthly.secure.user_secret_detection_scans`
+
+Number of users who have run a Secret Detection scan
+
+[YAML definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/counts_28d/20210607043410_user_secret_detection_scans.yml)
+
+Group: `group::static analysis`
+
+Data Category: `Operational`
+
+Status: `data_available`
+
+Tiers: `ultimate`
+
### `usage_activity_by_stage_monthly.secure.user_unique_users_all_secure_scanners`
Missing description
@@ -19522,6 +23232,8 @@ Missing description
Group: `group::secure`
+Data Category: `Operational`
+
Status: `data_available`
Tiers: `free`
@@ -19534,6 +23246,8 @@ Unique monthly builds in project
Group: `group::pipeline execution`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -19546,6 +23260,8 @@ Total pipelines in external repositories in a month
Group: `group::pipeline execution`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -19558,6 +23274,8 @@ Total pipelines in GitLab repositories in a month
Group: `group::pipeline execution`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -19570,6 +23288,8 @@ Total pipelines from an Auto DevOps template
Group: `group::configure`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -19582,6 +23302,8 @@ Total Monthly Pipelines from templates in repository
Group: `group::pipeline execution`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -19594,6 +23316,8 @@ Total monthly Pipeline schedules in GitLab
Group: `group::pipeline execution`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -19606,6 +23330,8 @@ Distinct users triggering pipelines in a month
Group: `group::pipeline execution`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`, `free`
@@ -19618,6 +23344,8 @@ Total configured Triggers in project
Group: `group::pipeline execution`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -19630,6 +23358,8 @@ Total GitLab Managed clusters with Runner enabled
Group: `group::runner`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -19642,6 +23372,8 @@ Projects with a GitHub repository mirror pipeline enabled
Group: `group::pipeline execution`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `premium`, `ultimate`
@@ -19654,6 +23386,8 @@ GitLab instance unique identifier
Group: `group::product intelligence`
+Data Category: `Standard`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -19666,6 +23400,8 @@ Version of GitLab instance
Group: `group::distribution`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
@@ -19678,6 +23414,8 @@ Whether Web IDE clientside preview is enabled
Group: `group::editor`
+Data Category: `Optional`
+
Status: `data_available`
Tiers: `free`, `premium`, `ultimate`
diff --git a/doc/development/usage_ping/index.md b/doc/development/usage_ping/index.md
index de6a234e20c..aa06cb36f0c 100644
--- a/doc/development/usage_ping/index.md
+++ b/doc/development/usage_ping/index.md
@@ -1,1579 +1,9 @@
---
-stage: Growth
-group: Product Intelligence
-info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://about.gitlab.com/handbook/engineering/ux/technical-writing/#assignments
+redirect_to: '../service_ping/index.md'
+remove_date: '2021-10-09'
---
-# Usage Ping Guide
+This file was moved to [another location](../service_ping/index.md).
-> Introduced in GitLab Ultimate 11.2, more statistics.
-
-This guide describes Usage Ping's purpose and how it's implemented.
-
-For more information about Product Intelligence, see:
-
-- [Product Intelligence Guide](https://about.gitlab.com/handbook/product/product-intelligence-guide/)
-- [Snowplow Guide](../snowplow/index.md)
-
-More links:
-
-- [Product Intelligence Direction](https://about.gitlab.com/direction/product-intelligence/)
-- [Data Analysis Process](https://about.gitlab.com/handbook/business-ops/data-team/#data-analysis-process/)
-- [Data for Product Managers](https://about.gitlab.com/handbook/business-ops/data-team/programs/data-for-product-managers/)
-- [Data Infrastructure](https://about.gitlab.com/handbook/business-ops/data-team/platform/infrastructure/)
-
-## What is Usage Ping?
-
-Usage Ping is a process in GitLab that collects and sends a weekly payload to GitLab Inc.
-The payload provides important high-level data that helps our product, support,
-and sales teams understand how GitLab is used. For example, the data helps to:
-
-- Compare counts month over month (or week over week) to get a rough sense for how an instance uses
- different product features.
-- Collect other facts that help us classify and understand GitLab installations.
-- Calculate our Stage Monthly Active Users (SMAU), which helps to measure the success of our stages
- and features.
-
-Usage Ping information is not anonymous. It's linked to the instance's hostname. However, it does
-not contain project names, usernames, or any other specific data.
-
-Sending a Usage Ping payload is optional and can be [disabled](#disable-usage-ping) on any instance.
-When Usage Ping is enabled, GitLab gathers data from the other instances
-and can show your instance's usage statistics to your users.
-
-### Terminology
-
-We use the following terminology to describe the Usage Ping components:
-
-- **Usage Ping**: the process that collects and generates a JSON payload.
-- **Usage data**: the contents of the Usage Ping JSON payload. This includes metrics.
-- **Metrics**: primarily made up of row counts for different tables in an instance's database. Each
- metric has a corresponding [metric definition](metrics_dictionary.md#metrics-definition-and-validation)
- in a YAML file.
-
-### Why should we enable Usage Ping?
-
-- The main purpose of Usage Ping is to build a better GitLab. Data about how GitLab is used is collected to better understand feature/stage adoption and usage, which helps us understand how GitLab is adding value and helps our team better understand the reasons why people use GitLab and with this knowledge we're able to make better product decisions.
-- As a benefit of having the usage ping active, GitLab lets you analyze the users' activities over time of your GitLab installation.
-- As a benefit of having the usage ping active, GitLab provides you with The DevOps Report,which gives you an overview of your entire instance's adoption of Concurrent DevOps from planning to monitoring.
-- You get better, more proactive support. (assuming that our TAMs and support organization used the data to deliver more value)
-- You get insight and advice into how to get the most value out of your investment in GitLab. Wouldn't you want to know that a number of features or values are not being adopted in your organization?
-- You get a report that illustrates how you compare against other similar organizations (anonymized), with specific advice and recommendations on how to improve your DevOps processes.
-- Usage Ping is enabled by default. To disable it, see [Disable Usage Ping](#disable-usage-ping).
-
-### Limitations
-
-- Usage Ping does not track frontend events things like page views, link clicks, or user sessions, and only focuses on aggregated backend events.
-- Because of these limitations we recommend instrumenting your products with Snowplow for more detailed analytics on GitLab.com and use Usage Ping to track aggregated backend events on self-managed.
-
-## Usage Ping payload
-
-You can view the exact JSON payload sent to GitLab Inc. in the administration panel. To view the payload:
-
-1. Sign in as a user with [Administrator](../../user/permissions.md) permissions.
-1. On the top bar, select **Menu >** **{admin}** **Admin**.
-1. On the left sidebar, select **Settings > Metrics and profiling**.
-1. Expand the **Usage statistics** section.
-1. Select **Preview payload**.
-
-For an example payload, see [Example Usage Ping payload](#example-usage-ping-payload).
-
-## Disable Usage Ping
-
-To disable Usage Ping in the GitLab UI:
-
-1. Sign in as a user with [Administrator](../../user/permissions.md) permissions.
-1. On the top bar, select **Menu >** **{admin}** **Admin**.
-1. On the left sidebar, select **Settings > Metrics and profiling**.
-1. Expand the **Usage statistics** section.
-1. Clear the **Enable usage ping** checkbox and select **Save changes**.
-
-To disable Usage Ping and prevent it from being configured in the future through
-the administration panel, Omnibus installs can set the following in
-[`gitlab.rb`](https://docs.gitlab.com/omnibus/settings/configuration.html#configuration-options):
-
-```ruby
-gitlab_rails['usage_ping_enabled'] = false
-```
-
-Source installations can set the following in `gitlab.yml`:
-
-```yaml
-production: &base
- # ...
- gitlab:
- # ...
- usage_ping_enabled: false
-```
-
-## Usage Ping request flow
-
-The following example shows a basic request/response flow between a GitLab instance, the Versions Application, the License Application, Salesforce, the GitLab S3 Bucket, the GitLab Snowflake Data Warehouse, and Sisense:
-
-```mermaid
-sequenceDiagram
- participant GitLab Instance
- participant Versions Application
- participant Licenses Application
- participant Salesforce
- participant S3 Bucket
- participant Snowflake DW
- participant Sisense Dashboards
- GitLab Instance->>Versions Application: Send Usage Ping
- loop Process usage data
- Versions Application->>Versions Application: Parse usage data
- Versions Application->>Versions Application: Write to database
- Versions Application->>Versions Application: Update license ping time
- end
- loop Process data for Salesforce
- Versions Application-xLicenses Application: Request Zuora subscription id
- Licenses Application-xVersions Application: Zuora subscription id
- Versions Application-xSalesforce: Request Zuora account id by Zuora subscription id
- Salesforce-xVersions Application: Zuora account id
- Versions Application-xSalesforce: Usage data for the Zuora account
- end
- Versions Application->>S3 Bucket: Export Versions database
- S3 Bucket->>Snowflake DW: Import data
- Snowflake DW->>Snowflake DW: Transform data using dbt
- Snowflake DW->>Sisense Dashboards: Data available for querying
- Versions Application->>GitLab Instance: DevOps Report (Conversational Development Index)
-```
-
-## How Usage Ping works
-
-1. The Usage Ping [cron job](https://gitlab.com/gitlab-org/gitlab/-/blob/master/app/workers/gitlab_usage_ping_worker.rb#L30) is set in Sidekiq to run weekly.
-1. When the cron job runs, it calls [`Gitlab::UsageData.to_json`](https://gitlab.com/gitlab-org/gitlab/-/blob/master/app/services/submit_usage_ping_service.rb#L22).
-1. `Gitlab::UsageData.to_json` [cascades down](https://gitlab.com/gitlab-org/gitlab/-/blob/master/lib/gitlab/usage_data.rb#L22) to ~400+ other counter method calls.
-1. The response of all methods calls are [merged together](https://gitlab.com/gitlab-org/gitlab/-/blob/master/lib/gitlab/usage_data.rb#L14) into a single JSON payload in `Gitlab::UsageData.to_json`.
-1. The JSON payload is then [posted to the Versions application]( https://gitlab.com/gitlab-org/gitlab/-/blob/master/app/services/submit_usage_ping_service.rb#L20)
- If a firewall exception is needed, the required URL depends on several things. If
- the hostname is `version.gitlab.com`, the protocol is `TCP`, and the port number is `443`,
- the required URL is <https://version.gitlab.com/>.
-
-## Usage Ping Metric Life cycle
-
-### 1. New metrics addition
-
-Please follow the [Implementing Usage Ping](#implementing-usage-ping) guide.
-
-### 2. Existing metric change
-
-Because we do not control when customers update their self-managed instances of GitLab,
-we **STRONGLY DISCOURAGE** changes to the logic used to calculate any metric.
-Any such changes lead to inconsistent reports from multiple GitLab instances.
-If there is a problem with an existing metric, it's best to deprecate the existing metric,
-and use it, side by side, with the desired new metric.
-
-Example:
-Consider following change. Before GitLab 12.6, the `example_metric` was implemented as:
-
-```ruby
-{
- ...
- example_metric: distinct_count(Project, :creator_id)
-}
-```
-
-For GitLab 12.6, the metric was changed to filter out archived projects:
-
-```ruby
-{
- ...
- example_metric: distinct_count(Project.non_archived, :creator_id)
-}
-```
-
-In this scenario all instances running up to GitLab 12.5 continue to report `example_metric`,
-including all archived projects, while all instances running GitLab 12.6 and higher filters
-out such projects. As Usage Ping data is collected from all reporting instances, the
-resulting dataset includes mixed data, which distorts any following business analysis.
-
-The correct approach is to add a new metric for GitLab 12.6 release with updated logic:
-
-```ruby
-{
- ...
- example_metric_without_archived: distinct_count(Project.non_archived, :creator_id)
-}
-```
-
-and update existing business analysis artefacts to use `example_metric_without_archived` instead of `example_metric`
-
-### 3. Deprecate a metric
-
-If a metric is obsolete and you no longer use it, you can mark it as deprecated.
-
-For an example of the metric deprecation process take a look at this [example merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/59899)
-
-To deprecate a metric:
-
-1. Check the following YAML files and verify the metric is not used in an aggregate:
- - [`config/metrics/aggregates/*.yaml`](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/aggregates/)
- - [`ee/config/metrics/aggregates/*.yaml`](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/aggregates/)
-
-1. Create an issue in the [GitLab Data Team
- project](https://gitlab.com/gitlab-data/analytics/-/issues). Ask for
- confirmation that the metric is not used by other teams, or in any of the SiSense
- dashboards.
-
-1. Verify the metric is not used to calculate the conversational index. The
- conversational index is a measure that reports back to self-managed instances
- to inform administrators of the progress of DevOps adoption for the instance.
-
- You can check
- [`CalculateConvIndexService`](https://gitlab.com/gitlab-services/version-gitlab-com/-/blob/master/app/services/calculate_conv_index_service.rb)
- to view the metrics that are used. The metrics are represented
- as the keys that are passed as a field argument into the `get_value` method.
-
-1. Document the deprecation in the metric's YAML definition. Set
- the `status:` attribute to `deprecated`, for example:
-
- ```yaml
- ---
- key_path: analytics_unique_visits.analytics_unique_visits_for_any_target_monthly
- description: Visits to any of the pages listed above per month
- product_section: dev
- product_stage: manage
- product_group: group::analytics
- product_category:
- value_type: number
- status: deprecated
- time_frame: 28d
- data_source:
- distribution:
- - ce
- tier:
- - free
- ```
-
-1. Replace the metric's instrumentation with a fixed value. This avoids wasting
- resources to calculate the deprecated metric. In
- [`lib/gitlab/usage_data.rb`](https://gitlab.com/gitlab-org/gitlab/-/blob/master/lib/gitlab/usage_data.rb)
- or
- [`ee/lib/ee/gitlab/usage_data.rb`](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/lib/ee/gitlab/usage_data.rb),
- replace the code that calculates the metric's value with a fixed value that
- indicates it's deprecated:
-
- ```ruby
- module Gitlab
- class UsageData
- DEPRECATED_VALUE = -1000
-
- def analytics_unique_visits_data
- results['analytics_unique_visits_for_any_target'] = redis_usage_data { unique_visit_service.unique_visits_for(targets: :analytics) }
- results['analytics_unique_visits_for_any_target_monthly'] = DEPRECATED_VALUE
-
- { analytics_unique_visits: results }
- end
- # ...
- end
- end
- ```
-
-1. Update the Metrics Dictionary following [guidelines instructions](dictionary.md).
-
-### 4. Remove a metric
-
-Only deprecated metrics can be removed from Usage Ping.
-
-For an example of the metric removal process take a look at this [example issue](https://gitlab.com/gitlab-org/gitlab/-/issues/297029)
-
-To remove a deprecated metric:
-
-1. Verify that removing the metric from the Usage Ping payload does not cause
- errors in [Version App](https://gitlab.com/gitlab-services/version-gitlab-com)
- when the updated payload is collected and processed. Version App collects
- and persists all Usage Ping reports. To do that you can modify
- [fixtures](https://gitlab.com/gitlab-services/version-gitlab-com/-/blob/master/spec/support/usage_data_helpers.rb#L540)
- used to test
- [`UsageDataController#create`](https://gitlab.com/gitlab-services/version-gitlab-com/-/blob/3760ef28/spec/controllers/usage_data_controller_spec.rb#L75)
- endpoint, and assure that test suite does not fail when metric that you wish to remove is not included into test payload.
-
-1. Create an issue in the
- [GitLab Data Team project](https://gitlab.com/gitlab-data/analytics/-/issues).
- Ask for confirmation that the metric is not referred to in any SiSense dashboards and
- can be safely removed from Usage Ping. Use this
- [example issue](https://gitlab.com/gitlab-data/analytics/-/issues/7539) for guidance.
- This step can be skipped if verification done during [deprecation process](#3-deprecate-a-metric)
- reported that metric is not required by any data transformation in Snowflake data warehouse nor it is
- used by any of SiSense dashboards.
-
-1. After you verify the metric can be safely removed,
- update the attributes of the metric's YAML definition:
-
- - Set the `status:` to `removed`.
- - Set `milestone_removed:` to the number of the
- milestone in which the metric was removed.
-
- Do not remove the metric's YAML definition altogether. Some self-managed
- instances might not immediately update to the latest version of GitLab, and
- therefore continue to report the removed metric. The Product Intelligence team
- requires a record of all removed metrics in order to identify and filter them.
-
- For example please take a look at this [merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/60149/diffs#b01f429a54843feb22265100c0e4fec1b7da1240_10_10).
-
-1. After you verify the metric can be safely removed,
- remove the metric's instrumentation from
- [`lib/gitlab/usage_data.rb`](https://gitlab.com/gitlab-org/gitlab/-/blob/master/lib/gitlab/usage_data.rb)
- or
- [`ee/lib/ee/gitlab/usage_data.rb`](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/lib/ee/gitlab/usage_data.rb).
-
- For example please take a look at this [merge request](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/60149/diffs#6335dc533bd21df26db9de90a02dd66278c2390d_167_167).
-
-1. Remove any other records related to the metric:
- - The feature flag YAML file at [`config/feature_flags/*/*.yaml`](https://gitlab.com/gitlab-org/gitlab/-/tree/master/config/feature_flags).
- - The entry in the known events YAML file at [`lib/gitlab/usage_data_counters/known_events/*.yaml`](https://gitlab.com/gitlab-org/gitlab/-/tree/master/lib/gitlab/usage_data_counters/known_events).
-
-1. Update the Metrics Dictionary following [guidelines instructions](dictionary.md).
-
-## Implementing Usage Ping
-
-Usage Ping consists of two kinds of data, counters and observations. Counters track how often a certain event
-happened over time, such as how many CI pipelines have run. They are monotonic and always trend up.
-Observations are facts collected from one or more GitLab instances and can carry arbitrary data. There are no
-general guidelines around how to collect those, due to the individual nature of that data.
-
-There are several types of counters which are all found in `usage_data.rb`:
-
-- **Ordinary Batch Counters:** Simple count of a given ActiveRecord_Relation
-- **Distinct Batch Counters:** Distinct count of a given ActiveRecord_Relation in a given column
-- **Sum Batch Counters:** Sum the values of a given ActiveRecord_Relation in a given column
-- **Alternative Counters:** Used for settings and configurations
-- **Redis Counters:** Used for in-memory counts.
-
-NOTE:
-Only use the provided counter methods. Each counter method contains a built in fail safe to isolate each counter to avoid breaking the entire Usage Ping.
-
-### Why batch counting
-
-For large tables, PostgreSQL can take a long time to count rows due to MVCC [(Multi-version Concurrency Control)](https://en.wikipedia.org/wiki/Multiversion_concurrency_control). Batch counting is a counting method where a single large query is broken into multiple smaller queries. For example, instead of a single query querying 1,000,000 records, with batch counting, you can execute 100 queries of 10,000 records each. Batch counting is useful for avoiding database timeouts as each batch query is significantly shorter than one single long running query.
-
-For GitLab.com, there are extremely large tables with 15 second query timeouts, so we use batch counting to avoid encountering timeouts. Here are the sizes of some GitLab.com tables:
-
-| Table | Row counts in millions |
-|------------------------------|------------------------|
-| `merge_request_diff_commits` | 2280 |
-| `ci_build_trace_sections` | 1764 |
-| `merge_request_diff_files` | 1082 |
-| `events` | 514 |
-
-The following operation methods are available for your use:
-
-- [Ordinary Batch Counters](#ordinary-batch-counters)
-- [Distinct Batch Counters](#distinct-batch-counters)
-- [Sum Batch Operation](#sum-batch-operation)
-- [Add Operation](#add-operation)
-- [Estimated Batch Counters](#estimated-batch-counters)
-
-Batch counting requires indexes on columns to calculate max, min, and range queries. In some cases,
-you may need to add a specialized index on the columns involved in a counter.
-
-### Ordinary Batch Counters
-
-Handles `ActiveRecord::StatementInvalid` error
-
-Simple count of a given `ActiveRecord_Relation`, does a non-distinct batch count, smartly reduces `batch_size`, and handles errors.
-
-Method: `count(relation, column = nil, batch: true, start: nil, finish: nil)`
-
-Arguments:
-
-- `relation` the ActiveRecord_Relation to perform the count
-- `column` the column to perform the count on, by default is the primary key
-- `batch`: default `true` to use batch counting
-- `start`: custom start of the batch counting to avoid complex min calculations
-- `end`: custom end of the batch counting to avoid complex min calculations
-
-Examples:
-
-```ruby
-count(User.active)
-count(::Clusters::Cluster.aws_installed.enabled, :cluster_id)
-count(::Clusters::Cluster.aws_installed.enabled, :cluster_id, start: ::Clusters::Cluster.minimum(:id), finish: ::Clusters::Cluster.maximum(:id))
-```
-
-### Distinct Batch Counters
-
-Handles `ActiveRecord::StatementInvalid` error
-
-Distinct count of a given `ActiveRecord_Relation` on given column, a distinct batch count, smartly reduces `batch_size`, and handles errors.
-
-Method: `distinct_count(relation, column = nil, batch: true, batch_size: nil, start: nil, finish: nil)`
-
-Arguments:
-
-- `relation` the ActiveRecord_Relation to perform the count
-- `column` the column to perform the distinct count, by default is the primary key
-- `batch`: default `true` to use batch counting
-- `batch_size`: if none set it uses default value 10000 from `Gitlab::Database::BatchCounter`
-- `start`: custom start of the batch counting to avoid complex min calculations
-- `end`: custom end of the batch counting to avoid complex min calculations
-
-WARNING:
-Counting over non-unique columns can lead to performance issues. Take a look at the [iterating tables in batches](../iterating_tables_in_batches.md) guide for more details.
-
-Examples:
-
-```ruby
-distinct_count(::Project, :creator_id)
-distinct_count(::Note.with_suggestions.where(time_period), :author_id, start: ::User.minimum(:id), finish: ::User.maximum(:id))
-distinct_count(::Clusters::Applications::CertManager.where(time_period).available.joins(:cluster), 'clusters.user_id')
-```
-
-### Sum Batch Operation
-
-Handles `ActiveRecord::StatementInvalid` error
-
-Sum the values of a given ActiveRecord_Relation on given column and handles errors.
-
-Method: `sum(relation, column, batch_size: nil, start: nil, finish: nil)`
-
-Arguments:
-
-- `relation` the ActiveRecord_Relation to perform the operation
-- `column` the column to sum on
-- `batch_size`: if none set it uses default value 1000 from `Gitlab::Database::BatchCounter`
-- `start`: custom start of the batch counting to avoid complex min calculations
-- `end`: custom end of the batch counting to avoid complex min calculations
-
-Examples:
-
-```ruby
-sum(JiraImportState.finished, :imported_issues_count)
-```
-
-### Grouping & Batch Operations
-
-The `count`, `distinct_count`, and `sum` batch counters can accept an `ActiveRecord::Relation`
-object, which groups by a specified column. With a grouped relation, the methods do batch counting,
-handle errors, and returns a hash table of key-value pairs.
-
-Examples:
-
-```ruby
-count(Namespace.group(:type))
-# returns => {nil=>179, "Group"=>54}
-
-distinct_count(Project.group(:visibility_level), :creator_id)
-# returns => {0=>1, 10=>1, 20=>11}
-
-sum(Issue.group(:state_id), :weight))
-# returns => {1=>3542, 2=>6820}
-```
-
-### Add Operation
-
-Handles `StandardError`.
-
-Returns `-1` if any of the arguments are `-1`.
-
-Sum the values given as parameters.
-
-Method: `add(*args)`
-
-Examples
-
-```ruby
-project_imports = distinct_count(::Project.where.not(import_type: nil), :creator_id)
-bulk_imports = distinct_count(::BulkImport, :user_id)
-
- add(project_imports, bulk_imports)
-```
-
-### Estimated Batch Counters
-
-> - [Introduced](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/48233) in GitLab 13.7.
-
-Estimated batch counter functionality handles `ActiveRecord::StatementInvalid` errors
-when used through the provided `estimate_batch_distinct_count` method.
-Errors return a value of `-1`.
-
-WARNING:
-This functionality estimates a distinct count of a specific ActiveRecord_Relation in a given column,
-which uses the [HyperLogLog](http://algo.inria.fr/flajolet/Publications/FlFuGaMe07.pdf) algorithm.
-As the HyperLogLog algorithm is probabilistic, the **results always include error**.
-The highest encountered error rate is 4.9%.
-
-When correctly used, the `estimate_batch_distinct_count` method enables efficient counting over
-columns that contain non-unique values, which can not be assured by other counters.
-
-#### estimate_batch_distinct_count method
-
-Method: `estimate_batch_distinct_count(relation, column = nil, batch_size: nil, start: nil, finish: nil)`
-
-The [method](https://gitlab.com/gitlab-org/gitlab/-/blob/master/lib/gitlab/utils/usage_data.rb#L63)
-includes the following arguments:
-
-- `relation`: The ActiveRecord_Relation to perform the count.
-- `column`: The column to perform the distinct count. The default is the primary key.
-- `batch_size`: From `Gitlab::Database::PostgresHll::BatchDistinctCounter::DEFAULT_BATCH_SIZE`. Default value: 10,000.
-- `start`: The custom start of the batch count, to avoid complex minimum calculations.
-- `finish`: The custom end of the batch count to avoid complex maximum calculations.
-
-The method includes the following prerequisites:
-
-1. The supplied `relation` must include the primary key defined as the numeric column.
- For example: `id bigint NOT NULL`.
-1. The `estimate_batch_distinct_count` can handle a joined relation. To use its ability to
- count non-unique columns, the joined relation **must NOT** have a one-to-many relationship,
- such as `has_many :boards`.
-1. Both `start` and `finish` arguments should always represent primary key relationship values,
- even if the estimated count refers to another column, for example:
-
- ```ruby
- estimate_batch_distinct_count(::Note, :author_id, start: ::Note.minimum(:id), finish: ::Note.maximum(:id))
- ```
-
-Examples:
-
-1. Simple execution of estimated batch counter, with only relation provided,
- returned value represents estimated number of unique values in `id` column
- (which is the primary key) of `Project` relation:
-
- ```ruby
- estimate_batch_distinct_count(::Project)
- ```
-
-1. Execution of estimated batch counter, where provided relation has applied
- additional filter (`.where(time_period)`), number of unique values estimated
- in custom column (`:author_id`), and parameters: `start` and `finish` together
- apply boundaries that defines range of provided relation to analyze:
-
- ```ruby
- estimate_batch_distinct_count(::Note.with_suggestions.where(time_period), :author_id, start: ::Note.minimum(:id), finish: ::Note.maximum(:id))
- ```
-
-1. Execution of estimated batch counter with joined relation (`joins(:cluster)`),
- for a custom column (`'clusters.user_id'`):
-
- ```ruby
- estimate_batch_distinct_count(::Clusters::Applications::CertManager.where(time_period).available.joins(:cluster), 'clusters.user_id')
- ```
-
-When instrumenting metric with usage of estimated batch counter please add
-`_estimated` suffix to its name, for example:
-
-```ruby
- "counts": {
- "ci_builds_estimated": estimate_batch_distinct_count(Ci::Build),
- ...
-```
-
-### Redis Counters
-
-Handles `::Redis::CommandError` and `Gitlab::UsageDataCounters::BaseCounter::UnknownEvent`
-returns -1 when a block is sent or hash with all values -1 when a `counter(Gitlab::UsageDataCounters)` is sent
-different behavior due to 2 different implementations of Redis counter
-
-Method: `redis_usage_data(counter, &block)`
-
-Arguments:
-
-- `counter`: a counter from `Gitlab::UsageDataCounters`, that has `fallback_totals` method implemented
-- or a `block`: which is evaluated
-
-#### Ordinary Redis Counters
-
-Examples of implementation:
-
-- Using Redis methods [`INCR`](https://redis.io/commands/incr), [`GET`](https://redis.io/commands/get), and [`Gitlab::UsageDataCounters::WikiPageCounter`](https://gitlab.com/gitlab-org/gitlab/-/blob/master/lib/gitlab/usage_data_counters/wiki_page_counter.rb)
-- Using Redis methods [`HINCRBY`](https://redis.io/commands/hincrby), [`HGETALL`](https://redis.io/commands/hgetall), and [`Gitlab::UsageCounters::PodLogs`](https://gitlab.com/gitlab-org/gitlab/-/blob/master/lib/gitlab/usage_counters/pod_logs.rb)
-
-##### UsageData API Tracking
-
-<!-- There's nearly identical content in `##### Adding new events`. If you fix errors here, you may need to fix the same errors in the other location. -->
-
-1. Track event using `UsageData` API
-
- Increment event count using ordinary Redis counter, for given event name.
-
- Tracking events using the `UsageData` API requires the `usage_data_api` feature flag to be enabled, which is enabled by default.
-
- API requests are protected by checking for a valid CSRF token.
-
- To be able to increment the values, the related feature `usage_data_<event_name>` should be enabled.
-
- ```plaintext
- POST /usage_data/increment_counter
- ```
-
- | Attribute | Type | Required | Description |
- | :-------- | :--- | :------- | :---------- |
- | `event` | string | yes | The event name it should be tracked |
-
- Response
-
- - `200` if event was tracked
- - `400 Bad request` if event parameter is missing
- - `401 Unauthorized` if user is not authenticated
- - `403 Forbidden` for invalid CSRF token provided
-
-1. Track events using JavaScript/Vue API helper which calls the API above
-
- Note that `usage_data_api` and `usage_data_#{event_name}` should be enabled to be able to track events
-
- ```javascript
- import api from '~/api';
-
- api.trackRedisCounterEvent('my_already_defined_event_name'),
- ```
-
-#### Redis HLL Counters
-
-WARNING:
-HyperLogLog (HLL) is a probabilistic algorithm and its **results always includes some small error**. According to [Redis documentation](https://redis.io/commands/pfcount), data from
-used HLL implementation is "approximated with a standard error of 0.81%".
-
-With `Gitlab::UsageDataCounters::HLLRedisCounter` we have available data structures used to count unique values.
-
-Implemented using Redis methods [PFADD](https://redis.io/commands/pfadd) and [PFCOUNT](https://redis.io/commands/pfcount).
-
-##### Adding new events
-
-1. Define events in [`known_events`](https://gitlab.com/gitlab-org/gitlab/-/blob/master/lib/gitlab/usage_data_counters/known_events/).
-
- Example event:
-
- ```yaml
- - name: users_creating_epics
- category: epics_usage
- redis_slot: users
- aggregation: weekly
- feature_flag: track_epics_activity
- ```
-
- Keys:
-
- - `name`: unique event name.
-
- Name format for Redis HLL events `<name>_<redis_slot>`.
-
- [See Metric name](metrics_dictionary.md#metric-name) for a complete guide on metric naming suggestion.
-
- Consider including in the event's name the Redis slot to be able to count totals for a specific category.
-
- Example names: `users_creating_epics`, `users_triggering_security_scans`.
-
- - `category`: event category. Used for getting total counts for events in a category, for easier
- access to a group of events.
- - `redis_slot`: optional Redis slot. Default value: event name. Only event data that is stored in the same slot
- can be aggregated. Ensure keys are in the same slot. For example:
- `users_creating_epics` with `redis_slot: 'users'` builds Redis key
- `{users}_creating_epics-2020-34`. If `redis_slot` is not defined the Redis key will
- be `{users_creating_epics}-2020-34`.
- Recommended slots to use are: `users`, `projects`. This is the value we count.
- - `expiry`: expiry time in days. Default: 29 days for daily aggregation and 6 weeks for weekly
- aggregation.
- - `aggregation`: may be set to a `:daily` or `:weekly` key. Defines how counting data is stored in Redis.
- Aggregation on a `daily` basis does not pull more fine grained data.
- - `feature_flag`: optional `default_enabled: :yaml`. If no feature flag is set then the tracking is enabled. One feature flag can be used for multiple events. For details, see our [GitLab internal Feature flags](../feature_flags/index.md) documentation. The feature flags are owned by the group adding the event tracking.
-
-Use one of the following methods to track events:
-
-1. Track event in controller using `RedisTracking` module with `track_redis_hll_event(*controller_actions, name:, if: nil, &block)`.
-
- Arguments:
-
- - `controller_actions`: controller actions we want to track.
- - `name`: event name.
- - `if`: optional custom conditions, using the same format as with Rails callbacks.
- - `&block`: optional block that computes and returns the `custom_id` that we want to track. This will override the `visitor_id`.
-
- Example usage:
-
- ```ruby
- # controller
- class ProjectsController < Projects::ApplicationController
- include RedisTracking
-
- skip_before_action :authenticate_user!, only: :show
- track_redis_hll_event :index, :show, name: 'users_visiting_projects'
-
- def index
- render html: 'index'
- end
-
- def new
- render html: 'new'
- end
-
- def show
- render html: 'show'
- end
- end
- ```
-
-1. Track event in API using `increment_unique_values(event_name, values)` helper method.
-
- Arguments:
-
- - `event_name`: event name.
- - `values`: values counted, one value or array of values.
-
- Example usage:
-
- ```ruby
- get ':id/registry/repositories' do
- repositories = ContainerRepositoriesFinder.new(
- user: current_user, subject: user_group
- ).execute
-
- increment_unique_values('users_listing_repositories', current_user.id)
-
- present paginate(repositories), with: Entities::ContainerRegistry::Repository, tags: params[:tags], tags_count: params[:tags_count]
- end
- ```
-
-1. Track event using `track_usage_event(event_name, values)` in services and GraphQL
-
- Increment unique values count using Redis HLL, for given event name.
-
- Example:
-
- [Track usage event for incident created in service](https://gitlab.com/gitlab-org/gitlab/-/blob/v13.8.3-ee/app/services/issues/update_service.rb#L66)
-
- [Track usage event for incident created in GraphQL](https://gitlab.com/gitlab-org/gitlab/-/blob/v13.8.3-ee/app/graphql/mutations/alert_management/update_alert_status.rb#L16)
-
- ```ruby
- track_usage_event(:incident_management_incident_created, current_user.id)
- ```
-
-<!-- There's nearly identical content in `##### UsageData API Tracking`. If you find / fix errors here, you may need to fix errors in that section too. -->
-
-1. Track event using `UsageData` API
-
- Increment unique users count using Redis HLL, for given event name.
-
- Tracking events using the `UsageData` API requires the `usage_data_api` feature flag to be enabled, which is enabled by default.
-
- API requests are protected by checking for a valid CSRF token.
-
- ```plaintext
- POST /usage_data/increment_unique_users
- ```
-
- | Attribute | Type | Required | Description |
- | :-------- | :--- | :------- | :---------- |
- | `event` | string | yes | The event name it should be tracked |
-
- Response
-
- Return 200 if tracking failed for any reason.
-
- - `200` if event was tracked or any errors
- - `400 Bad request` if event parameter is missing
- - `401 Unauthorized` if user is not authenticated
- - `403 Forbidden` for invalid CSRF token provided
-
-1. Track events using JavaScript/Vue API helper which calls the API above
-
- Example usage for an existing event already defined in [known events](https://gitlab.com/gitlab-org/gitlab/-/blob/master/lib/gitlab/usage_data_counters/known_events/):
-
- Usage Data API is behind `usage_data_api` feature flag which, as of GitLab 13.7, is
- now set to `default_enabled: true`.
-
- ```javascript
- import api from '~/api';
-
- api.trackRedisHllUserEvent('my_already_defined_event_name'),
- ```
-
-1. Get event data using `Gitlab::UsageDataCounters::HLLRedisCounter.unique_events(event_names:, start_date:, end_date:, context: '')`.
-
- Arguments:
-
- - `event_names`: the list of event names.
- - `start_date`: start date of the period for which we want to get event data.
- - `end_date`: end date of the period for which we want to get event data.
- - `context`: context of the event. Allowed values are `default`, `free`, `bronze`, `silver`, `gold`, `starter`, `premium`, `ultimate`.
-
-1. Testing tracking and getting unique events
-
-Trigger events in rails console by using `track_event` method
-
- ```ruby
- Gitlab::UsageDataCounters::HLLRedisCounter.track_event('users_viewing_compliance_audit_events', values: 1)
- Gitlab::UsageDataCounters::HLLRedisCounter.track_event('users_viewing_compliance_audit_events', values: [2, 3])
- ```
-
-Next, get the unique events for the current week.
-
- ```ruby
- # Get unique events for metric for current_week
- Gitlab::UsageDataCounters::HLLRedisCounter.unique_events(event_names: 'users_viewing_compliance_audit_events',
- start_date: Date.current.beginning_of_week, end_date: Date.current.next_week)
- ```
-
-##### Recommendations
-
-We have the following recommendations for [Adding new events](#adding-new-events):
-
-- Event aggregation: weekly.
-- Key expiry time:
- - Daily: 29 days.
- - Weekly: 42 days.
-- When adding new metrics, use a [feature flag](../../operations/feature_flags.md) to control the impact.
-- For feature flags triggered by another service, set `default_enabled: false`,
- - Events can be triggered using the `UsageData` API, which helps when there are > 10 events per change
-
-##### Enable/Disable Redis HLL tracking
-
-Events are tracked behind optional [feature flags](../feature_flags/index.md) due to concerns for Redis performance and scalability.
-
-For a full list of events and corresponding feature flags see, [known_events](https://gitlab.com/gitlab-org/gitlab/-/blob/master/lib/gitlab/usage_data_counters/known_events/) files.
-
-To enable or disable tracking for specific event in <https://gitlab.com> or <https://about.staging.gitlab.com>, run commands such as the following to
-[enable or disable the corresponding feature](../feature_flags/index.md).
-
-```shell
-/chatops run feature set <feature_name> true
-/chatops run feature set <feature_name> false
-```
-
-We can also disable tracking completely by using the global flag:
-
-```shell
-/chatops run feature set redis_hll_tracking true
-/chatops run feature set redis_hll_tracking false
-```
-
-##### Known events are added automatically in usage data payload
-
-All events added in [`known_events/common.yml`](https://gitlab.com/gitlab-org/gitlab/-/blob/master/lib/gitlab/usage_data_counters/known_events/common.yml) are automatically added to usage data generation under the `redis_hll_counters` key. This column is stored in [version-app as a JSON](https://gitlab.com/gitlab-services/version-gitlab-com/-/blob/master/db/schema.rb#L209).
-For each event we add metrics for the weekly and monthly time frames, and totals for each where applicable:
-
-- `#{event_name}_weekly`: Data for 7 days for daily [aggregation](#adding-new-events) events and data for the last complete week for weekly [aggregation](#adding-new-events) events.
-- `#{event_name}_monthly`: Data for 28 days for daily [aggregation](#adding-new-events) events and data for the last 4 complete weeks for weekly [aggregation](#adding-new-events) events.
-
-Redis HLL implementation calculates automatic total metrics, if there are more than one metric for the same category, aggregation, and Redis slot.
-
-- `#{category}_total_unique_counts_weekly`: Total unique counts for events in the same category for the last 7 days or the last complete week, if events are in the same Redis slot and we have more than one metric.
-- `#{category}_total_unique_counts_monthly`: Total unique counts for events in same category for the last 28 days or the last 4 complete weeks, if events are in the same Redis slot and we have more than one metric.
-
-Example of `redis_hll_counters` data:
-
-```ruby
-{:redis_hll_counters=>
- {"compliance"=>
- {"users_viewing_compliance_dashboard_weekly"=>0,
- "users_viewing_compliance_dashboard_monthly"=>0,
- "users_viewing_compliance_audit_events_weekly"=>0,
- "users_viewing_audit_events_monthly"=>0,
- "compliance_total_unique_counts_weekly"=>0,
- "compliance_total_unique_counts_monthly"=>0},
- "analytics"=>
- {"users_viewing_analytics_group_devops_adoption_weekly"=>0,
- "users_viewing_analytics_group_devops_adoption_monthly"=>0,
- "analytics_total_unique_counts_weekly"=>0,
- "analytics_total_unique_counts_monthly"=>0},
- "ide_edit"=>
- {"users_editing_by_web_ide_weekly"=>0,
- "users_editing_by_web_ide_monthly"=>0,
- "users_editing_by_sfe_weekly"=>0,
- "users_editing_by_sfe_monthly"=>0,
- "ide_edit_total_unique_counts_weekly"=>0,
- "ide_edit_total_unique_counts_monthly"=>0}
- }
-```
-
-Example usage:
-
-```ruby
-# Redis Counters
-redis_usage_data(Gitlab::UsageDataCounters::WikiPageCounter)
-redis_usage_data { ::Gitlab::UsageCounters::PodLogs.usage_totals[:total] }
-
-# Define events in common.yml https://gitlab.com/gitlab-org/gitlab/-/blob/master/lib/gitlab/usage_data_counters/known_events/common.yml
-
-# Tracking events
-Gitlab::UsageDataCounters::HLLRedisCounter.track_event('users_expanding_vulnerabilities', values: visitor_id)
-
-# Get unique events for metric
-redis_usage_data { Gitlab::UsageDataCounters::HLLRedisCounter.unique_events(event_names: 'users_expanding_vulnerabilities', start_date: 28.days.ago, end_date: Date.current) }
-```
-
-### Alternative Counters
-
-Handles `StandardError` and fallbacks into -1 this way not all measures fail if we encounter one exception.
-Mainly used for settings and configurations.
-
-Method: `alt_usage_data(value = nil, fallback: -1, &block)`
-
-Arguments:
-
-- `value`: a simple static value in which case the value is simply returned.
-- or a `block`: which is evaluated
-- `fallback: -1`: the common value used for any metrics that are failing.
-
-Usage:
-
-```ruby
-alt_usage_data { Gitlab::VERSION }
-alt_usage_data { Gitlab::CurrentSettings.uuid }
-alt_usage_data(999)
-```
-
-### Adding counters to build new metrics
-
-When adding the results of two counters, use the `add` usage data method that
-handles fallback values and exceptions. It also generates a valid [SQL export](#exporting-usage-ping-sql-queries-and-definitions).
-
-Example usage:
-
-```ruby
-add(User.active, User.bot)
-```
-
-### Prometheus Queries
-
-In those cases where operational metrics should be part of Usage Ping, a database or Redis query is unlikely
-to provide useful data. Instead, Prometheus might be more appropriate, because most GitLab architectural
-components publish metrics to it that can be queried back, aggregated, and included as usage data.
-
-NOTE:
-Prometheus as a data source for Usage Ping is currently only available for single-node Omnibus installations
-that are running the [bundled Prometheus](../../administration/monitoring/prometheus/index.md) instance.
-
-To query Prometheus for metrics, a helper method is available to `yield` a fully configured
-`PrometheusClient`, given it is available as per the note above:
-
-```ruby
-with_prometheus_client do |client|
- response = client.query('<your query>')
- ...
-end
-```
-
-Please refer to [the `PrometheusClient` definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/lib/gitlab/prometheus_client.rb)
-for how to use its API to query for data.
-
-### Fallback values for UsagePing
-
-We return fallback values in these cases:
-
-| Case | Value |
-|-----------------------------|-------|
-| Deprecated Metric | -1000 |
-| Timeouts, general failures | -1 |
-| Standard errors in counters | -2 |
-
-## Developing and testing Usage Ping
-
-### 1. Naming and placing the metrics
-
-Add the metric in one of the top level keys
-
-- `settings`: for settings related metrics.
-- `counts_weekly`: for counters that have data for the most recent 7 days.
-- `counts_monthly`: for counters that have data for the most recent 28 days.
-- `counts`: for counters that have data for all time.
-
-### 2. Use your Rails console to manually test counters
-
-```ruby
-# count
-Gitlab::UsageData.count(User.active)
-Gitlab::UsageData.count(::Clusters::Cluster.aws_installed.enabled, :cluster_id)
-
-# count distinct
-Gitlab::UsageData.distinct_count(::Project, :creator_id)
-Gitlab::UsageData.distinct_count(::Note.with_suggestions.where(time_period), :author_id, start: ::User.minimum(:id), finish: ::User.maximum(:id))
-```
-
-### 3. Generate the SQL query
-
-Your Rails console returns the generated SQL queries.
-
-Example:
-
-```ruby
-pry(main)> Gitlab::UsageData.count(User.active)
- (2.6ms) SELECT "features"."key" FROM "features"
- (15.3ms) SELECT MIN("users"."id") FROM "users" WHERE ("users"."state" IN ('active')) AND ("users"."user_type" IS NULL OR "users"."user_type" IN (6, 4))
- (2.4ms) SELECT MAX("users"."id") FROM "users" WHERE ("users"."state" IN ('active')) AND ("users"."user_type" IS NULL OR "users"."user_type" IN (6, 4))
- (1.9ms) SELECT COUNT("users"."id") FROM "users" WHERE ("users"."state" IN ('active')) AND ("users"."user_type" IS NULL OR "users"."user_type" IN (6, 4)) AND "users"."id" BETWEEN 1 AND 100000
-```
-
-### 4. Optimize queries with #database-lab
-
-Paste the SQL query into `#database-lab` to see how the query performs at scale.
-
-- `#database-lab` is a Slack channel which uses a production-sized environment to test your queries.
-- GitLab.com's production database has a 15 second timeout.
-- Any single query must stay below [1 second execution time](../query_performance.md#timing-guidelines-for-queries) with cold caches.
-- Add a specialized index on columns involved to reduce the execution time.
-
-To have an understanding of the query's execution we add in the MR description the following information:
-
-- For counters that have a `time_period` test we add information for both cases:
- - `time_period = {}` for all time periods
- - `time_period = { created_at: 28.days.ago..Time.current }` for last 28 days period
-- Execution plan and query time before and after optimization
-- Query generated for the index and time
-- Migration output for up and down execution
-
-We also use `#database-lab` and [explain.depesz.com](https://explain.depesz.com/). For more details, see the [database review guide](../database_review.md#preparation-when-adding-or-modifying-queries).
-
-#### Optimization recommendations and examples
-
-- Use specialized indexes [example 1](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/26871), [example 2](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/26445).
-- Use defined `start` and `finish`, and simple queries. These values can be memoized and reused, [example](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/37155).
-- Avoid joins and write the queries as simply as possible, [example](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/36316).
-- Set a custom `batch_size` for `distinct_count`, [example](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/38000).
-
-### 5. Add the metric definition
-
-[Check Metrics Dictionary Guide](metrics_dictionary.md)
-
-When adding, updating, or removing metrics, please update the [Metrics Dictionary](dictionary.md).
-
-### 6. Add new metric to Versions Application
-
-Check if new metrics need to be added to the Versions Application. See `usage_data` [schema](https://gitlab.com/gitlab-services/version-gitlab-com/-/blob/master/db/schema.rb#L147) and usage data [parameters accepted](https://gitlab.com/gitlab-services/version-gitlab-com/-/blob/master/app/services/usage_ping.rb). Any metrics added under the `counts` key are saved in the `stats` column.
-
-### 7. Add the feature label
-
-Add the `feature` label to the Merge Request for new Usage Ping metrics. These are user-facing changes and are part of expanding the Usage Ping feature.
-
-### 8. Add a changelog
-
-Ensure you comply with the [Changelog entries guide](../changelog.md).
-
-### 9. Ask for a Product Intelligence Review
-
-On GitLab.com, we have DangerBot setup to monitor Product Intelligence related files and DangerBot recommends a [Product Intelligence review](product_intelligence_review.md). Mention `@gitlab-org/growth/product_intelligence/engineers` in your MR for a review.
-
-### 10. Verify your metric
-
-On GitLab.com, the Product Intelligence team regularly [monitors Usage Ping](https://gitlab.com/groups/gitlab-org/-/epics/6000).
-They may alert you that your metrics need further optimization to run quicker and with greater success.
-
-The Usage Ping JSON payload for GitLab.com is shared in the
-[#g_product_intelligence](https://gitlab.slack.com/archives/CL3A7GFPF) Slack channel every week.
-
-You may also use the [Usage Ping QA dashboard](https://app.periscopedata.com/app/gitlab/632033/Usage-Ping-QA) to check how well your metric performs. The dashboard allows filtering by GitLab version, by "Self-managed" & "SaaS" and shows you how many failures have occurred for each metric. Whenever you notice a high failure rate, you may re-optimize your metric.
-
-### Usage Ping local setup
-
-To set up Usage Ping locally, you must:
-
-1. [Set up local repositories](#set-up-local-repositories).
-1. [Test local setup](#test-local-setup).
-1. (Optional) [Test Prometheus-based usage ping](#test-prometheus-based-usage-ping).
-
-#### Set up local repositories
-
-1. Clone and start [GitLab](https://gitlab.com/gitlab-org/gitlab-development-kit).
-1. Clone and start [Versions Application](https://gitlab.com/gitlab-services/version-gitlab-com).
- Make sure to run `docker-compose up` to start a PostgreSQL and Redis instance.
-1. Point GitLab to the Versions Application endpoint instead of the default endpoint:
- 1. Open [submit_usage_ping_service.rb](https://gitlab.com/gitlab-org/gitlab/-/blob/master/app/services/submit_usage_ping_service.rb#L4) in your local and modified `PRODUCTION_URL`.
- 1. Set it to the local Versions Application URL `http://localhost:3000/usage_data`.
-
-#### Test local setup
-
-1. Using the `gitlab` Rails console, manually trigger a usage ping:
-
- ```ruby
- SubmitUsagePingService.new.execute
- ```
-
-1. Use the `versions` Rails console to check the usage ping was successfully received,
- parsed, and stored in the Versions database:
-
- ```ruby
- UsageData.last
- ```
-
-### Test Prometheus-based usage ping
-
-If the data submitted includes metrics [queried from Prometheus](#prometheus-queries)
-you want to inspect and verify, you must:
-
-- Ensure that a Prometheus server is running locally.
-- Ensure the respective GitLab components are exporting metrics to the Prometheus server.
-
-If you do not need to test data coming from Prometheus, no further action
-is necessary. Usage Ping should degrade gracefully in the absence of a running Prometheus server.
-
-Three kinds of components may export data to Prometheus, and are included in Usage Ping:
-
-- [`node_exporter`](https://github.com/prometheus/node_exporter): Exports node metrics
- from the host machine.
-- [`gitlab-exporter`](https://gitlab.com/gitlab-org/gitlab-exporter): Exports process metrics
- from various GitLab components.
-- Other various GitLab services, such as Sidekiq and the Rails server, which export their own metrics.
-
-#### Test with an Omnibus container
-
-This is the recommended approach to test Prometheus based Usage Ping.
-
-The easiest way to verify your changes is to build a new Omnibus image from your code branch by using CI, then download the image
-and run a local container instance:
-
-1. From your merge request, click on the `qa` stage, then trigger the `package-and-qa` job. This job triggers an Omnibus
-build in a [downstream pipeline of the `omnibus-gitlab-mirror` project](https://gitlab.com/gitlab-org/build/omnibus-gitlab-mirror/-/pipelines).
-1. In the downstream pipeline, wait for the `gitlab-docker` job to finish.
-1. Open the job logs and locate the full container name including the version. It takes the following form: `registry.gitlab.com/gitlab-org/build/omnibus-gitlab-mirror/gitlab-ee:<VERSION>`.
-1. On your local machine, make sure you are signed in to the GitLab Docker registry. You can find the instructions for this in
-[Authenticate to the GitLab Container Registry](../../user/packages/container_registry/index.md#authenticate-with-the-container-registry).
-1. Once signed in, download the new image by using `docker pull registry.gitlab.com/gitlab-org/build/omnibus-gitlab-mirror/gitlab-ee:<VERSION>`
-1. For more information about working with and running Omnibus GitLab containers in Docker, please refer to [GitLab Docker images](https://docs.gitlab.com/omnibus/docker/README.html) in the Omnibus documentation.
-
-#### Test with GitLab development toolkits
-
-This is the less recommended approach, because it comes with a number of difficulties when emulating a real GitLab deployment.
-
-The [GDK](https://gitlab.com/gitlab-org/gitlab-development-kit) is not set up to run a Prometheus server or `node_exporter` alongside other GitLab components. If you would
-like to do so, [Monitoring the GDK with Prometheus](https://gitlab.com/gitlab-org/gitlab-development-kit/-/blob/main/doc/howto/prometheus/index.md#monitoring-the-gdk-with-prometheus) is a good start.
-
-The [GCK](https://gitlab.com/gitlab-org/gitlab-compose-kit) has limited support for testing Prometheus based Usage Ping.
-By default, it already comes with a fully configured Prometheus service that is set up to scrape a number of components,
-but with the following limitations:
-
-- It does not run a `gitlab-exporter` instance, so several `process_*` metrics from services such as Gitaly may be missing.
-- While it runs a `node_exporter`, `docker-compose` services emulate hosts, meaning that it would normally report itself to not be associated
-with any of the other services that are running. That is not how node metrics are reported in a production setup, where `node_exporter`
-always runs as a process alongside other GitLab components on any given node. From Usage Ping's perspective none of the node data would therefore
-appear to be associated to any of the services running, because they all appear to be running on different hosts. To alleviate this problem, the `node_exporter` in GCK was arbitrarily "assigned" to the `web` service, meaning only for this service `node_*` metrics appears in Usage Ping.
-
-## Aggregated metrics
-
-> - [Introduced](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/45979) in GitLab 13.6.
-
-WARNING:
-This feature is intended solely for internal GitLab use.
-
-To add data for aggregated metrics into Usage Ping payload you should add corresponding definition at [`config/metrics/aggregates/*.yaml`](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/aggregates/) for metrics available at Community Edition and at [`ee/config/metrics/aggregates/*.yaml`](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/config/metrics/aggregates/) for Enterprise Edition ones.
-
-Each aggregate definition includes following parts:
-
-- `name`: Unique name under which the aggregate metric is added to the Usage Ping payload.
-- `operator`: Operator that defines how the aggregated metric data is counted. Available operators are:
- - `OR`: Removes duplicates and counts all entries that triggered any of listed events.
- - `AND`: Removes duplicates and counts all elements that were observed triggering all of following events.
-- `time_frame`: One or more valid time frames. Use these to limit the data included in aggregated metric to events within a specific date-range. Valid time frames are:
- - `7d`: Last seven days of data.
- - `28d`: Last twenty eight days of data.
- - `all`: All historical data, only available for `database` sourced aggregated metrics.
-- `source`: Data source used to collect all events data included in aggregated metric. Valid data sources are:
- - [`database`](#database-sourced-aggregated-metrics)
- - [`redis`](#redis-sourced-aggregated-metrics)
-- `events`: list of events names to aggregate into metric. All events in this list must
- relay on the same data source. Additional data source requirements are described in the
- [Database sourced aggregated metrics](#database-sourced-aggregated-metrics) and
- [Redis sourced aggregated metrics](#redis-sourced-aggregated-metrics) sections.
-- `feature_flag`: Name of [development feature flag](../feature_flags/index.md#development-type)
- that is checked before metrics aggregation is performed. Corresponding feature flag
- should have `default_enabled` attribute set to `false`. The `feature_flag` attribute
- is optional and can be omitted. When `feature_flag` is missing, no feature flag is checked.
-
-Example aggregated metric entries:
-
-```yaml
-- name: example_metrics_union
- operator: OR
- events:
- - 'users_expanding_secure_security_report'
- - 'users_expanding_testing_code_quality_report'
- - 'users_expanding_testing_accessibility_report'
- source: redis
- time_frame:
- - 7d
- - 28d
-- name: example_metrics_intersection
- operator: AND
- source: database
- time_frame:
- - 28d
- - all
- events:
- - 'dependency_scanning_pipeline_all_time'
- - 'container_scanning_pipeline_all_time'
- feature_flag: example_aggregated_metric
-```
-
-Aggregated metrics collected in `7d` and `28d` time frames are added into Usage Ping payload under the `aggregated_metrics` sub-key in the `counts_weekly` and `counts_monthly` top level keys.
-
-```ruby
-{
- :counts_monthly => {
- :deployments => 1003,
- :successful_deployments => 78,
- :failed_deployments => 275,
- :packages => 155,
- :personal_snippets => 2106,
- :project_snippets => 407,
- :promoted_issues => 719,
- :aggregated_metrics => {
- :example_metrics_union => 7,
- :example_metrics_intersection => 2
- },
- :snippets => 2513
- }
-}
-```
-
-Aggregated metrics for `all` time frame are present in the `count` top level key, with the `aggregate_` prefix added to their name.
-
-For example:
-
-`example_metrics_intersection`
-
-Becomes:
-
-`counts.aggregate_example_metrics_intersection`
-
-```ruby
-{
- :counts => {
- :deployments => 11003,
- :successful_deployments => 178,
- :failed_deployments => 1275,
- :aggregate_example_metrics_intersection => 12
- }
-}
-```
-
-### Redis sourced aggregated metrics
-
-> - [Introduced](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/45979) in GitLab 13.6.
-
-To declare the aggregate of events collected with [Redis HLL Counters](#redis-hll-counters),
-you must fulfill the following requirements:
-
-1. All events listed at `events` attribute must come from
- [`known_events/*.yml`](#known-events-are-added-automatically-in-usage-data-payload) files.
-1. All events listed at `events` attribute must have the same `redis_slot` attribute.
-1. All events listed at `events` attribute must have the same `aggregation` attribute.
-1. `time_frame` does not include `all` value, which is unavailable for Redis sourced aggregated metrics.
-
-### Database sourced aggregated metrics
-
-> - [Introduced](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/52784) in GitLab 13.9.
-> - It's [deployed behind a feature flag](../../user/feature_flags.md), disabled by default.
-> - It's enabled on GitLab.com.
-
-To declare an aggregate of metrics based on events collected from database, follow
-these steps:
-
-1. [Persist the metrics for aggregation](#persist-metrics-for-aggregation).
-1. [Add new aggregated metric definition](#add-new-aggregated-metric-definition).
-
-#### Persist metrics for aggregation
-
-Only metrics calculated with [Estimated Batch Counters](#estimated-batch-counters)
-can be persisted for database sourced aggregated metrics. To persist a metric,
-inject a Ruby block into the
-[estimate_batch_distinct_count](#estimate_batch_distinct_count-method) method.
-This block should invoke the
-`Gitlab::Usage::Metrics::Aggregates::Sources::PostgresHll.save_aggregated_metrics`
-[method](https://gitlab.com/gitlab-org/gitlab/-/blob/master/lib/gitlab/usage/metrics/aggregates/sources/postgres_hll.rb#L21),
-which stores `estimate_batch_distinct_count` results for future use in aggregated metrics.
-
-The `Gitlab::Usage::Metrics::Aggregates::Sources::PostgresHll.save_aggregated_metrics`
-method accepts the following arguments:
-
-- `metric_name`: The name of metric to use for aggregations. Should be the same
- as the key under which the metric is added into Usage Ping.
-- `recorded_at_timestamp`: The timestamp representing the moment when a given
- Usage Ping payload was collected. You should use the convenience method `recorded_at`
- to fill `recorded_at_timestamp` argument, like this: `recorded_at_timestamp: recorded_at`
-- `time_period`: The time period used to build the `relation` argument passed into
- `estimate_batch_distinct_count`. To collect the metric with all available historical
- data, set a `nil` value as time period: `time_period: nil`.
-- `data`: HyperLogLog buckets structure representing unique entries in `relation`.
- The `estimate_batch_distinct_count` method always passes the correct argument
- into the block, so `data` argument must always have a value equal to block argument,
- like this: `data: result`
-
-Example metrics persistence:
-
-```ruby
-class UsageData
- def count_secure_pipelines(time_period)
- ...
- relation = ::Security::Scan.latest_successful_by_build.by_scan_types(scan_type).where(security_scans: time_period)
-
- pipelines_with_secure_jobs['dependency_scanning_pipeline'] = estimate_batch_distinct_count(relation, :commit_id, batch_size: 1000, start: start_id, finish: finish_id) do |result|
- ::Gitlab::Usage::Metrics::Aggregates::Sources::PostgresHll
- .save_aggregated_metrics(metric_name: 'dependency_scanning_pipeline', recorded_at_timestamp: recorded_at, time_period: time_period, data: result)
- end
- end
-end
-```
-
-#### Add new aggregated metric definition
-
-After all metrics are persisted, you can add an aggregated metric definition at
-[`aggregated_metrics/`](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/aggregates/).
-
-To declare the aggregate of metrics collected with [Estimated Batch Counters](#estimated-batch-counters),
-you must fulfill the following requirements:
-
-- Metrics names listed in the `events:` attribute, have to use the same names you passed in the `metric_name` argument while persisting metrics in previous step.
-- Every metric listed in the `events:` attribute, has to be persisted for **every** selected `time_frame:` value.
-
-Example definition:
-
-```yaml
-- name: example_metrics_intersection_database_sourced
- operator: AND
- source: database
- events:
- - 'dependency_scanning_pipeline'
- - 'container_scanning_pipeline'
- time_frame:
- - 28d
- - all
-```
-
-## Example Usage Ping payload
-
-The following is example content of the Usage Ping payload.
-
-```json
-{
- "uuid": "0000000-0000-0000-0000-000000000000",
- "hostname": "example.com",
- "version": "12.10.0-pre",
- "installation_type": "omnibus-gitlab",
- "active_user_count": 999,
- "recorded_at": "2020-04-17T07:43:54.162+00:00",
- "edition": "EEU",
- "license_md5": "00000000000000000000000000000000",
- "license_id": null,
- "historical_max_users": 999,
- "licensee": {
- "Name": "ABC, Inc.",
- "Email": "email@example.com",
- "Company": "ABC, Inc."
- },
- "license_user_count": 999,
- "license_starts_at": "2020-01-01",
- "license_expires_at": "2021-01-01",
- "license_plan": "ultimate",
- "license_add_ons": {
- },
- "license_trial": false,
- "counts": {
- "assignee_lists": 999,
- "boards": 999,
- "ci_builds": 999,
- ...
- },
- "container_registry_enabled": true,
- "dependency_proxy_enabled": false,
- "gitlab_shared_runners_enabled": true,
- "gravatar_enabled": true,
- "influxdb_metrics_enabled": true,
- "ldap_enabled": false,
- "mattermost_enabled": false,
- "omniauth_enabled": true,
- "prometheus_enabled": false,
- "prometheus_metrics_enabled": false,
- "reply_by_email_enabled": "incoming+%{key}@incoming.gitlab.com",
- "signup_enabled": true,
- "web_ide_clientside_preview_enabled": true,
- "projects_with_expiration_policy_disabled": 999,
- "projects_with_expiration_policy_enabled": 999,
- ...
- "elasticsearch_enabled": true,
- "license_trial_ends_on": null,
- "geo_enabled": false,
- "git": {
- "version": {
- "major": 2,
- "minor": 26,
- "patch": 1
- }
- },
- "gitaly": {
- "version": "12.10.0-rc1-93-g40980d40",
- "servers": 56,
- "clusters": 14,
- "filesystems": [
- "EXT_2_3_4"
- ]
- },
- "gitlab_pages": {
- "enabled": true,
- "version": "1.17.0"
- },
- "container_registry_server": {
- "vendor": "gitlab",
- "version": "2.9.1-gitlab"
- },
- "database": {
- "adapter": "postgresql",
- "version": "9.6.15",
- "pg_system_id": 6842684531675334351
- },
- "analytics_unique_visits": {
- "g_analytics_contribution": 999,
- ...
- },
- "usage_activity_by_stage": {
- "configure": {
- "project_clusters_enabled": 999,
- ...
- },
- "create": {
- "merge_requests": 999,
- ...
- },
- "manage": {
- "events": 999,
- ...
- },
- "monitor": {
- "clusters": 999,
- ...
- },
- "package": {
- "projects_with_packages": 999
- },
- "plan": {
- "issues": 999,
- ...
- },
- "release": {
- "deployments": 999,
- ...
- },
- "secure": {
- "user_container_scanning_jobs": 999,
- ...
- },
- "verify": {
- "ci_builds": 999,
- ...
- }
- },
- "usage_activity_by_stage_monthly": {
- "configure": {
- "project_clusters_enabled": 999,
- ...
- },
- "create": {
- "merge_requests": 999,
- ...
- },
- "manage": {
- "events": 999,
- ...
- },
- "monitor": {
- "clusters": 999,
- ...
- },
- "package": {
- "projects_with_packages": 999
- },
- "plan": {
- "issues": 999,
- ...
- },
- "release": {
- "deployments": 999,
- ...
- },
- "secure": {
- "user_container_scanning_jobs": 999,
- ...
- },
- "verify": {
- "ci_builds": 999,
- ...
- }
- },
- "topology": {
- "duration_s": 0.013836685999194742,
- "application_requests_per_hour": 4224,
- "query_apdex_weekly_average": 0.996,
- "failures": [],
- "nodes": [
- {
- "node_memory_total_bytes": 33269903360,
- "node_memory_utilization": 0.35,
- "node_cpus": 16,
- "node_cpu_utilization": 0.2,
- "node_uname_info": {
- "machine": "x86_64",
- "sysname": "Linux",
- "release": "4.19.76-linuxkit"
- },
- "node_services": [
- {
- "name": "web",
- "process_count": 16,
- "process_memory_pss": 233349888,
- "process_memory_rss": 788220927,
- "process_memory_uss": 195295487,
- "server": "puma"
- },
- {
- "name": "sidekiq",
- "process_count": 1,
- "process_memory_pss": 734080000,
- "process_memory_rss": 750051328,
- "process_memory_uss": 731533312
- },
- ...
- ],
- ...
- },
- ...
- ]
- }
-}
-```
-
-## Notable changes
-
-In GitLab 13.5, `pg_system_id` was added to send the [PostgreSQL system identifier](https://www.2ndquadrant.com/en/blog/support-for-postgresqls-system-identifier-in-barman/).
-
-## Exporting Usage Ping SQL queries and definitions
-
-Two Rake tasks exist to export Usage Ping definitions.
-
-- The Rake tasks export the raw SQL queries for `count`, `distinct_count`, `sum`.
-- The Rake tasks export the Redis counter class or the line of the Redis block for `redis_usage_data`.
-- The Rake tasks calculate the `alt_usage_data` metrics.
-
-In the home directory of your local GitLab installation run the following Rake tasks for the YAML and JSON versions respectively:
-
-```shell
-# for YAML export
-bin/rake gitlab:usage_data:dump_sql_in_yaml
-
-# for JSON export
-bin/rake gitlab:usage_data:dump_sql_in_json
-
-# You may pipe the output into a file
-bin/rake gitlab:usage_data:dump_sql_in_yaml > ~/Desktop/usage-metrics-2020-09-02.yaml
-```
-
-## Generating and troubleshooting usage ping
-
-This activity is to be done via a detached screen session on a remote server.
-
-Before you begin these steps, make sure the key is added to the SSH agent locally
-with the `ssh-add` command.
-
-### Triggering
-
-1. Connect to bastion with agent forwarding: `$ ssh -A lb-bastion.gprd.gitlab.com`
-1. Create named screen: `$ screen -S <username>_usage_ping_<date>`
-1. Connect to console host: `$ ssh $USER-rails@console-01-sv-gprd.c.gitlab-production.internal`
-1. Run `SubmitUsagePingService.new.execute`
-1. Detach from screen: `ctrl + a, ctrl + d`
-1. Exit from bastion: `$ exit`
-
-### Verification (After approx 30 hours)
-
-1. Reconnect to bastion: `$ ssh -A lb-bastion.gprd.gitlab.com`
-1. Find your screen session: `$ screen -ls`
-1. Attach to your screen session: `$ screen -x 14226.mwawrzyniak_usage_ping_2021_01_22`
-1. Check the last payload in `raw_usage_data` table: `RawUsageData.last.payload`
-1. Check the when the payload was sent: `RawUsageData.last.sent_at`
+<!-- This redirect file can be deleted after <2021-10-09>. -->
+<!-- Before deletion, see: https://docs.gitlab.com/ee/development/documentation/#move-or-rename-a-page -->
diff --git a/doc/development/usage_ping/metrics_dictionary.md b/doc/development/usage_ping/metrics_dictionary.md
index 6b5fed4bcca..3743c2e0414 100644
--- a/doc/development/usage_ping/metrics_dictionary.md
+++ b/doc/development/usage_ping/metrics_dictionary.md
@@ -1,237 +1,9 @@
---
-stage: Growth
-group: Product Intelligence
-info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://about.gitlab.com/handbook/engineering/ux/technical-writing/#assignments
+redirect_to: '../service_ping/metrics_dictionary.md'
+remove_date: '2021-10-09'
---
-# Metrics Dictionary Guide
+This file was moved to [another location](../service_ping/metrics_dictionary.md).
-This guide describes Metrics Dictionary and how it's implemented
-
-## Metrics Definition and validation
-
-We are using [JSON Schema](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/schema.json) to validate the metrics definition.
-
-This process is meant to ensure consistent and valid metrics defined for Usage Ping. All metrics *must*:
-
-- Comply with the defined [JSON schema](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/schema.json).
-- Have a unique `key_path` .
-- Have an owner.
-
-All metrics are stored in YAML files:
-
-- [`config/metrics`](https://gitlab.com/gitlab-org/gitlab/-/tree/master/config/metrics)
-
-Each metric is defined in a separate YAML file consisting of a number of fields:
-
-| Field | Required | Additional information |
-|---------------------|----------|----------------------------------------------------------------|
-| `key_path` | yes | JSON key path for the metric, location in Usage Ping payload. |
-| `name` | no | Metric name suggestion. Can replace the last part of `key_path`. |
-| `description` | yes | |
-| `product_section` | yes | The [section](https://gitlab.com/gitlab-com/www-gitlab-com/-/blob/master/data/sections.yml). |
-| `product_stage` | no | The [stage](https://gitlab.com/gitlab-com/www-gitlab-com/blob/master/data/stages.yml) for the metric. |
-| `product_group` | yes | The [group](https://gitlab.com/gitlab-com/www-gitlab-com/blob/master/data/stages.yml) that owns the metric. |
-| `product_category` | no | The [product category](https://gitlab.com/gitlab-com/www-gitlab-com/blob/master/data/categories.yml) for the metric. |
-| `value_type` | yes | `string`; one of [`string`, `number`, `boolean`, `object`](https://json-schema.org/understanding-json-schema/reference/type.html). |
-| `status` | yes | `string`; [status](#metric-statuses) of the metric, may be set to `data_available`, `implemented`, `not_used`, `deprecated`, `removed`, `broken`. |
-| `time_frame` | yes | `string`; may be set to a value like `7d`, `28d`, `all`, `none`. |
-| `data_source` | yes | `string`; may be set to a value like `database`, `redis`, `redis_hll`, `prometheus`, `system`. |
-| `data_category` | yes | `string`; [categories](#data-category) of the metric, may be set to `Operational`, `Optional`, `Subscription`, `Standard`. |
-| `instrumentation_class` | no | `string`; [the class that implements the metric](metrics_instrumentation.md). |
-| `distribution` | yes | `array`; may be set to one of `ce, ee` or `ee`. The [distribution](https://about.gitlab.com/handbook/marketing/strategic-marketing/tiers/#definitions) where the tracked feature is available. |
-| `tier` | yes | `array`; may be set to one of `free, premium, ultimate`, `premium, ultimate` or `ultimate`. The [tier]( https://about.gitlab.com/handbook/marketing/strategic-marketing/tiers/) where the tracked feature is available. |
-| `milestone` | no | The milestone when the metric is introduced. |
-| `milestone_removed` | no | The milestone when the metric is removed. |
-| `introduced_by_url` | no | The URL to the Merge Request that introduced the metric. |
-| `repair_issue_url` | no | The URL of the issue that was created to repair a metric with a `broken` status. |
-| `options` | no | `object`: options information needed to calculate the metric value. |
-| `skip_validation` | no | This should **not** be set. [Used for imported metrics until we review, update and make them valid](https://gitlab.com/groups/gitlab-org/-/epics/5425). |
-
-### Metric statuses
-
-Metric definitions can have one of the following statuses:
-
-- `data_available`: Metric data is available and used in a Sisense dashboard.
-- `implemented`: Metric is implemented but data is not yet available. This is a temporary
- status for newly added metrics awaiting inclusion in a new release.
-- `broken`: Metric reports broken data (for example, -1 fallback), or does not report data at all. A metric marked as `broken` must also have the `repair_issue_url` attribute.
-- `not_used`: Metric is not used in any dashboard.
-- `deprecated`: Metric is deprecated and possibly planned to be removed.
-- `removed`: Metric was removed, but it may appear in Usage Ping payloads sent from instances running on older versions of GitLab.
-
-### Metric value_type
-
-Metric definitions can have one of the following values for `value_type`:
-
-- `boolean`
-- `number`
-- `string`
-- `object`: A metric with `value_type: object` must have `value_json_schema` with a link to the JSON schema for the object.
-In general, we avoid complex objects and prefer one of the `boolean`, `number`, or `string` value types.
-An example of a metric that uses `value_type: object` is `topology` (`/config/metrics/settings/20210323120839_topology.yml`),
-which has a related schema in `/config/metrics/objects_schemas/topology_schema.json`.
-
-### Metric time_frame
-
-- `7d`: The metric data applies to the most recent 7-day interval. For example, the following metric counts the number of users that create epics over a 7-day interval: `ee/config/metrics/counts_7d/20210305145820_g_product_planning_epic_created_weekly.yml`.
-- `28d`: The metric data applies to the most recent 28-day interval. For example, the following metric counts the number of unique users that create issues over a 28-day interval: `config/metrics/counts_28d/20210216181139_issues.yml`.
-- `all`: The metric data applies for the whole time the metric has been active (all-time interval). For example, the following metric counts all users that create issues: `/config/metrics/counts_all/20210216181115_issues.yml`.
-- `none`: The metric collects a type of data that's not tracked over time, such as settings and configuration information. Therefore, a time interval is not applicable. For example, `uuid` has no time interval applicable: `config/metrics/license/20210201124933_uuid.yml`.
-
-### Metric name
-
-To improve metric discoverability by a wider audience, each metric with
-instrumentation added at an appointed `key_path` receives a `name` attribute
-filled with the name suggestion, corresponding to the metric `data_source` and instrumentation.
-Metric name suggestions can contain two types of elements:
-
-1. **User input prompts**: Enclosed by `<>`, these pieces should be replaced or
- removed when you create a metrics YAML file.
-1. **Fixed suggestion**: Plaintext parts generated according to well-defined algorithms.
- They are based on underlying instrumentation, and should not be changed.
-
-For a metric name to be valid, it must not include any prompt, and no fixed suggestions
-should be changed.
-
-### Data category
-
-We use the following categories to classify a metric:
-
-- `Operational`: Required data for operational purposes.
-- `Optional`: Data that is optional to collect. This can be [enabled or disabled](../usage_ping/index.md#disable-usage-ping) in the Admin Area.
-- `Subscription`: Data related to licensing.
-- `Standard`: Standard set of identifiers that are included when collecting data.
-
-### Metric name suggestion examples
-
-#### Metric with `data_source: database`
-
-For a metric instrumented with SQL:
-
-```sql
-SELECT COUNT(DISTINCT user_id) FROM clusters WHERE clusters.management_project_id IS NOT NULL
-```
-
-- **Suggested name**: `count_distinct_user_id_from_<adjective describing: '(clusters.management_project_id IS NOT NULL)'>_clusters`
-- **Prompt**: `<adjective describing: '(clusters.management_project_id IS NOT NULL)'>`
- should be replaced with an adjective that best represents filter conditions, such as `project_management`
-- **Final metric name**: For example, `count_distinct_user_id_from_project_management_clusters`
-
-For metric instrumented with SQL:
-
-```sql
-SELECT COUNT(DISTINCT clusters.user_id)
-FROM clusters_applications_helm
-INNER JOIN clusters ON clusters.id = clusters_applications_helm.cluster_id
-WHERE clusters_applications_helm.status IN (3, 5)
-```
-
-- **Suggested name**: `count_distinct_user_id_from_<adjective describing: '(clusters_applications_helm.status IN (3, 5))'>_clusters_<with>_<adjective describing: '(clusters_applications_helm.status IN (3, 5))'>_clusters_applications_helm`
-- **Prompt**: `<adjective describing: '(clusters_applications_helm.status IN (3, 5))'>`
- should be replaced with an adjective that best represents filter conditions
-- **Final metric name**: `count_distinct_user_id_from_clusters_with_available_clusters_applications_helm`
-
-In the previous example, the prompt is irrelevant, and user can remove it. The second
-occurrence corresponds with the `available` scope defined in `Clusters::Concerns::ApplicationStatus`.
-It can be used as the right adjective to replace prompt.
-
-The `<with>` represents a suggested conjunction for the suggested name of the joined relation.
-The person documenting the metric can use it by either:
-
-- Removing the surrounding `<>`.
-- Using a different conjunction, such as `having` or `including`.
-
-#### Metric with `data_source: redis` or `redis_hll`
-
-For metrics instrumented with a Redis-based counter, the suggested name includes
-only the single prompt to be replaced by the person working with metrics YAML.
-
-- **Prompt**: `<please fill metric name, suggested format is: {subject}_{verb}{ing|ed}_{object} eg: users_creating_epics or merge_requests_viewed_in_single_file_mode>`
-- **Final metric name**: We suggest the metric name should follow the format of
- `{subject}_{verb}{ing|ed}_{object}`, such as `user_creating_epics`, `users_triggering_security_scans`,
- or `merge_requests_viewed_in_single_file_mode`
-
-#### Metric with `data_source: prometheus` or `system`
-
-For metrics instrumented with Prometheus or coming from the operating system,
-the suggested name includes only the single prompt by person working with metrics YAML.
-
-- **Prompt**: `<please fill metric name>`
-- **Final metric name**: Due to the variety of cases that can apply to this kind of metric,
- no naming convention exists. Each person instrumenting a metric should use their
- best judgment to come up with a descriptive name.
-
-### Example YAML metric definition
-
-The linked [`uuid`](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/license/uuid.yml)
-YAML file includes an example metric definition, where the `uuid` metric is the GitLab
-instance unique identifier.
-
-```yaml
-key_path: uuid
-description: GitLab instance unique identifier
-product_category: collection
-product_section: growth
-product_stage: growth
-product_group: group::product intelligence
-value_type: string
-status: data_available
-milestone: 9.1
-introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/1521
-time_frame: none
-data_source: database
-distribution:
-- ce
-- ee
-tier:
-- free
-- premium
-- ultimate
-```
-
-## Create a new metric definition
-
-The GitLab codebase provides a dedicated [generator](https://gitlab.com/gitlab-org/gitlab/-/blob/master/lib/generators/gitlab/usage_metric_definition_generator.rb) to create new metric definitions.
-
-For uniqueness, the generated file includes a timestamp prefix, in ISO 8601 format.
-
-The generator takes the key path argument and 2 options and creates the metric YAML definition in corresponding location:
-
-- `--ee`, `--no-ee` Indicates if metric is for EE.
-- `--dir=DIR` indicates the metric directory. It must be one of: `counts_7d`, `7d`, `counts_28d`, `28d`, `counts_all`, `all`, `settings`, `license`.
-
-```shell
-bundle exec rails generate gitlab:usage_metric_definition counts.issues --dir=7d
-create config/metrics/counts_7d/issues.yml
-```
-
-NOTE:
-To create a metric definition used in EE, add the `--ee` flag.
-
-```shell
-bundle exec rails generate gitlab:usage_metric_definition counts.issues --ee --dir=7d
-create ee/config/metrics/counts_7d/issues.yml
-```
-
-## Metrics added dynamic to Usage Ping payload
-
-The [Redis HLL metrics](index.md#known-events-are-added-automatically-in-usage-data-payload) are added automatically to Usage Ping payload.
-
-A YAML metric definition is required for each metric. A dedicated generator is provided to create metric definitions for Redis HLL events.
-
-The generator takes `category` and `event` arguments, as the root key will be `redis_hll_counters`, and creates two metric definitions for weekly and monthly timeframes:
-
-```shell
-bundle exec rails generate gitlab:usage_metric_definition:redis_hll issues i_closed
-create config/metrics/counts_7d/i_closed_weekly.yml
-create config/metrics/counts_28d/i_closed_monthly.yml
-```
-
-To create a metric definition used in EE, add the `--ee` flag.
-
-```shell
-bundle exec rails generate gitlab:usage_metric_definition:redis_hll issues users_closing_issues --ee
-create config/metrics/counts_7d/i_closed_weekly.yml
-create config/metrics/counts_28d/i_closed_monthly.yml
-```
+<!-- This redirect file can be deleted after <2021-10-09>. -->
+<!-- Before deletion, see: https://docs.gitlab.com/ee/development/documentation/#move-or-rename-a-page -->
diff --git a/doc/development/usage_ping/metrics_instrumentation.md b/doc/development/usage_ping/metrics_instrumentation.md
index ff0dbf99a09..f2d731803b8 100644
--- a/doc/development/usage_ping/metrics_instrumentation.md
+++ b/doc/development/usage_ping/metrics_instrumentation.md
@@ -1,102 +1,9 @@
---
-stage: Growth
-group: Product Intelligence
-info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://about.gitlab.com/handbook/engineering/ux/technical-writing/#assignments
+redirect_to: '../service_ping/metrics_instrumentation.md'
+remove_date: '2021-10-09'
---
-# Metrics instrumentation guide
+This file was moved to [another location](../service_ping/metrics_instrumentation.md).
-This guide describes how to develop Usage Ping metrics using metrics instrumentation.
-
-## Nomenclature
-
-- **Instrumentation class**:
- - Inherits one of the metric classes: `DatabaseMetric`, `RedisHLLMetric` or `GenericMetric`.
- - Implements the logic that calculates the value for a Usage Ping metric.
-
-- **Metric definition**
- The Usage Data metric YAML definition.
-
-- **Hardening**:
- Hardening a method is the process that ensures the method fails safe, returning a fallback value like -1.
-
-## How it works
-
-A metric definition has the [`instrumentation_class`](metrics_dictionary.md) field, which can be set to a class.
-
-The defined instrumentation class should have one of the existing metric classes: `DatabaseMetric`, `RedisHLLMetric`, or `GenericMetric`.
-
-Using the instrumentation classes ensures that metrics can fail safe individually, without breaking the entire
- process of Usage Ping generation.
-
-We have built a domain-specific language (DSL) to define the metrics instrumentation.
-
-## Database metrics
-
-[Example of a merge request that adds a database metric](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/60022).
-
-```ruby
-module Gitlab
- module Usage
- module Metrics
- module Instrumentations
- class CountBoardsMetric < DatabaseMetric
- operation :count
-
- relation { Board }
- end
- end
- end
- end
-end
-```
-
-## Redis HyperLogLog metrics
-
-[Example of a merge request that adds a `RedisHLL` metric](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/61685).
-
-Count unique values for `i_quickactions_approve` event.
-
-```yaml
-time_frame: 28d
-data_source: redis_hll
-instrumentation_class: 'Gitlab::Usage::Metrics::Instrumentations::RedisHLLMetric'
-options:
- events:
- - i_quickactions_approve
-```
-
-## Generic metrics
-
-[Example of a merge request that adds a generic metric](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/60256).
-
-```ruby
-module Gitlab
- module Usage
- module Metrics
- module Instrumentations
- class UuidMetric < GenericMetric
- value do
- Gitlab::CurrentSettings.uuid
- end
- end
- end
- end
- end
-end
-```
-
-## Creating a new metric instrumentation class
-
-To create a stub instrumentation for a Usage Ping metric, you can use a dedicated [generator](https://gitlab.com/gitlab-org/gitlab/-/blob/master/lib/generators/gitlab/usage_metric_generator.rb):
-
-The generator takes the class name as an argument and the following options:
-
-- `--type=TYPE` Required. Indicates the metric type. It must be one of: `database`, `generic`, `redis_hll`.
-- `--ee` Indicates if the metric is for EE.
-
-```shell
-rails generate gitlab:usage_metric CountIssues --type database
- create lib/gitlab/usage/metrics/instrumentations/count_issues_metric.rb
- create spec/lib/gitlab/usage/metrics/instrumentations/count_issues_metric_spec.rb
-```
+<!-- This redirect file can be deleted after <2021-10-09>. -->
+<!-- Before deletion, see: https://docs.gitlab.com/ee/development/documentation/#move-or-rename-a-page -->
diff --git a/doc/development/usage_ping/product_intelligence_review.md b/doc/development/usage_ping/product_intelligence_review.md
index 0e86a116bca..dc51e3e300a 100644
--- a/doc/development/usage_ping/product_intelligence_review.md
+++ b/doc/development/usage_ping/product_intelligence_review.md
@@ -1,91 +1,9 @@
---
-stage: Growth
-group: Product Intelligence
-info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://about.gitlab.com/handbook/engineering/ux/technical-writing/#assignments
+redirect_to: '../service_ping/review_guidelines.md'
+remove_date: '2021-10-09'
---
-# Product Intelligence review guidelines
+This file was moved to [another location](../service_ping/review_guidelines.md).
-This page includes introductory material for a
-[Product Intelligence](https://about.gitlab.com/handbook/engineering/development/growth/product-intelligence/)
-review, and is specific to Product Intelligence reviews. For broader advice and
-general best practices for code reviews, refer to our [code review guide](../code_review.md).
-
-## Resources for Product Intelligence reviewers
-
-- [Usage Ping Guide](index.md)
-- [Snowplow Guide](../snowplow/index.md)
-- [Metrics Dictionary](metrics_dictionary.md)
-
-## Review process
-
-We recommend a Product Intelligence review when an application update touches
-Product Intelligence files.
-
-- Changes that touch `usage_data*` files.
-- Changes to the Metrics Dictionary including files in:
- - [`config/metrics`](https://gitlab.com/gitlab-org/gitlab/-/tree/master/config/metrics).
- - [`ee/config/metrics`](https://gitlab.com/gitlab-org/gitlab/-/tree/master/ee/config/metrics).
- - [`dictionary.md`](https://gitlab.com/gitlab-org/gitlab/-/blob/master/doc/development/usage_ping/dictionary.md).
- - [`schema.json`](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/metrics/schema.json).
-- Changes to `tracking` files.
-- Changes to Product Intelligence tooling. For example,
- [`Gitlab::UsageMetricDefinitionGenerator`](https://gitlab.com/gitlab-org/gitlab/-/blob/master/lib/generators/gitlab/usage_metric_definition_generator.rb)
-
-### Roles and process
-
-#### The merge request **author** should
-
-- Decide whether a Product Intelligence review is needed.
-- If a Product Intelligence review is needed, add the labels
- `~product intelligence` and `~product intelligence::review pending`.
-- Assign an
- [engineer](https://gitlab.com/groups/gitlab-org/growth/product-intelligence/engineers/-/group_members?with_inherited_permissions=exclude) from the Product Intelligence team for a review.
-- Set the correct attributes in YAML metrics:
- - `product_section`, `product_stage`, `product_group`, `product_category`
- - Provide a clear description of the metric.
-- Update the
- [Metrics Dictionary](https://gitlab.com/gitlab-org/gitlab/-/blob/master/doc/development/usage_ping/dictionary.md) if it is needed.
-- Add a changelog [according to guidelines](../changelog.md).
-
-##### When adding or modifying Snowplow events
-
-- For frontend events, when relevant, add a screenshot of the event in
- the [testing tool](../snowplow/index.md#developing-and-testing-snowplow) used.
-- For backend events, when relevant, add the output of the Snowplow Micro
- good events `GET http://localhost:9090/micro/good` (it might be a good idea
- to reset with `GET http://localhost:9090/micro/reset` first).
-
-#### The Product Intelligence **reviewer** should
-
-- Perform a first-pass review on the merge request and suggest improvements to the author.
-- Approve the MR, and relabel the MR with `~"product intelligence::approved"`.
-
-## Review workload distribution
-
-[Danger bot](../dangerbot.md) adds the list of Product Intelligence changed files
-and pings the
-[`@gitlab-org/growth/product-intelligence/engineers`](https://gitlab.com/groups/gitlab-org/growth/product-intelligence/engineers/-/group_members?with_inherited_permissions=exclude) group for merge requests
-that are not drafts.
-
-Any of the Product Intelligence engineers can be assigned for the Product Intelligence review.
-
-### How to review for Product Intelligence
-
-- Check the [metrics location](index.md#1-naming-and-placing-the-metrics) in
- the Usage Ping JSON payload.
-- Add `~database` label and ask for [database review](../database_review.md) for
- metrics that are based on Database.
-- For tracking using Redis HLL (HyperLogLog):
- - Check the Redis slot.
- - Check if a [feature flag is needed](index.md#recommendations).
-- For tracking with Snowplow:
- - Check that the [event taxonomy](../snowplow/index.md#structured-event-taxonomy) is correct.
- - Check the [usage recommendations](../snowplow/index.md#usage-recommendations).
-- Metrics YAML definitions:
- - Check the metric `description`.
- - Check the metrics `key_path`.
- - Check the `product_section`, `product_stage`, `product_group`, `product_category`.
- Read the [stages file](https://gitlab.com/gitlab-com/www-gitlab-com/blob/master/data/stages.yml).
- - Check the file location. Consider the time frame, and if the file should be under `ee`.
- - Check the tiers.
+<!-- This redirect file can be deleted after <2021-10-09>. -->
+<!-- Before deletion, see: https://docs.gitlab.com/ee/development/documentation/#move-or-rename-a-page -->
diff --git a/doc/development/usage_ping/review_guidelines.md b/doc/development/usage_ping/review_guidelines.md
new file mode 100644
index 00000000000..dc51e3e300a
--- /dev/null
+++ b/doc/development/usage_ping/review_guidelines.md
@@ -0,0 +1,9 @@
+---
+redirect_to: '../service_ping/review_guidelines.md'
+remove_date: '2021-10-09'
+---
+
+This file was moved to [another location](../service_ping/review_guidelines.md).
+
+<!-- This redirect file can be deleted after <2021-10-09>. -->
+<!-- Before deletion, see: https://docs.gitlab.com/ee/development/documentation/#move-or-rename-a-page -->