使用Pingガイド

  • GitLab Enterprise Edition 8.10で導入されました。
  • GitLab Enterprise Edition 8.12では、より多くの統計情報が追加されました。
  • 9.1でGitLab Coreに移動しました。
  • GitLab Ultimate 11.2ではより多くの統計情報が追加されました。

このガイドでは、Usage Pingの目的と実装方法について説明します。

テレメトリーについては、こちらを参照:

その他の便利なリンク

Usage Pingとは何ですか?

  • GitLabは毎週、GitLab Inc.に利用状況データを含むペイロードを送信します。 利用状況Pingは、製品、サポート、営業チームに役立つハイレベルなデータを提供します。 プロジェクト名、ユーザー名、その他の特定のデータは送信しません。 利用状況Pingの情報は匿名ではなく、インスタンスのホスト名にリンクされています。 利用状況Pingの送信は任意で、どのインスタンスでもアナリティクスを無効にすることができます。
  • 使用状況データは、主にインスタンスのデータベース内のさまざまなテーブルの行数で構成されています。 これらのカウントを月ごと(あるいは週ごと)に比較することで、インスタンスが製品内のさまざまな機能をどのように使用しているかを大まかに把握することができます。 カウントに加えて、GitLab インストールを分類して理解するのに役立つその他の事実も収集されます。
  • GitLab にとって利用状況の ping は重要です。この ping を使ってステージ月間アクティブユーザー数(SMAU) を計算し、ステージや機能の成功を測定しています。
  • usage pingを有効にすると、GitLabは他のインスタンスからデータを収集し、インスタンスの使用統計をユーザーに表示できるようになります。

なぜUsage Pingを有効にする必要があるのでしょうか?

  • Usage Pingの主な目的は、より良いGitLabを構築することです。 GitLabの使われ方に関するデータを収集することで、機能/ステージの採用と利用状況をより良く理解することができます。これにより、GitLabがどのように価値を高めているかを理解し、私たちのチームが人々がGitLabを使う理由をより良く理解することができ、この知識によって私たちはより良い製品決定を行うことができます。
  • 使用状況pingをアクティブにする利点として、GitLabではGitLabインストールのユーザーのアクティビティを時系列で分析することができます。
  • 使用状況のpingをアクティブにするメリットとして、GitLabはDevOpsスコアを提供し、プランニングからモニタリングまで、インスタンス全体のConcurrent DevOpsの採用状況を概観できます。
  • より良い、より積極的なサポートを得ることができます。
  • GitLabへの投資から最大限の価値を引き出すためのインサイトとアドバイスを得ることができます。 あなたの組織で多くの機能や価値が採用されていないことを知りたくないですか?
  • DevOpsプロセスを改善するための具体的なアドバイスや推奨事項とともに、他の類似組織(匿名化)との比較を示すレポートを入手できます。
  • Usage Pingはデフォルトで有効になっています。 無効にするには、Disable Usage Pingを参照してください。

制限事項

  • Usage Pingは、ページビュー、リンククリック、ユーザーセッションのようなフロントエンドのイベントを追跡せず、バックエンドの集約されたイベントのみに焦点を当てます。
  • このような制限があるため、GitLab.comでより詳細なアナリティクスを行うにはSnowplowでインストゥルメントを作成することをお勧めします。また、セルフマネージドではUsage Pingを使ってバックエンドの集約イベントをトラッキングすることをお勧めします。

使用法 Ping ペイロード

GitLab Inc.に送信された正確なJSONペイロードは、管理パネルで確認できます。 ペイロードを確認するには、以下の手順に従います:

  1. 管理エリア > 設定 > メトリクスとプロファイリングに移動します。
  2. 使用統計セクションを展開します。
  3. ペイロードのプレビューボタンをクリックします。

ペイロードの例については、使用例 Ping ペイロードを参照してください。

使用状況Pingの無効化

GitLab UIでUsage Pingを無効にするには、管理パネルのSettingsページでUsage Pingチェックボックスのチェックを外してください。

Usage Ping を無効にし、今後管理パネルから設定できないようにするには、Omnibus のインストー ルでgitlab.rbを次のように設定します:

gitlab_rails['usage_ping_enabled'] = false

ソース・インストールでは、gitlab.ymlで以下を設定できます:

production: &base
  # ...
  gitlab:
    # ...
    usage_ping_enabled: false

使用法 Pingリクエストフロー

次の例は、GitLabインスタンス、Versionsアプリケーション、ライセンスアプリケーション、Salesforce、GitLabのS3バケット、GitLabのSnowflakeデータウェアハウス、Sisense間の基本的なリクエスト/レスポンスのフローを示しています:

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 Score (Conversational Development Index)

使用状況Pingの仕組み

  1. Usage PingcronジョブはSidekiqで毎週実行されるように設定されています。
  2. cronジョブが実行されると、GitLab::UsageData.to_json
  3. GitLab::UsageData.to_json は他の400以上のカウンターメソッド呼び出しにカスケードダウンします。
  4. すべてのメソッド呼び出しのレスポンスは、GitLab::UsageData.to_jsonの単一のJSONペイロードにマージれます。
  5. その後、JSONペイロードがVersionsアプリケーションにポストされます。

