diff options
author | Gabriel Mazetto <brodock@gmail.com> | 2016-05-20 01:31:58 -0500 |
---|---|---|
committer | Gabriel Mazetto <gabriel@gitlab.com> | 2016-05-20 20:46:13 -0500 |
commit | 64cfbca3cb6f8e71520b496318df7329bd8094e9 (patch) | |
tree | 313386feb12c6b0cc2222c711c0d30017d9c2b94 | |
parent | 78a67fc48dab434b43a080e5b15491963656661a (diff) | |
download | gitlab-ce-64cfbca3cb6f8e71520b496318df7329bd8094e9.tar.gz |
Added load average to system sampling.
-rw-r--r-- | lib/gitlab/metrics/sampler.rb | 6 | ||||
-rw-r--r-- | lib/gitlab/metrics/system.rb | 15 | ||||
-rw-r--r-- | spec/lib/gitlab/metrics/system_spec.rb | 8 |
3 files changed, 28 insertions, 1 deletions
diff --git a/lib/gitlab/metrics/sampler.rb b/lib/gitlab/metrics/sampler.rb index fc709222a9b..d5c8f4db595 100644 --- a/lib/gitlab/metrics/sampler.rb +++ b/lib/gitlab/metrics/sampler.rb @@ -43,6 +43,7 @@ module Gitlab sample_file_descriptors sample_objects sample_gc + sample_load_average flush ensure @@ -98,6 +99,11 @@ module Gitlab add_metric('gc_statistics', stats) end + def sample_load_average + loadavg = System.load_average + add_metric('sys_loadavg', {:'1min' => loadavg[0], :'5min' => loadavg[1], :'15min' => loadavg[2]}) + end + def add_metric(series, values, tags = {}) prefix = sidekiq? ? 'sidekiq_' : 'rails_' diff --git a/lib/gitlab/metrics/system.rb b/lib/gitlab/metrics/system.rb index a7d183b2f94..55fe0f7002b 100644 --- a/lib/gitlab/metrics/system.rb +++ b/lib/gitlab/metrics/system.rb @@ -8,7 +8,7 @@ module Gitlab if File.exist?('/proc') # Returns the current process' memory usage in bytes. def self.memory_usage - mem = 0 + mem = 0 match = File.read('/proc/self/status').match(/VmRSS:\s+(\d+)/) if match and match[1] @@ -21,6 +21,15 @@ module Gitlab def self.file_descriptor_count Dir.glob('/proc/self/fd/*').length end + + def self.load_average + loadavg = File.read('/proc/loadavg').scan(/\d+.\d+/) + if loadavg && loadavg[0] && loadavg[1] && loadavg[2] + loadavg[0..2].map { |value| value.to_f } + else + [0.0, 0.0, 0.0] + end + end else def self.memory_usage 0.0 @@ -29,6 +38,10 @@ module Gitlab def self.file_descriptor_count 0 end + + def self.load_average + [0.0, 0.0, 0.0] + end end # THREAD_CPUTIME is not supported on OS X diff --git a/spec/lib/gitlab/metrics/system_spec.rb b/spec/lib/gitlab/metrics/system_spec.rb index d6ae54e25e8..adab688c02e 100644 --- a/spec/lib/gitlab/metrics/system_spec.rb +++ b/spec/lib/gitlab/metrics/system_spec.rb @@ -27,6 +27,14 @@ describe Gitlab::Metrics::System do end end + describe '.load_average' do + it 'returns the amount of load as 3 values array' do + expect(described_class.load_average[0]).to be >= 0.0 + expect(described_class.load_average[1]).to be >= 0.0 + expect(described_class.load_average[2]).to be >= 0.0 + end + end + describe '.cpu_time' do it 'returns a Fixnum' do expect(described_class.cpu_time).to be_an_instance_of(Fixnum) |