class Flapjack::Data::Metrics

Public Class Methods

jsonapi_associations() click to toggle source
# File lib/flapjack/data/metrics.rb, line 189
def self.jsonapi_associations
  @jsonapi_associations ||= {}
end
jsonapi_methods() click to toggle source
# File lib/flapjack/data/metrics.rb, line 179
def self.jsonapi_methods
  @jsonapi_methods ||= {
    :get => Flapjack::Gateways::JSONAPI::Data::MethodDescriptor.new(
      :attributes => [:total_keys, :processed_events, :event_queue_length,
                      :check_freshness, :check_counts],
      :description => "Get global metrics and event counter values."
    )
  }
end
swagger_included_classes() click to toggle source
# File lib/flapjack/data/metrics.rb, line 174
def self.swagger_included_classes
  # hack -- hardcoding for now
  []
end

Public Instance Methods

check_counts() click to toggle source
# File lib/flapjack/data/metrics.rb, line 64
def check_counts
  {
    :all     => Flapjack::Data::Check.count,
    :enabled => Flapjack::Data::Check.intersect(:enabled => true).count,
    :failing => Flapjack::Data::Check.intersect(:failing => true).count
  }
end
check_freshness() click to toggle source
# File lib/flapjack/data/metrics.rb, line 38
def check_freshness
  ages = [0, 60, 300, 900, 3600]

  start_time = Time.now

  current_checks = Flapjack::Data::Check.intersect(:enabled => true).all

  skeleton = {}
  ages.each {|a| skeleton[a] = 0 }
  age_ranges = ages.reverse.each_cons(2)

  current_checks.each_with_object(skeleton) do |check, memo|
    current_state = check.current_state
    last_update = current_state.nil? ? nil : current_state.updated_at
    next if last_update.nil?
    check_age = start_time - last_update
    check_age = 0 unless check_age > 0
    if check_age >= ages.last
      memo[ages.last] += 1
    else
      age_range = age_ranges.detect {|a, b| (check_age < a) && (check_age >= b) }
      memo[age_range.last] += 1 unless age_range.nil?
    end
  end
end
event_queue_length() click to toggle source
# File lib/flapjack/data/metrics.rb, line 23
def event_queue_length
  Flapjack.redis.llen('events')
end
processed_events() click to toggle source
# File lib/flapjack/data/metrics.rb, line 27
def processed_events
  global_stats = Flapjack::Data::Statistic.
    intersect(:instance_name => 'global').all.first

  [:all_events, :ok_events, :failure_events, :action_events,
   :invalid_events].each_with_object({}) do |event_type, memo|

    memo[event_type] = global_stats.nil? ? 0 : global_stats.send(event_type)
  end
end
total_keys() click to toggle source
# File lib/flapjack/data/metrics.rb, line 19
def total_keys
  Flapjack.redis.dbsize
end