Class: ServerMetrics::SystemInfo

Inherits:
Object
  • Object
show all
Defined in:
lib/server_metrics/system_info.rb

Class Method Summary collapse

Class Method Details

.architectureObject



7
8
9
# File 'lib/server_metrics/system_info.rb', line 7

def self.architecture
  RbConfig::CONFIG['target_cpu']
end

.hostnameObject



38
39
40
# File 'lib/server_metrics/system_info.rb', line 38

def self.hostname
  Socket.gethostname
end

.num_processorsObject



19
20
21
22
23
24
25
26
27
28
# File 'lib/server_metrics/system_info.rb', line 19

def self.num_processors
  if os =~ /(darwin|freebsd)/
    `sysctl -n hw.ncpu`.to_i
  elsif os =~ /linux/
    lines = File.read("/proc/cpuinfo").lines.to_a
    lines.grep(/^processor\s*:/i).size
  end
rescue
  1
end

.osObject



11
12
13
# File 'lib/server_metrics/system_info.rb', line 11

def self.os
  RbConfig::CONFIG['target_os']
end

.os_versionObject



15
16
17
# File 'lib/server_metrics/system_info.rb', line 15

def self.os_version
  `uname -r`.chomp
end

.proc_dirObject

When run inside a docker container, we want to read from the host proc dir.



47
48
49
# File 'lib/server_metrics/system_info.rb', line 47

def self.proc_dir
  @@proc_dir ||= (File.directory?("/host/proc") ? "/host/proc" : "/proc")
end

.timezoneObject



30
31
32
# File 'lib/server_metrics/system_info.rb', line 30

def self.timezone
  Time.now.zone
end

.timezone_offsetObject



34
35
36
# File 'lib/server_metrics/system_info.rb', line 34

def self.timezone_offset
  Time.now.utc_offset/60/60
end

.to_hObject



42
43
44
# File 'lib/server_metrics/system_info.rb', line 42

def self.to_h
  {:architecture => architecture, :os=>os, :os_version=>os_version, :num_processors=>num_processors, :hostname=>hostname, :timezone=>timezone, :timezone_offset=>timezone_offset }
end