Module: AwsReporting::Alarm
- Defined in:
- lib/aws-reporting/alarm.rb
Class Method Summary collapse
- .alarmed?(history) ⇒ Boolean
- .get_alarm_info(region, alarm) ⇒ Object
- .get_alarms ⇒ Object
- .get_status(alarm) ⇒ Object
- .serialize(dimensions) ⇒ Object
Class Method Details
.alarmed?(history) ⇒ Boolean
16 17 18 19 20 21 22 23 24 25 26 27 |
# File 'lib/aws-reporting/alarm.rb', line 16 def alarmed?(history) return false unless history.history_item_type == 'StateUpdate' data = JSON.parse(history.history_data) if data["oldState"]["stateValue"] == 'INSUFFICIENT_DATA' and data["newState"]["stateValue"] == 'OK' false elsif data["oldState"]["stateValue"] == 'OK' and data["newState"]["stateValue"] == 'INSUFFICIENT_DATA' false else true end end |
.get_alarm_info(region, alarm) ⇒ Object
7 8 9 10 11 12 13 14 |
# File 'lib/aws-reporting/alarm.rb', line 7 def get_alarm_info(region, alarm) info = {:name => alarm.name, :region => region, :namespace => alarm.namespace, :dimensions => alarm.dimensions, :metric_name => alarm.metric_name, :status => get_status(alarm)} end |
.get_alarms ⇒ Object
35 36 37 38 39 40 41 42 43 44 45 |
# File 'lib/aws-reporting/alarm.rb', line 35 def get_alarms() alarms = [] AWS.regions.each{|r| Config.update_region(r.name) cw = AWS::CloudWatch.new cw.alarms.each do |alarm| alarms << get_alarm_info(r.name, alarm) end } alarms.sort_by{|alarm| [alarm[:namespace], serialize(alarm[:dimensions]), alarm[:metric_name], alarm[:name]].join(' ')} end |
.get_status(alarm) ⇒ Object
29 30 31 32 33 |
# File 'lib/aws-reporting/alarm.rb', line 29 def get_status(alarm) return :ALARM if alarm.state_value == 'ALARM' return :ALARM if alarm.history_items.to_a.select{|history| alarmed?(history)}.length > 0 return :OK end |
.serialize(dimensions) ⇒ Object
3 4 5 |
# File 'lib/aws-reporting/alarm.rb', line 3 def serialize(dimensions) dimensions.sort_by{|dimension| dimension[:name]}.map{|dimension| dimension[:name] + "=>" + dimension[:value]}.join(',') end |