Class: Flapjack::Data::Metrics
- Inherits:
-
Object
- Object
- Flapjack::Data::Metrics
- Extended by:
- ActiveModel::Naming
- Includes:
- Extensions::ShortName, Swagger::Blocks
- Defined in:
- lib/flapjack/data/metrics.rb
Class Method Summary collapse
Instance Method Summary collapse
- #check_counts ⇒ Object
- #check_freshness ⇒ Object
- #event_queue_length ⇒ Object
- #processed_events ⇒ Object
- #total_keys ⇒ Object
Class Method Details
.jsonapi_associations ⇒ Object
189 190 191 |
# File 'lib/flapjack/data/metrics.rb', line 189 def self.jsonapi_associations @jsonapi_associations ||= {} end |
.jsonapi_methods ⇒ Object
179 180 181 182 183 184 185 186 187 |
# 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 ⇒ Object
174 175 176 177 |
# File 'lib/flapjack/data/metrics.rb', line 174 def self.swagger_included_classes # hack -- hardcoding for now [] end |
Instance Method Details
#check_counts ⇒ Object
64 65 66 67 68 69 70 |
# 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 ⇒ Object
38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 |
# 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 ⇒ Object
23 24 25 |
# File 'lib/flapjack/data/metrics.rb', line 23 def event_queue_length Flapjack.redis.llen('events') end |
#processed_events ⇒ Object
27 28 29 30 31 32 33 34 35 36 |
# 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 |