使用状況Pingの実装

Usage Pingは、カウンターとオブザベーションの2種類のデータで構成されています。 カウンターは、CIパイプラインが何回実行されたかなど、あるイベントがどれくらいの頻度で発生したかを追跡します。 単調で、常に上昇傾向にあります。 オブザベーションは、1つまたは複数のGitLabインスタンスから収集されたファクトで、任意のデータを持つことができます。 データの個別性のため、収集方法に関する一般的なガイドラインはありません。

usage_data.rb、4種類のカウンターがあります:

  • 通常のバッチカウンタ:与えられたActiveRecord_Relationの単純なカウント
  • Distinctバッチカウンタ:指定されたカラムの指定されたActiveRecord_RelationのDistinctカウント
  • 代替カウンタ:設定や構成に使用します。
  • RedisCounters:メモリ内のカウントに使用されます。 このメソッドはデータの不正確さのため非推奨となり、永続的なメソッドに置き換えられる予定です。
注意:提供されたカウンタメソッドのみを使用してください。 各カウンタメソッドには、Usage Ping全体が壊れないように各カウンタを分離するためのフェールセーフが組み込まれています。

なぜバッチカウントなのか

大きなテーブルの場合、PostgreSQLはMVCC(Multi-version Concurrency Control)のために行のカウントに時間がかかることがあります。 バッチカウントは、1つの大きなクエリを複数の小さなクエリに分割してカウントする方法です。 例えば、1つのクエリで1,000,000レコードのクエリを実行する代わりに、バッチカウントを使用すると、10,000レコードずつのクエリを100回実行することができます。 バッチカウントは、1つのバッチクエリが1つの長い実行クエリよりも大幅に短いため、データベースのタイムアウトを回避するのに便利です。

GitLab.comでは、15秒のクエリタイムアウトがある非常に大きなテーブルがあるので、タイムアウトに遭遇しないようにバッチカウントを使っています。 以下はGitLab.comのいくつかのテーブルのサイズです:

テーブル 行数(単位:百万
merge_request_diff_commits 2280
ci_build_trace_sections 1764
merge_request_diff_files 1082
events 514

バッチカウンティングには、Ordinary Batch CountersDistinct Batch Countersの2つの方法があります。 バッチカウンティングでは、最大、最小、範囲のクエリを計算するために、カラムにインデックスが必要です。 場合によっては、カウンタに関係するカラムに特殊なインデックスを追加する必要があります。

通常のバッチカウンター

ActiveRecord::StatementInvalid エラーを処理します。

指定された ActiveRecord_Relation の単純なカウント。

方法:count(relation, column = nil, batch: true, start: nil, finish: nil)

議論:

  • relation カウントを実行する ActiveRecord_Relation
  • column デフォルトはプライマリキーです。
  • batch: バッチカウントを使用するためのデフォルトtrue
  • start複雑な分単位の計算を避けるために、バッチカウントをカスタムで開始します。
  • end複雑な分単位の計算を避けるために、バッチ終了時のカウントをカスタマイズできます。

例:

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))

識別バッチカウンター

ActiveRecord::StatementInvalid エラーを処理します。

指定されたカラムの、指定された ActiveRecord_Relation の識別カウント。

方法:distinct_count(relation, column = nil, batch: true, start: nil, finish: nil)

議論:

  • relation カウントを実行する ActiveRecord_Relation
  • column デフォルトはプライマリキーです。
  • batch: バッチカウントを使用するためのデフォルトtrue
  • start複雑な分単位の計算を避けるために、バッチカウントをカスタムで開始します。
  • end複雑な分単位の計算を避けるために、バッチ終了時のカウントをカスタマイズできます。

例:

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')

Redisカウンタ

::Redis::CommandErrorGitlab::UsageDataCounters::BaseCounter::UnknownEventを処理 ブロックが送信されたときに -1 を返すか、counter(Gitlab::UsageDataCounters) が送信されたときにすべての値を持つハッシュ -1 を返す Redis カウンタの実装が 2 つ異なるため、動作が異なります。

方法:redis_usage_data(counter, &block)

議論:

  • counterfallback_totals メソッドを実装した からのカウンタ。Gitlab::UsageDataCounters
  • またはblock: で評価されます。

使用例:

redis_usage_data(Gitlab::UsageDataCounters::WikiPageCounter)
redis_usage_data { ::Gitlab::UsageCounters::PodLogs.usage_totals[:total] }

Redisカウンタは非推奨になりつつあるので、代わりにSnowplowイベントを使うようにしてください。 私たちはセルフマネージドイベントトラッキングを構築中で、これが利用可能になれば、すべてのRedisカウンタをSnowplowイベントに変換します。

代替カウンター

