doc/administration/settings/usage_statistics.md
{{< details >}}
{{< /details >}}
GitLab Inc. periodically collects information about your instance in order to perform various actions.
For free GitLab Self-Managed instances, all usage statistics are opt-out.
Service Ping is a process that collects and sends a weekly payload to GitLab Inc. When Service Ping is enabled, GitLab gathers data from other instances and enables certain instance-level analytics features that are dependent on Service Ping.
The main purpose of Service Ping is to build a better GitLab. We collect data about how GitLab is used to understand feature or stage adoption and usage. This data gives an insight into how GitLab adds value and helps our team understand the reasons why people use GitLab, and with this knowledge we're able to make better product decisions.
There are several other benefits to enabling Service Ping:
GitLab provides three settings related to Service Ping:
These three settings interact in the following ways:
In GitLab versions 14.1 and later, GitLab Free customers with a GitLab Self-Managed instance running GitLab Enterprise Edition can receive paid features by enabling registration features and sending us activity data through Service Ping. Features introduced here do not remove the feature from its paid tier. Instances on a paid tier are subject to the Product Usage Data policy managed by Cloud Licensing.
In the following table, you can see:
If enabled, version check informs you if a new version is available and the
importance of it through a status. The status displays on the help pages (/help)
for all authenticated users, and on the Admin area pages. The statuses are:
Prerequisites:
The following example shows a basic request/response flow between your instance and the GitLab Version Application:
%%{init: { "fontFamily": "GitLab Sans" }}%%
sequenceDiagram
accTitle: Version check process
accDescr: The GitLab instance queries the version application for updates and receives a status response as an image file.
participant GitLab instance
participant Version application
GitLab instance->>Version application: Is there a version update?
Version application->>GitLab instance: Response (PNG/SVG)
To send usage statistics to GitLab Inc., you must allow network traffic from your
GitLab instance to the host version.gitlab.com on port 443.
If your GitLab instance is behind a proxy, set the appropriate proxy configuration variables.
[!note] Whether you can disable Service Ping completely depends on the instance's tier and the specific license. Service Ping settings only control whether the data is being shared with GitLab, or limited to only internal use by the instance. Even if you disable Service Ping, the
gitlab_service_ping_workerbackground job still periodically generates a Service Ping payload for your instance. The payload is available in the Metrics and profiling admin section.
Prerequisites:
To enable or disable Service Ping:
To disable Service Ping and prevent it from being configured in the future through the Admin area.
{{< tabs >}}
{{< tab title="Linux package (Omnibus)" >}}
Edit /etc/gitlab/gitlab.rb:
gitlab_rails['usage_ping_enabled'] = false
Reconfigure GitLab:
sudo gitlab-ctl reconfigure
{{< /tab >}}
{{< tab title="Self-compiled (source)" >}}
Edit /home/git/gitlab/config/gitlab.yml:
production: &base
# ...
gitlab:
# ...
usage_ping_enabled: false
Restart GitLab:
sudo service gitlab restart
{{< /tab >}}
{{< /tabs >}}
Service Ping Generation controls whether Service Ping data is automatically generated on your instance. When enabled, GitLab periodically generates Service Ping payloads containing usage statistics. This setting works independently of whether the data is shared with GitLab.
Prerequisites:
To enable or disable Service Ping Generation:
To control Service Ping Generation through configuration:
{{< tabs >}}
{{< tab title="Linux package (Omnibus)" >}}
Edit /etc/gitlab/gitlab.rb:
gitlab_rails['usage_ping_enabled'] = false
gitlab_rails['usage_ping_generation_enabled'] = false
Reconfigure GitLab:
sudo gitlab-ctl reconfigure
{{< /tab >}}
{{< tab title="Self-compiled (source)" >}}
Edit /home/git/gitlab/config/gitlab.yml:
production: &base
# ...
gitlab:
# ...
usage_ping_enabled: false
usage_ping_generation_enabled: false
Restart GitLab:
sudo service gitlab restart
{{< /tab >}}
{{< /tabs >}}
GitLab differentiates between operational and optional collected data.
[!note] The Include optional data in Service Ping option is available only if either Enable Service Ping or Enable Service Ping Generation is enabled. If both settings are disabled, this option is disabled automatically.
Prerequisites:
To enable or disable optional data in Service Ping:
{{< tabs >}}
{{< tab title="Linux package (Omnibus)" >}}
Edit /etc/gitlab/gitlab.rb:
gitlab_rails['include_optional_metrics_in_service_ping'] = false
Reconfigure GitLab:
sudo gitlab-ctl reconfigure
{{< /tab >}}
{{< tab title="Self-compiled (source)" >}}
Edit /home/git/gitlab/config/gitlab.yml:
production: &base
# ...
gitlab:
# ...
include_optional_metrics_in_service_ping: false
Restart GitLab:
sudo service gitlab restart
{{< /tab >}}
{{< /tabs >}}
You can access the exact JSON payload sent to GitLab Inc. in the Admin area or through the API.
See service ping API documentation.
You can upload the Service Ping payload to GitLab even if your instance doesn't have internet access, or if the Service Ping cron job is not enabled.
To upload the payload manually:
The uploaded file is encrypted and sent using secure HTTPS protocol. HTTPS creates a secure communication channel between web browser and the server, and protects transmitted data against man-in-the-middle attacks.
If there are problems with the manual upload:
@gitlab-org/analytics-section/analytics-instrumentation who will triage the issue.