class ServiceStatus::Status

Attributes

checks[R]
hostname[R]
name[R]
stats[R]
timestamp[R]
version[R]

Public Class Methods

new(name, version, boot_time) click to toggle source
# File lib/service_status/status.rb, line 13
def initialize(name, version, boot_time)
  @boot_time = boot_time
  @name = name
  @version = version
  @hostname = Socket.gethostname
  @checks = []
  @timestamp = Time.now.strftime('%Y-%m-%d %T')
  @stats = []
  @errors = []
end

Public Instance Methods

add_check(name, successful, description = nil) click to toggle source
# File lib/service_status/status.rb, line 24
def add_check(name, successful, description = nil)
  check = { name: name, successful: successful }
  check[:description] = description if description
  @checks << check
  @errors << name unless successful
end
add_http_get_check(name, url) click to toggle source
# File lib/service_status/status.rb, line 31
def add_http_get_check(name, url)
  successful = true
  uri = URI(url)
  begin
    res = Net::HTTP.get_response(uri)
    successful = res.is_a?(Net::HTTPSuccess)
  rescue
    successful = false
  end
  add_check(name, successful)
end
add_stat(name, value, description = nil) click to toggle source
# File lib/service_status/status.rb, line 43
def add_stat(name, value, description = nil)
  stat = { name: name, value: value }
  stat[:description] = description if description
  @stats << stat
end
disk_usage() click to toggle source
# File lib/service_status/status.rb, line 66
def disk_usage
  format('%01d%%', (disk_used / disk_size) * 100)
end
online?() click to toggle source
# File lib/service_status/status.rb, line 53
def online?
  @errors.empty?
end
status() click to toggle source
# File lib/service_status/status.rb, line 49
def status
  online? ? 'online' : 'offline'
end
to_json(*a) click to toggle source

rubocop:disable MethodLength

# File lib/service_status/status.rb, line 71
def to_json(*a)
  {
    name: name,
    version: version,
    hostname: hostname,
    stats: stats,
    checks: checks,
    timestamp: timestamp,
    uptime: uptime,
    diskusage: disk_usage,
    status: status
  }.to_json(*a)
end
uptime() click to toggle source
# File lib/service_status/status.rb, line 57
def uptime
  total_seconds = Time.now - @boot_time
  seconds = total_seconds % 60
  minutes = (total_seconds / 60) % 60
  hours = total_seconds / (60 * 60)
  days = total_seconds / (60 * 60 * 24)
  format('%01dd:%02d:%02d:%02d', days, hours, minutes, seconds)
end

Private Instance Methods

disk_available() click to toggle source
# File lib/service_status/status.rb, line 91
def disk_available
  @blocks_available ||= filesystem.blocks_available.to_f
end
disk_size() click to toggle source
# File lib/service_status/status.rb, line 95
def disk_size
  @disk_size ||= filesystem.blocks.to_f
end
disk_used() click to toggle source
# File lib/service_status/status.rb, line 87
def disk_used
  disk_size - disk_available
end
filesystem() click to toggle source
# File lib/service_status/status.rb, line 99
def filesystem
  @root_filesystem ||= Sys::Filesystem.stat('/')
end