StandardError と -1 へのフォールバックを処理します。これにより、1 つの例外が発生しても、すべてのメジャーが失敗することはありません。 主に設定と構成に使用されます。

方法:alt_usage_data(value = nil, fallback: -1, &block)

議論:

  • valueこの場合、値は単に返されます。
  • またはblock: で評価されます。
  • fallback: -1失敗しているメトリクスに使用される共通値。

使用例:

alt_usage_data { Gitlab::VERSION }
alt_usage_data { Gitlab::CurrentSettings.uuid }
alt_usage_data(999)

クエリ

運用メトリクスを Usage Ping の一部とする場合、データベースや Redis を使ったクエリでは有用なデータは得られないでしょう。 その代わりに、Prometheus を使うのが適切かもしれません。GitLab のアーキテクチャコンポーネントのほとんどが Prometheus にメトリクスを公開しており、それをクエリバックして集計し、使用状況データとして含めることができるからです。

注意:PrometheusをデータソースとしたUsage Pingは、現在、PrometheusインスタンスがバンドルされているシングルノードのOmnibusインストールでのみ利用可能です。

yield Prometheus にメトリクスをクエリするために、ヘルパー・メソッドが用意されています。このメソッドは、PrometheusClientが完全に設定されていることを前提としています:

with_prometheus_client do |client|
  response = client.query('<your query>')
  ...
end

APIを使用してデータをクエリする方法については、PrometheusClient 定義を参照してください。

Usage Pingの開発とテスト

1. Railsコンソールを使って手動でカウンタをテストします。

# 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))

2. SQLクエリの生成

Railsコンソールが生成されたSQLクエリを返します。

使用例:

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

3. クエリの最適化 #データベースラボ

SQLクエリを#database-lab に貼り付けて、クエリがスケール時にどのように実行されるかを確認します。

  • #database-lab はSlackのチャンネルで、本番サイズの環境を使ってクエリをテストします。
  • GitLab.comの本番データベースには15秒のタイムアウトがあります。
  • コールドキャッシュを使用する場合、単一のクエリの実行時間は1秒以下でなければなりません。
  • 実行時間を短縮するために、関係するカラムに特化したインデックスを追加します。

クエリの実行を理解するために、MRの説明に以下の情報を追加します:

  • time_period テストがあるカウンターについては、両方のケースの情報を追加します:
    • time_period = {} 全期間
    • time_period = { created_at: 28.days.ago..Time.current } 直近28日間
  • 最適化前後の実行プランとクエリ時間
  • インデックスと時刻に対して生成されたクエリ
  • 上下実行のマイグレーション出力

また、#database-labexplain.depesz.comも使用しています。詳しくはデータベースレビューガイドをご覧ください。

クエリ最適化作業の例:

4. メトリクス定義の追加

メトリクスを追加、変更、更新する場合は、使用統計定義テーブルを更新してください。

5. バージョン・アプリケーションに新しいメトリクスを追加

新しいメトリクスを Versions Application に追加する必要があるかどうかを確認します。usage_data スキーマと使用データ・パラメータの受け入れを参照してください。counts キーの counts下に追加されたメトリクスは、すべて列にcounts 保存 countsされます。

詳細については、Usage Pingにインスツルメンテーションを追加するプロセスを参照してください。

6. 機能ラベルの追加

新しい Usage Ping メトリクスのマージ・リクエストにfeature ラベルを追加します。 これらはユーザー向けの変更で、Usage Ping 機能の拡張の一部です。

7. 変更履歴ファイルの追加

変更履歴の入力ガイドに従ってください。

8. テレメトリーレビューの依頼

GitLab.com では、Telemetry 関連のファイルを監視するために DangerBot をセットアップしており、DangerBot が Telemetry のレビューを推奨します。 レビューを希望する場合は、MR に@gitlab-org/growth/telemetry/engineers と明記してください。

オプション:Prometheusの使用状況Pingのテスト

提出されたデータにPrometheusからクエリされたメトリクスが含まれており、それを検査・検証したい場合は、Prometheusサーバーがローカルで稼働していること、さらにそれぞれのGitLabコンポーネントがそのサーバーにメトリクスをエクスポートしていることを確認する必要があります。 Prometheusから送られてくるデータをテストする必要がない場合は、Prometheusサーバーが稼働していなくてもUsage Pingは優雅に低下するはずなので、それ以上のアクションは必要ありません。

現在、Prometheusにデータをエクスポートできるコンポーネントは3種類あり、Usage Pingに含まれています:

  • node_exporter - ホスト・マシンからのノード・メトリクスのエクスポート
  • gitlab-exporter - 様々なGitLabコンポーネントからプロセスメトリクスをエクスポート
  • SidekiqやRailsサーバーなど、独自のメトリクスをエクスポートする様々なGitLabサービス

Omnibusコンテナでのテスト

これはPrometheusベースのUsage Pingをテストするために推奨される方法です。

