class CloudwatchCleanup
Public Class Methods
run()
click to toggle source
# File lib/modules/cloudwatch.rb, line 2 def self.run CloudwatchCleanup.new.cleaup_alarms end
Public Instance Methods
cleaup_alarms()
click to toggle source
# File lib/modules/cloudwatch.rb, line 6 def cleaup_alarms oa = orphaned_alarms.map(&:alarm_name) if oa.any? puts 'Deleting alarms: ' + oa.join(', ') cloudwatch.delete_alarms alarm_names: oa return end puts 'No alarms to clean up' end
Private Instance Methods
cloudwatch()
click to toggle source
# File lib/modules/cloudwatch.rb, line 53 def cloudwatch @cloudwatch ||= Aws::CloudWatch::Client.new end
db_names()
click to toggle source
# File lib/modules/cloudwatch.rb, line 41 def db_names @db_names ||= rds.describe_db_instances.db_instances.map(&:db_instance_identifier) end
dimension_in_use?(dimension)
click to toggle source
# File lib/modules/cloudwatch.rb, line 27 def dimension_in_use?(dimension) case dimension.name when 'InstanceId' instance_ids.include? dimension.value when 'QueueName' queue_names.include? dimension.value when 'DBInstanceIdentifier' db_names.include? dimension.value else puts "Unsupported dimension: #{dimension.name}" true end end
insufficient_data_alarms()
click to toggle source
# File lib/modules/cloudwatch.rb, line 49 def insufficient_data_alarms cloudwatch.describe_alarms(state_value: 'INSUFFICIENT_DATA').metric_alarms end
orphaned_alarms()
click to toggle source
# File lib/modules/cloudwatch.rb, line 20 def orphaned_alarms insufficient_data_alarms.select do |alarm| alarm.dimensions.any? && !alarm.dimensions.find { |dimension| dimension_in_use? dimension } end end
queue_names()
click to toggle source
# File lib/modules/cloudwatch.rb, line 45 def queue_names @queue_names ||= sqs.list_queues.queue_urls.map { |q| URI(q).path.split('/')[2..-1].join('/') } end
rds()
click to toggle source
# File lib/modules/cloudwatch.rb, line 61 def rds @rds ||= Aws::RDS::Client.new end
sqs()
click to toggle source
# File lib/modules/cloudwatch.rb, line 57 def sqs @sqs ||= Aws::SQS::Client.new end