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