変更を確認する最も簡単な方法は、CI経由でコードブランチから新しいOmnibusイメージをビルドし、イメージをダウンロードしてローカルのコンテナインスタンスを実行することです:

  1. マージリクエストから、qa ステージをクリックし、package-and-qa ジョブをトリガーします。 このジョブは、omnibus-gitlab-mirror プロジェクト](https://gitlab.com/gitlab-org/build/omnibus-gitlab-mirror/-/pipelines)の[下流パイプラインで Omnibus ビルドをトリガーします。
  2. 下流のパイプラインでは、gitlab-docker のジョブが終了するまで待ちます。
  3. ジョブ・ログを開き、バージョンを含む完全なコンテナ名を検索します。 これは、次のような形式になります:registry.gitlab.com/gitlab-org/build/omnibus-gitlab-mirror/gitlab-ee:<VERSION>.
  4. ローカルマシンで、GitLab Dockerレジストリにログインしていることを確認します。 この手順は、Authenticating to the GitLab Container Registryにあります。
  5. ログインしたら、次の方法で新しい画像をダウンロードします。docker pull registry.gitlab.com/gitlab-org/build/omnibus-gitlab-mirror/gitlab-ee:<VERSION>
  6. OmnibusのGitLabコンテナをDockerで操作して実行する方法については、OmnibusドキュメントのGitLab Dockerイメージを参照してください。

GitLab開発ツールキットでのテスト

実際のGitLabのデプロイをエミュレートするときに多くの困難が伴うので、これはあまり推奨されないアプローチです。

GDKは現在、Prometheusサーバーやnode_exporter 、他のGitLabコンポーネントと一緒に実行するように設定されていません。もしそうしたいのであれば、PrometheusでGDKをモニタリングするのが良いスタートです。

GCKには、Prometheus ベースの Usage Ping をテストするための限定的なサポートがあります。 デフォルトでは、多くのコンポーネントをスクレイピングするように設定された Prometheus サービスが既に付属していますが、以下の制限があります:

  • 現在、gitlab-exporter インスタンスを実行していないため、Gitaly などのサービスからのいくつかのprocess_* メトリクスが欠落している可能性があります。
  • node_exporterを実行していますが、docker-compose サービスはホストをエミュレートしています。つまり、通常であれば、実行中の他のどのサービスとも関連付けられないように自分自身を報告します。本番環境では、ノード・メトリクスがどのように報告されるかは異なります。ノード・メトリクスは、node_exporter常に任意のノード上で他の GitLab コンポーネントと一緒にプロセスとして実行されます。Usage Ping の観点からは、どのノード・データも、実行中のどのサービスとも関連付けられないように見えます。この問題を軽減するために、 node_exporter web サービスに GCK を任意に「割り当て」ました。つまり、Usage Ping では、このサービスnode_* のメトリクスのみが表示されます。

使用統計の定義

統計 セクション ステージ 階層 エディション 説明
uuid          
hostname          
version          
installation_type          
active_user_count          
recorded_at          
recording_ce_finished_at       CE+EE Coreの特徴を計算すると
recording_ee_finished_at       EE EE固有の特徴を計算すると
edition          
license_md5          
license_id          
historical_max_users          
Name licensee        
Email licensee        
Company licensee        
license_user_count          
license_starts_at          
license_expires_at          
license_plan          
license_trial          
assignee_lists counts        
boards counts        
ci_builds counts verify     プロジェクト内のユニークなビルド
ci_internal_pipelines counts verify     GitLabリポジトリ内のパイプライン総数
ci_external_pipelines counts verify     外部リポジトリにあるパイプライン合計
ci_pipeline_config_auto_devops counts verify     Auto DevOpsテンプレートからのパイプライン合計
ci_pipeline_config_repository counts verify     リポジトリ内のテンプレートからのパイプライン合計
ci_runners counts verify     プロジェクトに参加したランナーの総数
ci_triggers counts verify     プロジェクトに設定されているトリガー総数
ci_pipeline_schedules counts verify     GitLabのパイプラインスケジュール
auto_devops_enabled counts configure     自動DevOpsテンプレートが有効なプロジェクト
auto_devops_disabled counts configure     Auto DevOpsテンプレートが無効なプロジェクト
deploy_keys counts        
deployments counts release     デプロイ総数
deployments counts_monthly release     直近28日間のデプロイ総数
dast_jobs counts        
successful_deployments counts release     成功したデプロイ総数
successful_deployments counts_monthly release     直近28日間のデプロイ成功数合計
failed_deployments counts release     失敗したデプロイの合計
failed_deployments counts_monthly release     過去28日間のデプロイ失敗の総数
environments counts release     利用可能な環境と停止している環境の合計
clusters counts configure     GitLabマネージドクラスターの有効・無効の合計
clusters_enabled counts configure     現在有効なGitLab Managedクラスタの総数
project_clusters_enabled counts configure     プロジェクトにアタッチされているGitLab Managedクラスター合計
group_clusters_enabled counts configure     グループにアタッチされているGitLab Managedクラスターの総数
instance_clusters_enabled counts configure     インスタンスにアタッチされているGitLab Managedクラスタの合計数
clusters_disabled counts configure     GitLabマネージド無効クラスタ合計
project_clusters_disabled counts configure     過去にプロジェクトにアタッチされたGitLabマネージド無効クラスター合計
group_clusters_disabled counts configure     以前にグループにアタッチされたGitLab Managedの無効クラスター合計
instance_clusters_disabled counts configure     インスタンスに以前アタッチされていたGitLab Managed無効クラスタの合計
clusters_platforms_eks counts configure     GitLab on AWS EKSでプロビジョニングされたGitLab Managedクラスターの総数
clusters_platforms_gke counts configure     GCE GKE上のGitLabでプロビジョニングされたGitLab Managedクラスタの総数
clusters_platforms_user counts configure     ユーザプロビジョニングされたGitLab Managedクラスター合計
clusters_applications_helm counts configure     Helmが有効なGitLab Managedクラスター合計
clusters_applications_ingress counts configure     Ingressが有効なGitLab Managedクラスター合計
clusters_applications_cert_managers counts configure     Cert Managerが有効なGitLab Managedクラスター合計
clusters_applications_crossplane counts configure     クロスプレーンが有効なGitLab Managedクラスター合計
clusters_applications_prometheus counts configure     Prometheus が有効な GitLab Managed クラスター合計
clusters_applications_runner counts configure     Runnerが有効なGitLab Managedクラスタ合計
clusters_applications_knative counts configure     Knativeが有効なGitLab Managedクラスター合計
clusters_applications_elastic_stack counts configure     Elastic Stackを有効にしたGitLab Managedクラスタ合計
clusters_management_project counts configure     クラスター管理プロジェクトが定義されたGitLab Managedクラスター合計
in_review_folder counts        
grafana_integrated_projects counts        
groups counts        
issues counts        
issues_created_from_gitlab_error_tracking_ui counts monitor      
issues_with_associated_zoom_link counts monitor      
issues_using_zoom_quick_actions counts monitor      
issues_with_embedded_grafana_charts_approx counts monitor      
issues_with_health_status counts        
keys counts        
label_lists counts        
lfs_objects counts        
milestone_lists counts        
milestones counts        
pages_domains counts release     GitLab総ドメイン数
pool_repositories counts        
projects counts        
projects_imported_from_github counts        
projects_with_repositories_enabled counts        
projects_with_error_tracking_enabled counts monitor      
protected_branches counts        
releases counts release     ユニークなリリースタグ
remote_mirrors counts        
requirements_created counts        
snippets counts ‘作成’   CE+EE  
snippets counts_monthly ‘作成’   CE+EE  
personal_snippets counts ‘作成’   CE+EE  
personal_snippets counts_monthly ‘作成’   CE+EE  
project_snippets counts ‘作成’   CE+EE  
project_snippets counts_monthly ‘作成’   CE+EE  
suggestions counts        
todos counts        
uploads counts        
web_hooks counts        
projects_alerts_active counts        
projects_asana_active counts        
projects_assembla_active counts        
projects_bamboo_active counts        
projects_bugzilla_active counts        
projects_buildkite_active counts        
projects_campfire_active counts        
projects_custom_issue_tracker_active counts        
projects_discord_active counts        
projects_drone_ci_active counts        
projects_emails_on_push_active counts        
projects_external_wiki_active counts        
projects_flowdock_active counts        
projects_github_active counts        
projects_hangouts_chat_active counts        
projects_hipchat_active counts        
projects_irker_active counts        
projects_jenkins_active counts        
projects_jira_active counts        
projects_mattermost_active counts        
projects_mattermost_slash_commands_active counts        
projects_microsoft_teams_active counts        
projects_packagist_active counts        
projects_pipelines_email_active counts        
projects_pivotaltracker_active counts        
projects_prometheus_active counts        
projects_pushover_active counts        
projects_redmine_active counts        
projects_slack_active counts        
projects_slack_slash_commands_active counts        
projects_teamcity_active counts        
projects_unify_circuit_active counts        
projects_webex_teams_active counts        
projects_youtrack_active counts        
projects_jira_server_active counts        
projects_jira_cloud_active counts        
projects_jira_dvcs_cloud_active counts        
projects_jira_dvcs_server_active counts        
labels counts        
merge_requests counts        
merge_requests_users counts        
notes counts        
wiki_pages_create counts        
wiki_pages_update counts        
wiki_pages_delete counts        
web_ide_commits counts        
web_ide_views counts        
web_ide_merge_requests counts        
web_ide_previews counts        
snippet_comment counts        
commit_comment counts        
merge_request_comment counts        
snippet_create counts        
snippet_update counts        
navbar_searches counts        
cycle_analytics_views counts        
productivity_analytics_views counts        
source_code_pushes counts        
merge_request_create counts        
design_management_designs_create counts        
design_management_designs_update counts        
design_management_designs_delete counts        
licenses_list_views counts        
user_preferences_group_overview_details counts        
user_preferences_group_overview_security_dashboard counts        
ingress_modsecurity_logging counts        
ingress_modsecurity_blocking counts        
ingress_modsecurity_disabled counts        
ingress_modsecurity_not_installed counts        
dependency_list_usages_total counts        
epics counts        
feature_flags counts        
geo_nodes counts geo     Geoデプロイのサイト数
geo_event_log_max_id counts geo     Geoプライマリのレプリケーションイベント数
incident_issues counts monitor     アラートボットが作成したイシュー
alert_bot_incident_issues counts monitor     アラートボットが作成したイシュー
incident_labeled_issues counts monitor     インシデント・ラベルのイシュー
issues_created_gitlab_alerts counts monitor     アラートボット以外のユーザーによるアラートから作成されたイシュー
issues_created_manually_from_alerts counts monitor     アラートボット以外のユーザーによるアラートから作成されたイシュー
issues_created_from_alerts counts monitor     Prometheusとアラート管理アラートから作成されたイシュー
ldap_group_links counts        
ldap_keys counts        
ldap_users counts        
pod_logs_usages_total counts        
projects_enforcing_code_owner_approval counts        
projects_mirrored_with_pipelines_enabled counts release     リポジトリのミラーリングが有効なプロジェクト
projects_reporting_ci_cd_back_to_github counts verify     GitHubサービスパイプラインが有効なプロジェクト
projects_with_packages counts package     パッケージレジストリを設定したプロジェクト
projects_with_prometheus_alerts counts monitor     Prometheusアラートが有効なプロジェクト
projects_with_tracing_enabled counts monitor     トレースが有効なプロジェクト
projects_with_alerts_service_enabled counts monitor     アラートサービスが有効なプロジェクト
template_repositories counts        
container_scanning_jobs counts        
dependency_scanning_jobs counts        
license_management_jobs counts        
sast_jobs counts        
status_page_projects counts monitor     ステータスページが有効なプロジェクト
status_page_issues counts monitor     ステータスページに公開されたイシュー
status_page_incident_publishes counts monitor     パブリッシュオペレーションの累積使用回数
status_page_incident_unpublishes counts monitor     アンパブリッシュオペレーションの累積使用回数
epics_deepest_relationship_level counts        
operations_dashboard_default_dashboard counts monitor     オペレーションダッシュボードが有効なアクティブユーザー
operations_dashboard_users_with_projects_added counts monitor     オペレーションダッシュボードにプロジェクトを表示するアクティブユーザー
container_registry_enabled          
dependency_proxy_enabled          
gitlab_shared_runners_enabled          
gravatar_enabled          
ldap_enabled          
mattermost_enabled          
omniauth_enabled          
prometheus_enabled         バンドルされているPrometheusが有効かどうか
prometheus_metrics_enabled          
reply_by_email_enabled          
average avg_cycle_analytics - code        
sd avg_cycle_analytics - code        
missing avg_cycle_analytics - code        
average avg_cycle_analytics - test        
sd avg_cycle_analytics - test        
missing avg_cycle_analytics - test        
average avg_cycle_analytics - review        
sd avg_cycle_analytics - review        
missing avg_cycle_analytics - review        
average avg_cycle_analytics - staging        
sd avg_cycle_analytics - staging        
missing avg_cycle_analytics - staging        
average avg_cycle_analytics - production        
sd avg_cycle_analytics - production        
missing avg_cycle_analytics - production        
total avg_cycle_analytics        
g_analytics_contribution analytics_unique_visits manage     groups/:group/-/contribution_analyticsへの訪問数
g_analytics_insights analytics_unique_visits manage     グループ/:グループ/-/インサイトへの訪問
g_analytics_issues analytics_unique_visits manage     groups/:group/-/issues_analyticsへの訪問数
g_analytics_productivity analytics_unique_visits manage     グループ/:group/-/analytics/productivity_analyticsへの訪問
g_analytics_valuestream analytics_unique_visits manage     groups/:group/-/analytics/value_stream_analyticsへの訪問。
p_analytics_pipelines analytics_unique_visits manage     グループ/:プロジェクト/パイプライン/チャートへの訪問
p_analytics_code_reviews analytics_unique_visits manage     group/:project/-/analytics/code_reviewsへの訪問。
p_analytics_valuestream analytics_unique_visits manage     group/:project/-/value_stream_analyticsへの訪問。
p_analytics_insights analytics_unique_visits manage     グループ/:プロジェクト/インサイトへの訪問
p_analytics_issues analytics_unique_visits manage     group/:project/-/analytics/issues_analyticsへの訪問。
p_analytics_repo analytics_unique_visits manage     group/:project/-/graphs/master/chartsへの訪問。
u_analytics_todos analytics_unique_visits manage     ダッシュボード/トドへの訪問
i_analytics_cohorts analytics_unique_visits manage     インスタンス統計/コホートへの訪問
i_analytics_dev_ops_score analytics_unique_visits manage     /-/instance_statistics/dev_ops_scoreへの訪問
analytics_unique_visits_for_any_target analytics_unique_visits manage     上記のページへのアクセス
clusters_applications_cert_managers usage_activity_by_stage configure   CE+EE 証明書マネージャが有効な独自のクラスター
clusters_applications_helm usage_activity_by_stage configure   CE+EE Helmが有効な独自のクラスター
clusters_applications_ingress usage_activity_by_stage configure   CE+EE Ingressが有効なユニークなクラスター
clusters_applications_knative usage_activity_by_stage configure   CE+EE Knativeが有効な独自のクラスター
clusters_management_project usage_activity_by_stage configure   CE+EE プロジェクト管理が可能な独自のクラスター
clusters_disabled usage_activity_by_stage configure   CE+EE GitLabマネージドクラスター “以外の合計
clusters_enabled usage_activity_by_stage configure   CE+EE GitLabマネージドクラスター合計
clusters_platforms_gke usage_activity_by_stage configure   CE+EE Google Cloudをインストールした独自のクラスター
clusters_platforms_eks usage_activity_by_stage configure   CE+EE AWSをインストールした独自クラスター
clusters_platforms_user usage_activity_by_stage configure   CE+EE ユーザーが提供する独自のクラスター
instance_clusters_disabled usage_activity_by_stage configure   CE+EE インスタンスで無効化されたユニーク・クラスター
instance_clusters_enabled usage_activity_by_stage configure   CE+EE インスタンスで有効なユニーク・クラスター
group_clusters_disabled usage_activity_by_stage configure   CE+EE グループで無効化されたユニーククラスター
group_clusters_enabled usage_activity_by_stage configure   CE+EE グループで有効なユニーククラスター
project_clusters_disabled usage_activity_by_stage configure   CE+EE プロジェクトで無効化された独自のクラスター
project_clusters_enabled usage_activity_by_stage configure   CE+EE プロジェクトで有効な独自のクラスター
projects_slack_notifications_active usage_activity_by_stage configure   EE Slackサービスが有効なユニークなプロジェクト
projects_slack_slash_active usage_activity_by_stage configure   EE Slackの「/」コマンドが有効なユニークなプロジェクト
projects_with_prometheus_alerts usage_activity_by_stage configure   EE Prometheusが有効でアラートがないプロジェクト
deploy_keys usage_activity_by_stage create   CE+EE  
keys usage_activity_by_stage create   CE+EE  
merge_requests usage_activity_by_stage create   CE+EE  
projects_with_disable_overriding_approvers_per_merge_request usage_activity_by_stage create   CE+EE  
projects_without_disable_overriding_approvers_per_merge_request usage_activity_by_stage create   CE+EE  
remote_mirrors usage_activity_by_stage create   CE+EE  
snippets usage_activity_by_stage create   CE+EE  
merge_requests_users usage_activity_by_stage_monthly create   CE+EE マージリクエストを使用したユーザーのユニークカウント
projects_enforcing_code_owner_approval usage_activity_by_stage create   EE  
merge_requests_with_optional_codeowners usage_activity_by_stage create   EE  
merge_requests_with_required_codeowners usage_activity_by_stage create   EE  
projects_imported_from_github usage_activity_by_stage create   EE  
projects_with_repositories_enabled usage_activity_by_stage create   EE  
protected_branches usage_activity_by_stage create   EE  
suggestions usage_activity_by_stage create   EE  
approval_project_rules usage_activity_by_stage create   EE プロジェクト承認者数
approval_project_rules_with_target_branch usage_activity_by_stage create   EE デフォルトのターゲットブランチでないプロジェクト承認者の数
clusters usage_activity_by_stage monitor   CE+EE  
clusters_applications_prometheus usage_activity_by_stage monitor   CE+EE  
operations_dashboard_default_dashboard usage_activity_by_stage monitor   CE+EE  
operations_dashboard_users_with_projects_added usage_activity_by_stage monitor   EE  
projects_prometheus_active usage_activity_by_stage monitor   EE  
projects_with_error_tracking_enabled usage_activity_by_stage monitor   EE  
projects_with_tracing_enabled usage_activity_by_stage monitor   EE  
events usage_activity_by_stage manage   CE+EE  
groups usage_activity_by_stage manage   CE+EE  
users_created_at usage_activity_by_stage manage   CE+EE  
omniauth_providers usage_activity_by_stage manage   CE+EE  
ldap_keys usage_activity_by_stage manage   EE  
ldap_users usage_activity_by_stage manage   EE  
value_stream_management_customized_group_stages usage_activity_by_stage manage   EE  
projects_with_compliance_framework usage_activity_by_stage manage   EE  
ldap_servers usage_activity_by_stage manage   EE  
ldap_group_sync_enabled usage_activity_by_stage manage   EE  
ldap_admin_sync_enabled usage_activity_by_stage manage   EE  
group_saml_enabled usage_activity_by_stage manage   EE  
issues usage_activity_by_stage plan   CE+EE  
notes usage_activity_by_stage plan   CE+EE  
projects usage_activity_by_stage plan   CE+EE  
todos usage_activity_by_stage plan   CE+EE  
assignee_lists usage_activity_by_stage plan   EE  
epics usage_activity_by_stage plan   EE  
label_lists usage_activity_by_stage plan   EE  
milestone_lists usage_activity_by_stage plan   EE  
projects_jira_active usage_activity_by_stage plan   EE  
projects_jira_dvcs_server_active usage_activity_by_stage plan   EE  
projects_jira_dvcs_server_active usage_activity_by_stage plan   EE  
service_desk_enabled_projects usage_activity_by_stage plan   EE  
service_desk_issues usage_activity_by_stage plan   EE  
deployments usage_activity_by_stage release   CE+EE デプロイ総数
failed_deployments usage_activity_by_stage release   CE+EE 失敗したデプロイの合計
projects_mirrored_with_pipelines_enabled usage_activity_by_stage release   EE リポジトリのミラーリングが有効なプロジェクト
releases usage_activity_by_stage release   CE+EE プロジェクト内のユニークなリリースタグ
successful_deployments usage_activity_by_stage release   CE+EE 成功したデプロイ総数
user_preferences_group_overview_security_dashboard usage_activity_by_stage secure      
ci_builds usage_activity_by_stage verify   CE+EE プロジェクト内のユニークなビルド
ci_external_pipelines usage_activity_by_stage verify   CE+EE 外部リポジトリにあるパイプライン合計
ci_internal_pipelines usage_activity_by_stage verify   CE+EE GitLabリポジトリ内のパイプライン総数
ci_pipeline_config_auto_devops usage_activity_by_stage verify   CE+EE Auto DevOpsテンプレートからのパイプライン合計
ci_pipeline_config_repository usage_activity_by_stage verify   CE+EE リポジトリにあるテンプレートからのパイプライン
ci_pipeline_schedules usage_activity_by_stage verify   CE+EE GitLabのパイプラインスケジュール
ci_pipelines usage_activity_by_stage verify   CE+EE パイプライン合計
ci_triggers usage_activity_by_stage verify   CE+EE トリガー有効
clusters_applications_runner usage_activity_by_stage verify   CE+EE Runnerが有効な独自のクラスター
projects_reporting_ci_cd_back_to_github usage_activity_by_stage verify   EE GitHubパイプラインが有効なユニークなプロジェクト
merge_requests_users usage_activity_by_stage_monthly create     マージリクエストを使用したユーザーのユニークカウント
duration_s topology enablement     トポロジーデータの収集に要した時間
application_requests_per_hour topology enablement     1時間あたりのウェブアプリケーションへのリクエスト数
failures topology enablement     失敗したクエリに関する情報が含まれています。
nodes topology enablement     GitLab コンポーネントが稼働しているサーバーノードのリスト
node_memory_total_bytes topology > nodes enablement     このノードで使用可能なメモリの合計
node_cpus topology > nodes enablement     このノードのCPUコア数
node_uname_info topology > nodes enablement     このノードの基本ハードウェアアーキテクチャとOSリリース情報
node_services topology > nodes enablement     このノードで稼働している GitLab サービスの一覧
name topology > nodes > node_services enablement     このノードで稼働しているGitLabサービスの名前
process_count topology > nodes > node_services enablement     このサービスで実行中のプロセス数
process_memory_rss topology > nodes > node_services enablement     サービスプロセスの平均レジデントセットサイズ
process_memory_uss topology > nodes > node_services enablement     サービスプロセスの平均ユニークセットサイズ
process_memory_pss topology > nodes > node_services enablement     サービスプロセスの平均比例セットサイズ
server topology > nodes > node_services enablement     使用するウェブサーバーの種類(UnicornまたはPuma)

使用例 Ping ペイロード

以下は、Usage Pingペイロードの内容例です。

{
  "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,
  "ingress_modsecurity_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"
  },
  "database": {
    "adapter": "postgresql",
    "version": "9.6.15"
  },
  "app_server": {
    "type": "console"
  },
  "avg_cycle_analytics": {
    "issue": {
      "average": 999,
      "sd": 999,
      "missing": 999
    },
    "plan": {
      "average": null,
      "sd": 999,
      "missing": 999
    },
    "code": {
      "average": null,
      "sd": 999,
      "missing": 999
    },
    "test": {
      "average": null,
      "sd": 999,
      "missing": 999
    },
    "review": {
      "average": null,
      "sd": 999,
      "missing": 999
    },
    "staging": {
      "average": null,
      "sd": 999,
      "missing": 999
    },
    "production": {
      "average": null,
      "sd": 999,
      "missing": 999
    },
    "total": 999
  },
  "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,
    "failures": [],
    "nodes": [
      {
        "node_memory_total_bytes": 33269903360,
        "node_cpus": 16,
        "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
          },
          ...
        ],
        ...
      },
      ...
    ]
  }
}