class ServerMetrics::SystemInfo

Public Class Methods

architecture() click to toggle source
# File lib/server_metrics/system_info.rb, line 7
def self.architecture
  RbConfig::CONFIG['target_cpu']
end
hostname() click to toggle source
# File lib/server_metrics/system_info.rb, line 38
def self.hostname
  Socket.gethostname
end
num_processors() click to toggle source
# 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
os() click to toggle source
# File lib/server_metrics/system_info.rb, line 11
def self.os
  RbConfig::CONFIG['target_os']
end
os_version() click to toggle source
# File lib/server_metrics/system_info.rb, line 15
def self.os_version
  `uname -r`.chomp
end
proc_dir() click to toggle source

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

# File lib/server_metrics/system_info.rb, line 47
def self.proc_dir
  @@proc_dir ||= (File.directory?("/host/proc") ? "/host/proc" : "/proc")
end
timezone() click to toggle source
# File lib/server_metrics/system_info.rb, line 30
def self.timezone
  Time.now.zone
end
timezone_offset() click to toggle source
# File lib/server_metrics/system_info.rb, line 34
def self.timezone_offset
  Time.now.utc_offset/60/60
end
to_h() click to toggle source
# 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