bin/check-sqs-messages.rb in sensu-plugins-aws-4.0.0 vs bin/check-sqs-messages.rb in sensu-plugins-aws-4.1.0

- old
+ new

@@ -44,11 +44,11 @@ default: 'us-east-1' option :queue, short: '-q SQS_QUEUE', long: '--queue SQS_QUEUE', - description: 'The name of the SQS you want to check the number of messages for', + description: 'A comma seperated list of the SQS queue(s) you want to check the number of messages for', default: '' option :prefix, short: '-p PREFIX', long: '--prefix PREFIX', @@ -97,23 +97,36 @@ def run Aws.config.update(aws_config) sqs = Aws::SQS::Resource.new - if config[:prefix] == '' - if config[:queue] == '' + if config[:prefix].empty? + if config[:queue].empty? critical 'Error, either QUEUE or PREFIX must be specified' end - url = sqs.get_queue_by_name(queue_name: config[:queue]).url - messages = sqs.client.get_queue_attributes(queue_url: url, attribute_names: ['All']).attributes[config[:metric]].to_i + warnings = [] + crits = [] + passing = [] + queues = config[:queue].split(',') + queues.each do |q| + url = sqs.get_queue_by_name(queue_name: q).url + messages = sqs.client.get_queue_attributes(queue_url: url, attribute_names: ['All']).attributes[config[:metric]].to_i - if (config[:crit_under] >= 0 && messages < config[:crit_under]) || (config[:crit_over] >= 0 && messages > config[:crit_over]) - critical "#{messages} message(s) in #{config[:queue]} queue" - elsif (config[:warn_under] >= 0 && messages < config[:warn_under]) || (config[:warn_over] >= 0 && messages > config[:warn_over]) - warning "#{messages} message(s) in #{config[:queue]} queue" + if (config[:crit_under] >= 0 && messages < config[:crit_under]) || (config[:crit_over] >= 0 && messages > config[:crit_over]) + crits << "#{messages} message(s) in #{q}" + elsif (config[:warn_under] >= 0 && messages < config[:warn_under]) || (config[:warn_over] >= 0 && messages > config[:warn_over]) + warnings << "#{messages} message(s) in #{q}" + else + passing << "#{messages} message(s) in #{q}" + end + end + if crits.any? + critical crits.join(', ').to_s + elsif warnings.any? + warning warnings.join(', ').to_s else - ok "#{messages} messages in #{config[:queue]} queue" + ok "all queue(s): #{queues} are OK" end else warn = false crit = false queues = []