Add Gitaly data to the usage ping

Gitaly data wasn't available to the team, an this change is a first
iteration towards understanding what data we need and how to interpret
it. Later more values will be added.

For now the most important thing is the filesystem String Array, as that
includes data on ext4 exposure and NFS.

Part of: https://gitlab.com/gitlab-org/gitlab-ce/issues/60602
This commit is contained in:
Zeger-Jan van de Weg 2019-06-20 13:04:56 +02:00
parent 4298a28a99
commit 44528f6c44
No known key found for this signature in database
GPG key ID: 65F6A8D64A88ABAC
5 changed files with 34 additions and 3 deletions

View file

@ -0,0 +1,5 @@
---
title: Add Gitaly data to the usage ping
merge_request:
author:
type: added

View file

@ -2,8 +2,18 @@
module Gitaly module Gitaly
class Server class Server
def self.all class << self
Gitlab.config.repositories.storages.keys.map { |s| Gitaly::Server.new(s) } def all
Gitlab.config.repositories.storages.keys.map { |s| Gitaly::Server.new(s) }
end
def count
all.size
end
def filesystems
all.map(&:filesystem_type).compact.uniq
end
end end
attr_reader :storage attr_reader :storage
@ -36,6 +46,10 @@ module Gitaly
storage_status&.writeable storage_status&.writeable
end end
def filesystem_type
storage_status&.fs_type
end
def address def address
Gitlab::GitalyClient.address(@storage) Gitlab::GitalyClient.address(@storage)
rescue RuntimeError => e rescue RuntimeError => e

View file

@ -136,8 +136,9 @@ module Gitlab
def components_usage_data def components_usage_data
{ {
gitlab_pages: { enabled: Gitlab.config.pages.enabled, version: Gitlab::Pages::VERSION },
git: { version: Gitlab::Git.version }, git: { version: Gitlab::Git.version },
gitaly: { version: Gitaly::Server.all.first.server_version, servers: Gitaly::Server.count, filesystems: Gitaly::Server.filesystems },
gitlab_pages: { enabled: Gitlab.config.pages.enabled, version: Gitlab::Pages::VERSION },
database: { adapter: Gitlab::Database.adapter_name, version: Gitlab::Database.version } database: { adapter: Gitlab::Database.adapter_name, version: Gitlab::Database.version }
} }
end end

View file

@ -47,6 +47,12 @@ describe Gitaly::Server do
end end
end end
describe "#filesystem_type" do
subject { server.filesystem_type }
it { is_expected.to be_present }
end
describe 'request memoization' do describe 'request memoization' do
context 'when requesting multiple properties', :request_store do context 'when requesting multiple properties', :request_store do
it 'uses memoization for the info request' do it 'uses memoization for the info request' do

View file

@ -54,6 +54,7 @@ describe Gitlab::UsageData do
gitlab_shared_runners_enabled gitlab_shared_runners_enabled
gitlab_pages gitlab_pages
git git
gitaly
database database
avg_cycle_analytics avg_cycle_analytics
web_ide_commits web_ide_commits
@ -205,6 +206,10 @@ describe Gitlab::UsageData do
expect(subject[:git][:version]).to eq(Gitlab::Git.version) expect(subject[:git][:version]).to eq(Gitlab::Git.version)
expect(subject[:database][:adapter]).to eq(Gitlab::Database.adapter_name) expect(subject[:database][:adapter]).to eq(Gitlab::Database.adapter_name)
expect(subject[:database][:version]).to eq(Gitlab::Database.version) expect(subject[:database][:version]).to eq(Gitlab::Database.version)
expect(subject[:gitaly][:version]).to be_present
expect(subject[:gitaly][:servers]).to be >= 1
expect(subject[:gitaly][:filesystems]).to be_an(Array)
expect(subject[:gitaly][:filesystems].first).to be_a(String)
end end
end end