module DashingContrib::Jobs::PingdomUptime
Public Class Methods
metrics(options)
click to toggle source
# File lib/dashing-contrib/jobs/pingdom_uptime.rb, line 8 def self.metrics(options) client = DashingContrib::Pingdom::Client.new( username: options[:username], password: options[:password], api_key: options[:api_key], team_account: options[:team_account] ) user_opt = self.default_date_ranges.merge(options) id = user_opt[:check_id] current_uptime = client.uptime(id, user_opt[:default_date_range], user_opt[:now]) first_uptime = client.uptime(id, user_opt[:first_date_range], user_opt[:now]) second_uptime = client.uptime(id, user_opt[:second_date_range], user_opt[:now]) status = client.checks(id) if status[:check][:lasterrortime].nil? last_down = "never" else last_down = ::DashingContrib::Time.readable_diff(::Time.at(status[:check][:lasterrortime])) end # returns this dataset { current: current_uptime.to_s, first: first_uptime.to_s, first_title: user_opt[:first_title], second: second_uptime.to_s, second_title: user_opt[:second_title], is_up: status[:check][:status] == 'up', current_response_time: status[:check][:lastresponsetime], last_downtime: last_down } end
validate_state(metrics, options = {})
click to toggle source
# File lib/dashing-contrib/jobs/pingdom_uptime.rb, line 43 def self.validate_state(metrics, options = {}) return DashingContrib::RunnableJob::OK if metrics[:is_up] DashingContrib::RunnableJob::CRITICAL end
Private Class Methods
default_date_ranges()
click to toggle source
a default date ranges to use for uptime metrics
# File lib/dashing-contrib/jobs/pingdom_uptime.rb, line 50 def self.default_date_ranges now_time = ::Time.now.to_i t24_hours = 86400 t1_month = t24_hours * 7 * 4 { now: now_time, default_date_range: now_time - t24_hours, first_title: '4 Months', first_date_range: now_time - (t1_month * 4), second_title: 'YTD', second_date_range: now_time - (t1_month * 12) } end