sensu-plugins-aws 2.1.1 → 2.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +8 -8
 - data/CHANGELOG.md +16 -3
 - data/README.md +3 -0
 - data/bin/check-ebs-snapshots.rb +15 -5
 - data/bin/check-elasticache-failover.rb +113 -0
 - data/bin/check-rds-events.rb +26 -3
 - data/bin/check-rds.rb +5 -5
 - data/bin/check-sensu-client.rb +175 -0
 - data/bin/check-sqs-messages.rb +47 -9
 - data/bin/check-trustedadvisor-service-limits.rb +82 -0
 - data/bin/metrics-elasticache.rb +16 -3
 - data/bin/metrics-sqs.rb +32 -11
 - data/lib/sensu-plugins-aws/version.rb +2 -2
 - metadata +9 -35
 - checksums.yaml.gz.sig +0 -0
 - data.tar.gz.sig +0 -0
 - metadata.gz.sig +0 -0
 
    
        checksums.yaml
    CHANGED
    
    | 
         @@ -1,15 +1,15 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            ---
         
     | 
| 
       2 
2 
     | 
    
         
             
            !binary "U0hBMQ==":
         
     | 
| 
       3 
3 
     | 
    
         
             
              metadata.gz: !binary |-
         
     | 
| 
       4 
     | 
    
         
            -
                 
     | 
| 
      
 4 
     | 
    
         
            +
                ZGMyOTMzMDljMzFjOTExZTdkZDhkOWNkOGUyN2I4ZjY1Yzk0MTRmNw==
         
     | 
| 
       5 
5 
     | 
    
         
             
              data.tar.gz: !binary |-
         
     | 
| 
       6 
     | 
    
         
            -
                 
     | 
| 
      
 6 
     | 
    
         
            +
                YzAyNzdkM2EwOWM0M2YzOTdjZGViOTMyMWRmMjg1Zjc4NGQ1OTEwNA==
         
     | 
| 
       7 
7 
     | 
    
         
             
            SHA512:
         
     | 
| 
       8 
8 
     | 
    
         
             
              metadata.gz: !binary |-
         
     | 
| 
       9 
     | 
    
         
            -
                 
     | 
| 
       10 
     | 
    
         
            -
                 
     | 
| 
       11 
     | 
    
         
            -
                 
     | 
| 
      
 9 
     | 
    
         
            +
                ZGJhNjQ5ODEwZDZiMTUxNmFkOWQxNzZjODJjZGI2YmNlMDk2NGY3Zjc2YmQ3
         
     | 
| 
      
 10 
     | 
    
         
            +
                ZDA1ZDQwNWE0Y2IxZTBhNzUwZjYyZDdkYzk3NzMxMzhkOWNkOTY3MzNlYTI2
         
     | 
| 
      
 11 
     | 
    
         
            +
                OWYwYzBhZTVmMTFkNjU1MzU5Y2UyMjdlOTNmMDExZjg2MzE4OTg=
         
     | 
| 
       12 
12 
     | 
    
         
             
              data.tar.gz: !binary |-
         
     | 
| 
       13 
     | 
    
         
            -
                 
     | 
| 
       14 
     | 
    
         
            -
                 
     | 
| 
       15 
     | 
    
         
            -
                 
     | 
| 
      
 13 
     | 
    
         
            +
                NjE1NDA1Mzc0NjdlNDYxMWJjZWM5OWJjYzBlZDI4NGNjODMyOTI1OGQyYTFl
         
     | 
| 
      
 14 
     | 
    
         
            +
                ZTllNzBkODViMWMyNzA0MzEyZDQwYjY4YjkzNTc4YTNmYTZlZTgwMWRkNTg4
         
     | 
| 
      
 15 
     | 
    
         
            +
                ZjE1NjY2NmNhNThhZmU1YjIwODRhNjM0YzhjMDk3ODBlZGFhOTU=
         
     | 
    
        data/CHANGELOG.md
    CHANGED
    
    | 
         @@ -3,7 +3,19 @@ This project adheres to [Semantic Versioning](http://semver.org/). 
     | 
|
| 
       3 
3 
     | 
    
         | 
| 
       4 
4 
     | 
    
         
             
            This CHANGELOG follows the format listed at [Keep A Changelog](http://keepachangelog.com/)
         
     | 
| 
       5 
5 
     | 
    
         | 
| 
       6 
     | 
    
         
            -
            ## Unreleased
         
     | 
| 
      
 6 
     | 
    
         
            +
            ## [Unreleased]
         
     | 
| 
      
 7 
     | 
    
         
            +
             
     | 
| 
      
 8 
     | 
    
         
            +
            ## [2.2.0] - 2016-02-25
         
     | 
| 
      
 9 
     | 
    
         
            +
            ### Added
         
     | 
| 
      
 10 
     | 
    
         
            +
            - check-ebs-snapshots.rb: added -i flag to ignore volumes with an IGNORE_BACKUP tag
         
     | 
| 
      
 11 
     | 
    
         
            +
            - check-sensu-client.rb Ensures that ec2 instances are registered with Sensu. 
         
     | 
| 
      
 12 
     | 
    
         
            +
            - check-trustedadvisor-service-limits.rb: New check for service limits based on Trusted Advisor API 
         
     | 
| 
      
 13 
     | 
    
         
            +
            - check-sqs-messages.rb,metrics-sqs.rb: Allow specifying queues by prefix with -p option
         
     | 
| 
      
 14 
     | 
    
         
            +
            - check-rds-events.rb: Add option to check a specific RDS instance
         
     | 
| 
      
 15 
     | 
    
         
            +
            - Add plugin check-elasticache-failover.rb that checks if an Elasticache node is in the primary state
         
     | 
| 
      
 16 
     | 
    
         
            +
             
     | 
| 
      
 17 
     | 
    
         
            +
            ### Fixed
         
     | 
| 
      
 18 
     | 
    
         
            +
            - metrics-elasticache.rb: Gather node metrics when requested
         
     | 
| 
       7 
19 
     | 
    
         | 
| 
       8 
20 
     | 
    
         
             
            ## [2.1.1] - 2016-02-05
         
     | 
| 
       9 
21 
     | 
    
         
             
            ### Added
         
     | 
| 
         @@ -124,8 +136,9 @@ WARNING:  This release contains major breaking changes that will impact all user 
     | 
|
| 
       124 
136 
     | 
    
         
             
            ### Added
         
     | 
| 
       125 
137 
     | 
    
         
             
            - initial release
         
     | 
| 
       126 
138 
     | 
    
         | 
| 
       127 
     | 
    
         
            -
            [ 
     | 
| 
       128 
     | 
    
         
            -
            [2. 
     | 
| 
      
 139 
     | 
    
         
            +
            [Unreleased]: https://github.com/sensu-plugins/sensu-plugins-aws/compare/2.2.0...HEAD
         
     | 
| 
      
 140 
     | 
    
         
            +
            [2.2.0]: https://github.com/sensu-plugins/sensu-plugins-aws/compare/v2.1.1...2.2.0
         
     | 
| 
      
 141 
     | 
    
         
            +
            [2.1.1]: https://github.com/sensu-plugins/sensu-plugins-aws/compare/2.1.0...v2.1.1
         
     | 
| 
       129 
142 
     | 
    
         
             
            [2.1.0]: https://github.com/sensu-plugins/sensu-plugins-aws/compare/2.0.1...2.1.0
         
     | 
| 
       130 
143 
     | 
    
         
             
            [2.0.1]: https://github.com/sensu-plugins/sensu-plugins-aws/compare/2.0.0...2.0.1
         
     | 
| 
       131 
144 
     | 
    
         
             
            [2.0.0]: https://github.com/sensu-plugins/sensu-plugins-aws/compare/1.2.0...2.0.0
         
     | 
    
        data/README.md
    CHANGED
    
    | 
         @@ -30,6 +30,8 @@ 
     | 
|
| 
       30 
30 
     | 
    
         | 
| 
       31 
31 
     | 
    
         
             
            **check-eip-allocation.rb**
         
     | 
| 
       32 
32 
     | 
    
         | 
| 
      
 33 
     | 
    
         
            +
            **check-elasticache-failover.rb**
         
     | 
| 
      
 34 
     | 
    
         
            +
             
     | 
| 
       33 
35 
     | 
    
         
             
            **check-elb-certs.rb**
         
     | 
| 
       34 
36 
     | 
    
         | 
| 
       35 
37 
     | 
    
         
             
            **check-elb-health-fog.rb**
         
     | 
| 
         @@ -102,6 +104,7 @@ 
     | 
|
| 
       102 
104 
     | 
    
         
             
            * /bin/check-ebs-snapshots.rb
         
     | 
| 
       103 
105 
     | 
    
         
             
            * /bin/check-ec2-filter.rb
         
     | 
| 
       104 
106 
     | 
    
         
             
            * /bin/check-ec2-network.rb
         
     | 
| 
      
 107 
     | 
    
         
            +
            * /bin/check-elasticache-failover.rb
         
     | 
| 
       105 
108 
     | 
    
         
             
            * /bin/check-elb-certs.rb
         
     | 
| 
       106 
109 
     | 
    
         
             
            * /bin/check-elb-health-fog.rb
         
     | 
| 
       107 
110 
     | 
    
         
             
            * /bin/check-elb-health-sdk.rb
         
     | 
    
        data/bin/check-ebs-snapshots.rb
    CHANGED
    
    | 
         @@ -18,8 +18,12 @@ 
     | 
|
| 
       18 
18 
     | 
    
         
             
            # USAGE:
         
     | 
| 
       19 
19 
     | 
    
         
             
            #   ./check-ebs-snapshots.rb -r ${you_region}
         
     | 
| 
       20 
20 
     | 
    
         
             
            #   ./check-ebs-snapshots.rb -r ${you_region} -p 1
         
     | 
| 
      
 21 
     | 
    
         
            +
            #   ./check-ebs-snapshots.rb -r ${you_region} -p -i
         
     | 
| 
      
 22 
     | 
    
         
            +
            #   ./check-ebs-snapshots.rb -r ${you_region} -i
         
     | 
| 
       21 
23 
     | 
    
         
             
            #
         
     | 
| 
       22 
24 
     | 
    
         
             
            # NOTES:
         
     | 
| 
      
 25 
     | 
    
         
            +
            #   When using -i flag any volume that has a tag-key of "IGNORE_BACKUP" will
         
     | 
| 
      
 26 
     | 
    
         
            +
            #   be ignored.
         
     | 
| 
       23 
27 
     | 
    
         
             
            #
         
     | 
| 
       24 
28 
     | 
    
         
             
            # LICENSE:
         
     | 
| 
       25 
29 
     | 
    
         
             
            #   Shane Starcher <shane.starcher@gmail.com>
         
     | 
| 
         @@ -45,11 +49,18 @@ class CheckEbsSnapshots < Sensu::Plugin::Check::CLI 
     | 
|
| 
       45 
49 
     | 
    
         
             
                     description: 'AWS region',
         
     | 
| 
       46 
50 
     | 
    
         
             
                     default: 'us-east-1'
         
     | 
| 
       47 
51 
     | 
    
         | 
| 
      
 52 
     | 
    
         
            +
              option :check_ignored,
         
     | 
| 
      
 53 
     | 
    
         
            +
                     short:       '-i',
         
     | 
| 
      
 54 
     | 
    
         
            +
                     long:        '--ignore',
         
     | 
| 
      
 55 
     | 
    
         
            +
                     description: 'mark as true to ignore volumes with an IGNORE_BACKUP tag',
         
     | 
| 
      
 56 
     | 
    
         
            +
                     default: false,
         
     | 
| 
      
 57 
     | 
    
         
            +
                     boolean: true
         
     | 
| 
      
 58 
     | 
    
         
            +
             
     | 
| 
       48 
59 
     | 
    
         
             
              def run
         
     | 
| 
       49 
60 
     | 
    
         
             
                errors = []
         
     | 
| 
       50 
     | 
    
         
            -
                ec2 = Aws::EC2::Client.new
         
     | 
| 
      
 61 
     | 
    
         
            +
                @ec2 = Aws::EC2::Client.new
         
     | 
| 
       51 
62 
     | 
    
         | 
| 
       52 
     | 
    
         
            -
                volumes = ec2.describe_volumes(
         
     | 
| 
      
 63 
     | 
    
         
            +
                volumes = @ec2.describe_volumes(
         
     | 
| 
       53 
64 
     | 
    
         
             
                  filters: [
         
     | 
| 
       54 
65 
     | 
    
         
             
                    {
         
     | 
| 
       55 
66 
     | 
    
         
             
                      name: 'attachment.status',
         
     | 
| 
         @@ -61,11 +72,10 @@ class CheckEbsSnapshots < Sensu::Plugin::Check::CLI 
     | 
|
| 
       61 
72 
     | 
    
         
             
                    }
         
     | 
| 
       62 
73 
     | 
    
         
             
                  ]
         
     | 
| 
       63 
74 
     | 
    
         
             
                )
         
     | 
| 
       64 
     | 
    
         
            -
             
     | 
| 
       65 
75 
     | 
    
         
             
                volumes[:volumes].each do |volume|
         
     | 
| 
       66 
76 
     | 
    
         
             
                  tags = volume[:tags].map { |a| Hash[*a] }.reduce(:merge) || {}
         
     | 
| 
       67 
     | 
    
         
            -
             
     | 
| 
       68 
     | 
    
         
            -
                  snapshots = ec2.describe_snapshots(
         
     | 
| 
      
 77 
     | 
    
         
            +
                  next if config[:check_ignored] && tags.key?('IGNORE_BACKUP')
         
     | 
| 
      
 78 
     | 
    
         
            +
                  snapshots = @ec2.describe_snapshots(
         
     | 
| 
       69 
79 
     | 
    
         
             
                    filters: [
         
     | 
| 
       70 
80 
     | 
    
         
             
                      {
         
     | 
| 
       71 
81 
     | 
    
         
             
                        name: 'volume-id',
         
     | 
| 
         @@ -0,0 +1,113 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            #! /usr/bin/env ruby
         
     | 
| 
      
 2 
     | 
    
         
            +
            #
         
     | 
| 
      
 3 
     | 
    
         
            +
            #   check-elasticache-failover.rb
         
     | 
| 
      
 4 
     | 
    
         
            +
            #
         
     | 
| 
      
 5 
     | 
    
         
            +
            # DESCRIPTION:
         
     | 
| 
      
 6 
     | 
    
         
            +
            #   Checks if specified ElastiCache node is `primary` state.
         
     | 
| 
      
 7 
     | 
    
         
            +
            #
         
     | 
| 
      
 8 
     | 
    
         
            +
            # OUTPUT:
         
     | 
| 
      
 9 
     | 
    
         
            +
            #   CheckElastiCacheFailover OK: Node `mynode-001` (in replication group `my-group-1`, node group `0001`) is `primary`.
         
     | 
| 
      
 10 
     | 
    
         
            +
            #   or
         
     | 
| 
      
 11 
     | 
    
         
            +
            #   CheckElastiCacheFailover CRITICAL: Node `mynode-001` (in replication group `my-group-1`, node group `0001`) is **not** `primary`.
         
     | 
| 
      
 12 
     | 
    
         
            +
            #
         
     | 
| 
      
 13 
     | 
    
         
            +
            # PLATFORMS:
         
     | 
| 
      
 14 
     | 
    
         
            +
            #   Linux, Windows, BSD, Solaris, etc
         
     | 
| 
      
 15 
     | 
    
         
            +
            #
         
     | 
| 
      
 16 
     | 
    
         
            +
            # DEPENDENCIES:
         
     | 
| 
      
 17 
     | 
    
         
            +
            #   gem: sensu-plugin
         
     | 
| 
      
 18 
     | 
    
         
            +
            #   gem: aws-sdk >= 2
         
     | 
| 
      
 19 
     | 
    
         
            +
            #
         
     | 
| 
      
 20 
     | 
    
         
            +
            # USAGE:
         
     | 
| 
      
 21 
     | 
    
         
            +
            #   check-elasticache-failover.rb --region <your region> --replication-group <yours> --node-group <yours> --primary-node <yours>
         
     | 
| 
      
 22 
     | 
    
         
            +
            #
         
     | 
| 
      
 23 
     | 
    
         
            +
            # NOTES:
         
     | 
| 
      
 24 
     | 
    
         
            +
            #
         
     | 
| 
      
 25 
     | 
    
         
            +
            # LICENSE:
         
     | 
| 
      
 26 
     | 
    
         
            +
            #   y13i <email@y13i.com>
         
     | 
| 
      
 27 
     | 
    
         
            +
            #   Released under the same terms as Sensu (the MIT license); see LICENSE
         
     | 
| 
      
 28 
     | 
    
         
            +
            #   for details.
         
     | 
| 
      
 29 
     | 
    
         
            +
            #
         
     | 
| 
      
 30 
     | 
    
         
            +
             
     | 
| 
      
 31 
     | 
    
         
            +
            require 'sensu-plugin/check/cli'
         
     | 
| 
      
 32 
     | 
    
         
            +
            require 'aws-sdk'
         
     | 
| 
      
 33 
     | 
    
         
            +
            require 'sensu-plugins-aws/common'
         
     | 
| 
      
 34 
     | 
    
         
            +
             
     | 
| 
      
 35 
     | 
    
         
            +
            class CheckElastiCacheFailover < Sensu::Plugin::Check::CLI
         
     | 
| 
      
 36 
     | 
    
         
            +
              VERSION = '0.0.1'.freeze
         
     | 
| 
      
 37 
     | 
    
         
            +
             
     | 
| 
      
 38 
     | 
    
         
            +
              option :profile,
         
     | 
| 
      
 39 
     | 
    
         
            +
                     description: 'Profile name of AWS shared credential file entry.',
         
     | 
| 
      
 40 
     | 
    
         
            +
                     long:        '--profile PROFILE',
         
     | 
| 
      
 41 
     | 
    
         
            +
                     short:       '-p PROFILE'
         
     | 
| 
      
 42 
     | 
    
         
            +
             
     | 
| 
      
 43 
     | 
    
         
            +
              option :aws_region,
         
     | 
| 
      
 44 
     | 
    
         
            +
                     description: 'AWS region.',
         
     | 
| 
      
 45 
     | 
    
         
            +
                     short:       '-r REGION',
         
     | 
| 
      
 46 
     | 
    
         
            +
                     long:        '--region REGION'
         
     | 
| 
      
 47 
     | 
    
         
            +
             
     | 
| 
      
 48 
     | 
    
         
            +
              option :severity,
         
     | 
| 
      
 49 
     | 
    
         
            +
                     description: 'Critical or Warning.',
         
     | 
| 
      
 50 
     | 
    
         
            +
                     short:       '-s SEVERITY',
         
     | 
| 
      
 51 
     | 
    
         
            +
                     long:        '--severity SEVERITY',
         
     | 
| 
      
 52 
     | 
    
         
            +
                     proc:        :intern.to_proc,
         
     | 
| 
      
 53 
     | 
    
         
            +
                     default:     :critical
         
     | 
| 
      
 54 
     | 
    
         
            +
             
     | 
| 
      
 55 
     | 
    
         
            +
              option :replication_group,
         
     | 
| 
      
 56 
     | 
    
         
            +
                     description: 'Replication group to check.',
         
     | 
| 
      
 57 
     | 
    
         
            +
                     long:        '--replication-group ID',
         
     | 
| 
      
 58 
     | 
    
         
            +
                     short:       '-g ID'
         
     | 
| 
      
 59 
     | 
    
         
            +
             
     | 
| 
      
 60 
     | 
    
         
            +
              option :node_group,
         
     | 
| 
      
 61 
     | 
    
         
            +
                     description: 'Node group to check.',
         
     | 
| 
      
 62 
     | 
    
         
            +
                     long:        '--node-group ID',
         
     | 
| 
      
 63 
     | 
    
         
            +
                     short:       '-n ID'
         
     | 
| 
      
 64 
     | 
    
         
            +
             
     | 
| 
      
 65 
     | 
    
         
            +
              option :primary_node,
         
     | 
| 
      
 66 
     | 
    
         
            +
                     description: 'Cluster name that should be primary.',
         
     | 
| 
      
 67 
     | 
    
         
            +
                     long:        '--primary-node NAME',
         
     | 
| 
      
 68 
     | 
    
         
            +
                     short:       '-c NAME'
         
     | 
| 
      
 69 
     | 
    
         
            +
             
     | 
| 
      
 70 
     | 
    
         
            +
              include Common
         
     | 
| 
      
 71 
     | 
    
         
            +
             
     | 
| 
      
 72 
     | 
    
         
            +
              def run
         
     | 
| 
      
 73 
     | 
    
         
            +
                replication_group = elasticache.client.describe_replication_groups.replication_groups.find do |g|
         
     | 
| 
      
 74 
     | 
    
         
            +
                  g.replication_group_id == config[:replication_group]
         
     | 
| 
      
 75 
     | 
    
         
            +
                end
         
     | 
| 
      
 76 
     | 
    
         
            +
             
     | 
| 
      
 77 
     | 
    
         
            +
                unknown 'Replication group not found.' if replication_group.nil?
         
     | 
| 
      
 78 
     | 
    
         
            +
             
     | 
| 
      
 79 
     | 
    
         
            +
                node_group = replication_group.node_groups.find do |g|
         
     | 
| 
      
 80 
     | 
    
         
            +
                  g.node_group_id == config[:node_group]
         
     | 
| 
      
 81 
     | 
    
         
            +
                end
         
     | 
| 
      
 82 
     | 
    
         
            +
             
     | 
| 
      
 83 
     | 
    
         
            +
                unknown 'Node group not found.' if node_group.nil?
         
     | 
| 
      
 84 
     | 
    
         
            +
             
     | 
| 
      
 85 
     | 
    
         
            +
                node = node_group.node_group_members.find do |n|
         
     | 
| 
      
 86 
     | 
    
         
            +
                  n.cache_cluster_id == config[:primary_node]
         
     | 
| 
      
 87 
     | 
    
         
            +
                end
         
     | 
| 
      
 88 
     | 
    
         
            +
             
     | 
| 
      
 89 
     | 
    
         
            +
                unknown 'Node not found.' if node.nil?
         
     | 
| 
      
 90 
     | 
    
         
            +
             
     | 
| 
      
 91 
     | 
    
         
            +
                message = "Node `#{config[:primary_node]}` (in replication group `#{config[:replication_group]}`, node group `#{config[:node_group]}`) is "
         
     | 
| 
      
 92 
     | 
    
         
            +
             
     | 
| 
      
 93 
     | 
    
         
            +
                if node.current_role == 'primary'
         
     | 
| 
      
 94 
     | 
    
         
            +
                  message += '`primary`.'
         
     | 
| 
      
 95 
     | 
    
         
            +
                  ok message
         
     | 
| 
      
 96 
     | 
    
         
            +
                else
         
     | 
| 
      
 97 
     | 
    
         
            +
                  message += '**not** `primary`.'
         
     | 
| 
      
 98 
     | 
    
         
            +
                  send config[:severity], message
         
     | 
| 
      
 99 
     | 
    
         
            +
                end
         
     | 
| 
      
 100 
     | 
    
         
            +
              end
         
     | 
| 
      
 101 
     | 
    
         
            +
             
     | 
| 
      
 102 
     | 
    
         
            +
              private
         
     | 
| 
      
 103 
     | 
    
         
            +
             
     | 
| 
      
 104 
     | 
    
         
            +
              def elasticache
         
     | 
| 
      
 105 
     | 
    
         
            +
                return @elasticache if @elasticache
         
     | 
| 
      
 106 
     | 
    
         
            +
             
     | 
| 
      
 107 
     | 
    
         
            +
                c = {}
         
     | 
| 
      
 108 
     | 
    
         
            +
                c.update aws_config
         
     | 
| 
      
 109 
     | 
    
         
            +
                c.update(profile: config[:profile]) if config[:profile]
         
     | 
| 
      
 110 
     | 
    
         
            +
             
     | 
| 
      
 111 
     | 
    
         
            +
                @elasticache = Aws::ElastiCache::Resource.new(c)
         
     | 
| 
      
 112 
     | 
    
         
            +
              end
         
     | 
| 
      
 113 
     | 
    
         
            +
            end
         
     | 
    
        data/bin/check-rds-events.rb
    CHANGED
    
    | 
         @@ -23,7 +23,14 @@ 
     | 
|
| 
       23 
23 
     | 
    
         
             
            #   gem: sensu-plugin
         
     | 
| 
       24 
24 
     | 
    
         
             
            #
         
     | 
| 
       25 
25 
     | 
    
         
             
            # USAGE:
         
     | 
| 
       26 
     | 
    
         
            -
            #   
     | 
| 
      
 26 
     | 
    
         
            +
            #  Check's a specific RDS instance in a specific region for critical events
         
     | 
| 
      
 27 
     | 
    
         
            +
            #  check-rds-events.rb -r ${your_region} -k ${your_aws_secret_access_key} -a ${your_aws_access_key} -i ${your_rds_instance_id_name}
         
     | 
| 
      
 28 
     | 
    
         
            +
            #
         
     | 
| 
      
 29 
     | 
    
         
            +
            #  Checks all RDS instances in a specific region
         
     | 
| 
      
 30 
     | 
    
         
            +
            #  check-rds-events.rb -r ${your_region} -k ${your_aws_secret_access_key} -a ${your_aws_access_key}
         
     | 
| 
      
 31 
     | 
    
         
            +
            #
         
     | 
| 
      
 32 
     | 
    
         
            +
            #  Checks all RDS instances in a specific region, should be using IAM role
         
     | 
| 
      
 33 
     | 
    
         
            +
            #  check-rds-events.rb -r ${your_region}
         
     | 
| 
       27 
34 
     | 
    
         
             
            #
         
     | 
| 
       28 
35 
     | 
    
         
             
            # NOTES:
         
     | 
| 
       29 
36 
     | 
    
         
             
            #
         
     | 
| 
         @@ -55,6 +62,11 @@ class CheckRDSEvents < Sensu::Plugin::Check::CLI 
     | 
|
| 
       55 
62 
     | 
    
         
             
                     description: 'AWS Region (defaults to us-east-1).',
         
     | 
| 
       56 
63 
     | 
    
         
             
                     default:     'us-east-1'
         
     | 
| 
       57 
64 
     | 
    
         | 
| 
      
 65 
     | 
    
         
            +
              option :db_instance_id,
         
     | 
| 
      
 66 
     | 
    
         
            +
                     short:       '-i N',
         
     | 
| 
      
 67 
     | 
    
         
            +
                     long:        '--db-instance-id NAME',
         
     | 
| 
      
 68 
     | 
    
         
            +
                     description: 'DB instance identifier'
         
     | 
| 
      
 69 
     | 
    
         
            +
             
     | 
| 
       58 
70 
     | 
    
         
             
              def aws_config
         
     | 
| 
       59 
71 
     | 
    
         
             
                { access_key_id: config[:aws_access_key],
         
     | 
| 
       60 
72 
     | 
    
         
             
                  secret_access_key: config[:aws_secret_access_key],
         
     | 
| 
         @@ -75,8 +87,18 @@ class CheckRDSEvents < Sensu::Plugin::Check::CLI 
     | 
|
| 
       75 
87 
     | 
    
         
             
                rds = AWS::RDS::Client.new aws_config
         
     | 
| 
       76 
88 
     | 
    
         | 
| 
       77 
89 
     | 
    
         
             
                begin
         
     | 
| 
       78 
     | 
    
         
            -
                   
     | 
| 
       79 
     | 
    
         
            -
             
     | 
| 
      
 90 
     | 
    
         
            +
                  if !config[:db_instance_id].nil? && !config[:db_instance_id].empty?
         
     | 
| 
      
 91 
     | 
    
         
            +
                    db_instance = rds.describe_db_instances(db_instance_identifier: config[:db_instance_id])
         
     | 
| 
      
 92 
     | 
    
         
            +
                    if db_instance.nil? || db_instance.empty?
         
     | 
| 
      
 93 
     | 
    
         
            +
                      unknown "#{config[:db_instance_id]} instance not found"
         
     | 
| 
      
 94 
     | 
    
         
            +
                    else
         
     | 
| 
      
 95 
     | 
    
         
            +
                      clusters = [config[:db_instance_id]]
         
     | 
| 
      
 96 
     | 
    
         
            +
                    end
         
     | 
| 
      
 97 
     | 
    
         
            +
                  else
         
     | 
| 
      
 98 
     | 
    
         
            +
                    # fetch all clusters identifiers
         
     | 
| 
      
 99 
     | 
    
         
            +
                    clusters = rds.describe_db_instances[:db_instances].map { |db| db[:db_instance_identifier] }
         
     | 
| 
      
 100 
     | 
    
         
            +
                  end
         
     | 
| 
      
 101 
     | 
    
         
            +
             
     | 
| 
       80 
102 
     | 
    
         
             
                  maint_clusters = []
         
     | 
| 
       81 
103 
     | 
    
         | 
| 
       82 
104 
     | 
    
         
             
                  # fetch the last 15 minutes of events for each cluster
         
     | 
| 
         @@ -96,6 +118,7 @@ class CheckRDSEvents < Sensu::Plugin::Check::CLI 
     | 
|
| 
       96 
118 
     | 
    
         
             
                    cluster_name_long = "#{cluster_name} (#{aws_config[:region]}) #{events_record[:events][-1][:message]}"
         
     | 
| 
       97 
119 
     | 
    
         
             
                    maint_clusters.push(cluster_name_long)
         
     | 
| 
       98 
120 
     | 
    
         
             
                  end
         
     | 
| 
      
 121 
     | 
    
         
            +
             
     | 
| 
       99 
122 
     | 
    
         
             
                rescue => e
         
     | 
| 
       100 
123 
     | 
    
         
             
                  unknown "An error occurred processing AWS RDS API: #{e.message}"
         
     | 
| 
       101 
124 
     | 
    
         
             
                end
         
     | 
    
        data/bin/check-rds.rb
    CHANGED
    
    | 
         @@ -134,8 +134,8 @@ class CheckRDS < Sensu::Plugin::Check::CLI 
     | 
|
| 
       134 
134 
     | 
    
         
             
              end
         
     | 
| 
       135 
135 
     | 
    
         | 
| 
       136 
136 
     | 
    
         
             
              def find_db_instance(id)
         
     | 
| 
       137 
     | 
    
         
            -
                db = rds.describe_db_instances.db_instances. 
     | 
| 
       138 
     | 
    
         
            -
                unknown 'DB instance not found.' if db. 
     | 
| 
      
 137 
     | 
    
         
            +
                db = rds.describe_db_instances.db_instances.detect { |db_instance| db_instance.db_instance_identifier == id }
         
     | 
| 
      
 138 
     | 
    
         
            +
                unknown 'DB instance not found.' if db.nil?
         
     | 
| 
       139 
139 
     | 
    
         
             
                db
         
     | 
| 
       140 
140 
     | 
    
         
             
              end
         
     | 
| 
       141 
141 
     | 
    
         | 
| 
         @@ -146,7 +146,7 @@ class CheckRDS < Sensu::Plugin::Check::CLI 
     | 
|
| 
       146 
146 
     | 
    
         
             
                  dimensions: [
         
     | 
| 
       147 
147 
     | 
    
         
             
                    {
         
     | 
| 
       148 
148 
     | 
    
         
             
                      name: 'DBInstanceIdentifier',
         
     | 
| 
       149 
     | 
    
         
            -
                      value: @db_instance. 
     | 
| 
      
 149 
     | 
    
         
            +
                      value: @db_instance.db_instance_identifier
         
     | 
| 
       150 
150 
     | 
    
         
             
                    }
         
     | 
| 
       151 
151 
     | 
    
         
             
                  ],
         
     | 
| 
       152 
152 
     | 
    
         
             
                  start_time: config[:end_time] - config[:period],
         
     | 
| 
         @@ -240,8 +240,8 @@ class CheckRDS < Sensu::Plugin::Check::CLI 
     | 
|
| 
       240 
240 
     | 
    
         
             
              end
         
     | 
| 
       241 
241 
     | 
    
         | 
| 
       242 
242 
     | 
    
         
             
              def check_connections(severity, expected_lower_than)
         
     | 
| 
       243 
     | 
    
         
            -
                @connections_metric ||= cloud_watch_metric 'DatabaseConnections'
         
     | 
| 
       244 
     | 
    
         
            -
                @connections_metric_value ||= latest_value @connections_metric 
     | 
| 
      
 243 
     | 
    
         
            +
                @connections_metric ||= cloud_watch_metric 'DatabaseConnections', 'Count'
         
     | 
| 
      
 244 
     | 
    
         
            +
                @connections_metric_value ||= latest_value @connections_metric
         
     | 
| 
       245 
245 
     | 
    
         
             
                return if @connections_metric_value < expected_lower_than
         
     | 
| 
       246 
246 
     | 
    
         
             
                flag_alert severity, "; DatabaseConnections are #{sprintf '%d', @connections_metric_value} (expected lower than #{expected_lower_than})"
         
     | 
| 
       247 
247 
     | 
    
         
             
              end
         
     | 
| 
         @@ -0,0 +1,175 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            #! /usr/bin/env ruby
         
     | 
| 
      
 2 
     | 
    
         
            +
            #
         
     | 
| 
      
 3 
     | 
    
         
            +
            # sensu-health-check
         
     | 
| 
      
 4 
     | 
    
         
            +
            #
         
     | 
| 
      
 5 
     | 
    
         
            +
            # DESCRIPTION:
         
     | 
| 
      
 6 
     | 
    
         
            +
            #   Finds a given tag set from EC2 and ensures sensu clients exist
         
     | 
| 
      
 7 
     | 
    
         
            +
            #
         
     | 
| 
      
 8 
     | 
    
         
            +
            # OUTPUT:
         
     | 
| 
      
 9 
     | 
    
         
            +
            #   plain-text
         
     | 
| 
      
 10 
     | 
    
         
            +
            #
         
     | 
| 
      
 11 
     | 
    
         
            +
            # PLATFORMS:
         
     | 
| 
      
 12 
     | 
    
         
            +
            #   Linux
         
     | 
| 
      
 13 
     | 
    
         
            +
            #
         
     | 
| 
      
 14 
     | 
    
         
            +
            # DEPENDENCIES:
         
     | 
| 
      
 15 
     | 
    
         
            +
            #   gem: aws-sdk
         
     | 
| 
      
 16 
     | 
    
         
            +
            #   gem: sensu-plugin
         
     | 
| 
      
 17 
     | 
    
         
            +
            #
         
     | 
| 
      
 18 
     | 
    
         
            +
            # USAGE:
         
     | 
| 
      
 19 
     | 
    
         
            +
            #   ./check-sensu-client.rb -w 20 -f "{name:tag-value,values:[infrastructure]}"
         
     | 
| 
      
 20 
     | 
    
         
            +
            #   ./check-sensu-client.rb -w 20 -f "{name:tag-value,values:[infrastructure]}" -e '{Name:[Ignore, Bad.*]}'
         
     | 
| 
      
 21 
     | 
    
         
            +
            #   ./check-sensu-client.rb -w 20 -f "{name:tag-value,values:[infrastructure]}" -e '{Name:[Ignore, Bad.*]} {Sensu: [Ignore]}'
         
     | 
| 
      
 22 
     | 
    
         
            +
            #
         
     | 
| 
      
 23 
     | 
    
         
            +
            # NOTES:
         
     | 
| 
      
 24 
     | 
    
         
            +
            #  Values provided for the exclusion filter are treated as regex's for evaluation purposes. Any matching value
         
     | 
| 
      
 25 
     | 
    
         
            +
            #  will result in the instance being excluded
         
     | 
| 
      
 26 
     | 
    
         
            +
            #
         
     | 
| 
      
 27 
     | 
    
         
            +
            # LICENSE:
         
     | 
| 
      
 28 
     | 
    
         
            +
            #   Justin McCarty (jmccarty3@gmail.com)
         
     | 
| 
      
 29 
     | 
    
         
            +
            #   Released under the same terms as Sensu (the MIT license); see LICENSE
         
     | 
| 
      
 30 
     | 
    
         
            +
            #   for details.
         
     | 
| 
      
 31 
     | 
    
         
            +
            #
         
     | 
| 
      
 32 
     | 
    
         
            +
             
     | 
| 
      
 33 
     | 
    
         
            +
            require 'sensu-plugins-aws'
         
     | 
| 
      
 34 
     | 
    
         
            +
            require 'sensu-plugin/check/cli'
         
     | 
| 
      
 35 
     | 
    
         
            +
            require 'aws-sdk'
         
     | 
| 
      
 36 
     | 
    
         
            +
            require 'net/http'
         
     | 
| 
      
 37 
     | 
    
         
            +
            require 'json'
         
     | 
| 
      
 38 
     | 
    
         
            +
             
     | 
| 
      
 39 
     | 
    
         
            +
            class CheckSensuClient < Sensu::Plugin::Check::CLI
         
     | 
| 
      
 40 
     | 
    
         
            +
              include Filter
         
     | 
| 
      
 41 
     | 
    
         
            +
              include Common
         
     | 
| 
      
 42 
     | 
    
         
            +
              option :aws_region,
         
     | 
| 
      
 43 
     | 
    
         
            +
                     short: '-r AWS_REGION',
         
     | 
| 
      
 44 
     | 
    
         
            +
                     long: '--aws-region REGION',
         
     | 
| 
      
 45 
     | 
    
         
            +
                     description: 'AWS Region (such as us-east-1).',
         
     | 
| 
      
 46 
     | 
    
         
            +
                     default: 'us-east-1'
         
     | 
| 
      
 47 
     | 
    
         
            +
             
     | 
| 
      
 48 
     | 
    
         
            +
              option :sensu_host,
         
     | 
| 
      
 49 
     | 
    
         
            +
                     short: '-h SENSU_HOST',
         
     | 
| 
      
 50 
     | 
    
         
            +
                     long: '--host SENSU_HOST',
         
     | 
| 
      
 51 
     | 
    
         
            +
                     description: 'Sensu host to query',
         
     | 
| 
      
 52 
     | 
    
         
            +
                     default: 'sensu'
         
     | 
| 
      
 53 
     | 
    
         
            +
             
     | 
| 
      
 54 
     | 
    
         
            +
              option :sensu_port,
         
     | 
| 
      
 55 
     | 
    
         
            +
                     short: '-p SENSU_PORT',
         
     | 
| 
      
 56 
     | 
    
         
            +
                     long: '--port SENSU_PORT',
         
     | 
| 
      
 57 
     | 
    
         
            +
                     description: 'Sensu API port',
         
     | 
| 
      
 58 
     | 
    
         
            +
                     proc: proc(&:to_i),
         
     | 
| 
      
 59 
     | 
    
         
            +
                     default: 4567
         
     | 
| 
      
 60 
     | 
    
         
            +
             
     | 
| 
      
 61 
     | 
    
         
            +
              option :warn,
         
     | 
| 
      
 62 
     | 
    
         
            +
                     short: '-w WARN',
         
     | 
| 
      
 63 
     | 
    
         
            +
                     description: 'Warn if instance has been up longer (Minutes)',
         
     | 
| 
      
 64 
     | 
    
         
            +
                     proc: proc(&:to_i),
         
     | 
| 
      
 65 
     | 
    
         
            +
                     default: 0
         
     | 
| 
      
 66 
     | 
    
         
            +
             
     | 
| 
      
 67 
     | 
    
         
            +
              option :critical,
         
     | 
| 
      
 68 
     | 
    
         
            +
                     short: '-c CRITICAL',
         
     | 
| 
      
 69 
     | 
    
         
            +
                     description: 'Critical if instance has been up longer (Minutes)',
         
     | 
| 
      
 70 
     | 
    
         
            +
                     proc: proc(&:to_i)
         
     | 
| 
      
 71 
     | 
    
         
            +
             
     | 
| 
      
 72 
     | 
    
         
            +
              option :min,
         
     | 
| 
      
 73 
     | 
    
         
            +
                     short: '-m MIN_TIME',
         
     | 
| 
      
 74 
     | 
    
         
            +
                     description: 'Minimum Time an instance must be running (Minutes)',
         
     | 
| 
      
 75 
     | 
    
         
            +
                     proc: proc(&:to_i),
         
     | 
| 
      
 76 
     | 
    
         
            +
                     default: 5
         
     | 
| 
      
 77 
     | 
    
         
            +
             
     | 
| 
      
 78 
     | 
    
         
            +
              option :filter,
         
     | 
| 
      
 79 
     | 
    
         
            +
                     short: '-f FILTER',
         
     | 
| 
      
 80 
     | 
    
         
            +
                     description: 'Filter to use to find ec2 instances',
         
     | 
| 
      
 81 
     | 
    
         
            +
                     default: '{}'
         
     | 
| 
      
 82 
     | 
    
         
            +
             
     | 
| 
      
 83 
     | 
    
         
            +
              option :exclude_tags,
         
     | 
| 
      
 84 
     | 
    
         
            +
                     short: '-e {<tag-key>:[VAL1, VAL2]} {<tag-key>:[VAL1, VAL2] }',
         
     | 
| 
      
 85 
     | 
    
         
            +
                     long: '--exclude_tags {<tag-key>:[VAL1, VAL2] } {<tag-key>:[VAL1, VAL2] }',
         
     | 
| 
      
 86 
     | 
    
         
            +
                     description: 'Tag Values to exclude by. Values treated as regex. Any matching value will result in exclusion.',
         
     | 
| 
      
 87 
     | 
    
         
            +
                     default: '{}'
         
     | 
| 
      
 88 
     | 
    
         
            +
             
     | 
| 
      
 89 
     | 
    
         
            +
              def run
         
     | 
| 
      
 90 
     | 
    
         
            +
                # Converting the string into a hash.
         
     | 
| 
      
 91 
     | 
    
         
            +
                filter_list = config[:exclude_tags].split(/}\s?{/).map do |x|
         
     | 
| 
      
 92 
     | 
    
         
            +
                  x.gsub(/[{}]/, '')
         
     | 
| 
      
 93 
     | 
    
         
            +
                end
         
     | 
| 
      
 94 
     | 
    
         
            +
                filter_list = filter_list.map do |y|
         
     | 
| 
      
 95 
     | 
    
         
            +
                  h1, h2 = y.split(':')
         
     | 
| 
      
 96 
     | 
    
         
            +
                  { h1 => h2 }
         
     | 
| 
      
 97 
     | 
    
         
            +
                end.reduce(:merge)
         
     | 
| 
      
 98 
     | 
    
         
            +
                filter_list.delete(nil)
         
     | 
| 
      
 99 
     | 
    
         
            +
                filter_list.each { |x, y| filter_list[x] = y.strip.gsub(/[\[\]]/, '') }
         
     | 
| 
      
 100 
     | 
    
         
            +
                client = Aws::EC2::Client.new aws_config
         
     | 
| 
      
 101 
     | 
    
         
            +
             
     | 
| 
      
 102 
     | 
    
         
            +
                parsed_filter = Filter.parse(config[:filter])
         
     | 
| 
      
 103 
     | 
    
         
            +
             
     | 
| 
      
 104 
     | 
    
         
            +
                filter = if parsed_filter.empty?
         
     | 
| 
      
 105 
     | 
    
         
            +
                           {}
         
     | 
| 
      
 106 
     | 
    
         
            +
                         else
         
     | 
| 
      
 107 
     | 
    
         
            +
                           { filters: parsed_filter }
         
     | 
| 
      
 108 
     | 
    
         
            +
                         end
         
     | 
| 
      
 109 
     | 
    
         
            +
             
     | 
| 
      
 110 
     | 
    
         
            +
                data = client.describe_instances(filter)
         
     | 
| 
      
 111 
     | 
    
         
            +
             
     | 
| 
      
 112 
     | 
    
         
            +
                current_time = Time.now.utc
         
     | 
| 
      
 113 
     | 
    
         
            +
                aws_instances = Set.new
         
     | 
| 
      
 114 
     | 
    
         
            +
                data.reservations.each do |r|
         
     | 
| 
      
 115 
     | 
    
         
            +
                  r.instances.each do |i|
         
     | 
| 
      
 116 
     | 
    
         
            +
                    aws_instances << {
         
     | 
| 
      
 117 
     | 
    
         
            +
                      id: i[:instance_id],
         
     | 
| 
      
 118 
     | 
    
         
            +
                      up_time: (current_time - i[:launch_time]) / 60,
         
     | 
| 
      
 119 
     | 
    
         
            +
                      tags: i.tags
         
     | 
| 
      
 120 
     | 
    
         
            +
                    }
         
     | 
| 
      
 121 
     | 
    
         
            +
                  end
         
     | 
| 
      
 122 
     | 
    
         
            +
                end
         
     | 
| 
      
 123 
     | 
    
         
            +
             
     | 
| 
      
 124 
     | 
    
         
            +
                sensu_clients = client_check
         
     | 
| 
      
 125 
     | 
    
         
            +
             
     | 
| 
      
 126 
     | 
    
         
            +
                missing = Set.new
         
     | 
| 
      
 127 
     | 
    
         
            +
             
     | 
| 
      
 128 
     | 
    
         
            +
                aws_instances.delete_if do |instance|
         
     | 
| 
      
 129 
     | 
    
         
            +
                  instance[:tags].any? do |key|
         
     | 
| 
      
 130 
     | 
    
         
            +
                    filter_list.keys.include?(key.key) && filter_list[key.key].split(',').any? do |v|
         
     | 
| 
      
 131 
     | 
    
         
            +
                      key.value.match(/#{v.strip}/)
         
     | 
| 
      
 132 
     | 
    
         
            +
                    end
         
     | 
| 
      
 133 
     | 
    
         
            +
                  end
         
     | 
| 
      
 134 
     | 
    
         
            +
                end
         
     | 
| 
      
 135 
     | 
    
         
            +
             
     | 
| 
      
 136 
     | 
    
         
            +
                aws_instances.each do |i|
         
     | 
| 
      
 137 
     | 
    
         
            +
                  if sensu_clients.include?(i[:id]) == false
         
     | 
| 
      
 138 
     | 
    
         
            +
                    if i[:up_time] > config[:min]
         
     | 
| 
      
 139 
     | 
    
         
            +
                      missing << i
         
     | 
| 
      
 140 
     | 
    
         
            +
                      output "Missing instance #{i[:id]}. Uptime: #{i[:up_time]} Minutes"
         
     | 
| 
      
 141 
     | 
    
         
            +
                    end
         
     | 
| 
      
 142 
     | 
    
         
            +
                  end
         
     | 
| 
      
 143 
     | 
    
         
            +
                end
         
     | 
| 
      
 144 
     | 
    
         
            +
             
     | 
| 
      
 145 
     | 
    
         
            +
                warn_flag = false
         
     | 
| 
      
 146 
     | 
    
         
            +
                crit_flag = false
         
     | 
| 
      
 147 
     | 
    
         
            +
             
     | 
| 
      
 148 
     | 
    
         
            +
                missing.each do |m|
         
     | 
| 
      
 149 
     | 
    
         
            +
                  if (config[:critical].nil? == false) && (m[:up_time] > config[:critical])
         
     | 
| 
      
 150 
     | 
    
         
            +
                    crit_flag = true
         
     | 
| 
      
 151 
     | 
    
         
            +
                  elsif (config[:warn].nil? == false) && (m[:up_time] > config[:warn])
         
     | 
| 
      
 152 
     | 
    
         
            +
                    warn_flag = true
         
     | 
| 
      
 153 
     | 
    
         
            +
                  end
         
     | 
| 
      
 154 
     | 
    
         
            +
                end
         
     | 
| 
      
 155 
     | 
    
         
            +
             
     | 
| 
      
 156 
     | 
    
         
            +
                if crit_flag
         
     | 
| 
      
 157 
     | 
    
         
            +
                  critical
         
     | 
| 
      
 158 
     | 
    
         
            +
                elsif warn_flag
         
     | 
| 
      
 159 
     | 
    
         
            +
                  warning
         
     | 
| 
      
 160 
     | 
    
         
            +
                end
         
     | 
| 
      
 161 
     | 
    
         
            +
                ok
         
     | 
| 
      
 162 
     | 
    
         
            +
              end
         
     | 
| 
      
 163 
     | 
    
         
            +
             
     | 
| 
      
 164 
     | 
    
         
            +
              def client_check
         
     | 
| 
      
 165 
     | 
    
         
            +
                uri = URI("http://#{config[:sensu_host]}:#{config[:sensu_port]}/clients")
         
     | 
| 
      
 166 
     | 
    
         
            +
                response = JSON.parse(Net::HTTP.get(uri))
         
     | 
| 
      
 167 
     | 
    
         
            +
             
     | 
| 
      
 168 
     | 
    
         
            +
                clients = Set.new
         
     | 
| 
      
 169 
     | 
    
         
            +
                response.each do |client|
         
     | 
| 
      
 170 
     | 
    
         
            +
                  clients << client['name']
         
     | 
| 
      
 171 
     | 
    
         
            +
                end
         
     | 
| 
      
 172 
     | 
    
         
            +
             
     | 
| 
      
 173 
     | 
    
         
            +
                clients
         
     | 
| 
      
 174 
     | 
    
         
            +
              end
         
     | 
| 
      
 175 
     | 
    
         
            +
            end
         
     | 
    
        data/bin/check-sqs-messages.rb
    CHANGED
    
    | 
         @@ -16,8 +16,8 @@ 
     | 
|
| 
       16 
16 
     | 
    
         
             
            #   gem: sensu-plugin
         
     | 
| 
       17 
17 
     | 
    
         
             
            #
         
     | 
| 
       18 
18 
     | 
    
         
             
            # USAGE:
         
     | 
| 
       19 
     | 
    
         
            -
            #    
     | 
| 
       20 
     | 
    
         
            -
            #
         
     | 
| 
      
 19 
     | 
    
         
            +
            #   check-sqs-messages -q my_queue -a key -k secret -w 500 -c 1000
         
     | 
| 
      
 20 
     | 
    
         
            +
            #   check-sqs-messages -p queue_prefix_ -a key -k secret -W 100 -C 50
         
     | 
| 
       21 
21 
     | 
    
         
             
            #
         
     | 
| 
       22 
22 
     | 
    
         
             
            # NOTES:
         
     | 
| 
       23 
23 
     | 
    
         
             
            #
         
     | 
| 
         @@ -56,7 +56,13 @@ class SQSMsgs < Sensu::Plugin::Check::CLI 
     | 
|
| 
       56 
56 
     | 
    
         
             
                     short: '-q SQS_QUEUE',
         
     | 
| 
       57 
57 
     | 
    
         
             
                     long: '--queue SQS_QUEUE',
         
     | 
| 
       58 
58 
     | 
    
         
             
                     description: 'The name of the SQS you want to check the number of messages for',
         
     | 
| 
       59 
     | 
    
         
            -
                      
     | 
| 
      
 59 
     | 
    
         
            +
                     default: ''
         
     | 
| 
      
 60 
     | 
    
         
            +
             
     | 
| 
      
 61 
     | 
    
         
            +
              option :prefix,
         
     | 
| 
      
 62 
     | 
    
         
            +
                     short: '-p PREFIX',
         
     | 
| 
      
 63 
     | 
    
         
            +
                     long: '--prefix PREFIX',
         
     | 
| 
      
 64 
     | 
    
         
            +
                     description: 'The prefix of the queues you want to check the number of messages for',
         
     | 
| 
      
 65 
     | 
    
         
            +
                     default: ''
         
     | 
| 
       60 
66 
     | 
    
         | 
| 
       61 
67 
     | 
    
         
             
              option :warn_over,
         
     | 
| 
       62 
68 
     | 
    
         
             
                     short: '-w WARN_OVER',
         
     | 
| 
         @@ -96,14 +102,46 @@ class SQSMsgs < Sensu::Plugin::Check::CLI 
     | 
|
| 
       96 
102 
     | 
    
         
             
              def run
         
     | 
| 
       97 
103 
     | 
    
         
             
                AWS.config aws_config
         
     | 
| 
       98 
104 
     | 
    
         
             
                sqs = AWS::SQS.new
         
     | 
| 
       99 
     | 
    
         
            -
                messages = sqs.queues.named(config[:queue]).approximate_number_of_messages
         
     | 
| 
       100 
105 
     | 
    
         | 
| 
       101 
     | 
    
         
            -
                if  
     | 
| 
       102 
     | 
    
         
            -
                   
     | 
| 
       103 
     | 
    
         
            -
             
     | 
| 
       104 
     | 
    
         
            -
                   
     | 
| 
      
 106 
     | 
    
         
            +
                if config[:prefix] == ''
         
     | 
| 
      
 107 
     | 
    
         
            +
                  if config[:queue] == ''
         
     | 
| 
      
 108 
     | 
    
         
            +
                    critical 'Error, either QUEUE or PREFIX must be specified'
         
     | 
| 
      
 109 
     | 
    
         
            +
                  end
         
     | 
| 
      
 110 
     | 
    
         
            +
             
     | 
| 
      
 111 
     | 
    
         
            +
                  messages = sqs.queues.named(config[:queue]).approximate_number_of_messages
         
     | 
| 
      
 112 
     | 
    
         
            +
             
     | 
| 
      
 113 
     | 
    
         
            +
                  if (config[:crit_under] >= 0 && messages < config[:crit_under]) || (config[:crit_over] >= 0 && messages > config[:crit_over])
         
     | 
| 
      
 114 
     | 
    
         
            +
                    critical "#{messages} message(s) in #{config[:queue]} queue"
         
     | 
| 
      
 115 
     | 
    
         
            +
                  elsif (config[:warn_under] >= 0 && messages < config[:warn_under]) || (config[:warn_over] >= 0 && messages > config[:warn_over])
         
     | 
| 
      
 116 
     | 
    
         
            +
                    warning "#{messages} message(s) in #{config[:queue]} queue"
         
     | 
| 
      
 117 
     | 
    
         
            +
                  else
         
     | 
| 
      
 118 
     | 
    
         
            +
                    ok "#{messages} messages in #{config[:queue]} queue"
         
     | 
| 
      
 119 
     | 
    
         
            +
                  end
         
     | 
| 
       105 
120 
     | 
    
         
             
                else
         
     | 
| 
       106 
     | 
    
         
            -
                   
     | 
| 
      
 121 
     | 
    
         
            +
                  warn = false
         
     | 
| 
      
 122 
     | 
    
         
            +
                  crit = false
         
     | 
| 
      
 123 
     | 
    
         
            +
                  queues = []
         
     | 
| 
      
 124 
     | 
    
         
            +
             
     | 
| 
      
 125 
     | 
    
         
            +
                  sqs.queues.with_prefix(config[:prefix]).each do |q|
         
     | 
| 
      
 126 
     | 
    
         
            +
                    queue_name = q.arn.split(':').last
         
     | 
| 
      
 127 
     | 
    
         
            +
                    messages = q.approximate_number_of_messages
         
     | 
| 
      
 128 
     | 
    
         
            +
             
     | 
| 
      
 129 
     | 
    
         
            +
                    if (config[:crit_under] >= 0 && messages < config[:crit_under]) || (config[:crit_over] >= 0 && messages > config[:crit_over])
         
     | 
| 
      
 130 
     | 
    
         
            +
                      crit = true
         
     | 
| 
      
 131 
     | 
    
         
            +
                      queues << "#{messages} message(s) in #{queue_name} queue"
         
     | 
| 
      
 132 
     | 
    
         
            +
                    elsif (config[:warn_under] >= 0 && messages < config[:warn_under]) || (config[:warn_over] >= 0 && messages > config[:warn_over])
         
     | 
| 
      
 133 
     | 
    
         
            +
                      warn = true
         
     | 
| 
      
 134 
     | 
    
         
            +
                      queues << "#{messages} message(s) in #{queue_name} queue"
         
     | 
| 
      
 135 
     | 
    
         
            +
                    end
         
     | 
| 
      
 136 
     | 
    
         
            +
                  end
         
     | 
| 
      
 137 
     | 
    
         
            +
             
     | 
| 
      
 138 
     | 
    
         
            +
                  if crit
         
     | 
| 
      
 139 
     | 
    
         
            +
                    critical queues.to_s
         
     | 
| 
      
 140 
     | 
    
         
            +
                  elsif warn
         
     | 
| 
      
 141 
     | 
    
         
            +
                    warning queues.to_s
         
     | 
| 
      
 142 
     | 
    
         
            +
                  else
         
     | 
| 
      
 143 
     | 
    
         
            +
                    ok "All queues matching prefix '#{config[:prefix]}' OK"
         
     | 
| 
      
 144 
     | 
    
         
            +
                  end
         
     | 
| 
       107 
145 
     | 
    
         
             
                end
         
     | 
| 
       108 
146 
     | 
    
         
             
              end
         
     | 
| 
       109 
147 
     | 
    
         
             
            end
         
     | 
| 
         @@ -0,0 +1,82 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            #! /usr/bin/env ruby
         
     | 
| 
      
 2 
     | 
    
         
            +
            #
         
     | 
| 
      
 3 
     | 
    
         
            +
            # check-trustedadvisor-service-limits
         
     | 
| 
      
 4 
     | 
    
         
            +
            #
         
     | 
| 
      
 5 
     | 
    
         
            +
            #
         
     | 
| 
      
 6 
     | 
    
         
            +
            # DESCRIPTION:
         
     | 
| 
      
 7 
     | 
    
         
            +
            #   This plugin uses Trusted Advisor API to perform check for
         
     | 
| 
      
 8 
     | 
    
         
            +
            #   service limits. Trigger 'critical' on sensu for services
         
     | 
| 
      
 9 
     | 
    
         
            +
            #   that are not 'Green'.
         
     | 
| 
      
 10 
     | 
    
         
            +
            #
         
     | 
| 
      
 11 
     | 
    
         
            +
            #   IAM requires AWSSupportAccess policy enabled.
         
     | 
| 
      
 12 
     | 
    
         
            +
            #
         
     | 
| 
      
 13 
     | 
    
         
            +
            #   https://aws.amazon.com/premiumsupport/ta-faqs/
         
     | 
| 
      
 14 
     | 
    
         
            +
            #
         
     | 
| 
      
 15 
     | 
    
         
            +
            #
         
     | 
| 
      
 16 
     | 
    
         
            +
            # OUTPUT:
         
     | 
| 
      
 17 
     | 
    
         
            +
            #   plain-text
         
     | 
| 
      
 18 
     | 
    
         
            +
            #
         
     | 
| 
      
 19 
     | 
    
         
            +
            # PLATFORMS:
         
     | 
| 
      
 20 
     | 
    
         
            +
            #   Linux
         
     | 
| 
      
 21 
     | 
    
         
            +
            #
         
     | 
| 
      
 22 
     | 
    
         
            +
            # DEPENDENCIES:
         
     | 
| 
      
 23 
     | 
    
         
            +
            #   gem: aws-sdk-v1
         
     | 
| 
      
 24 
     | 
    
         
            +
            #   gem: sensu-plugin
         
     | 
| 
      
 25 
     | 
    
         
            +
            #
         
     | 
| 
      
 26 
     | 
    
         
            +
            # USAGE:
         
     | 
| 
      
 27 
     | 
    
         
            +
            #  ./check-trustedadvisor-service-limits.rb -l {en|ja}
         
     | 
| 
      
 28 
     | 
    
         
            +
            #
         
     | 
| 
      
 29 
     | 
    
         
            +
            # NOTES:
         
     | 
| 
      
 30 
     | 
    
         
            +
            #
         
     | 
| 
      
 31 
     | 
    
         
            +
            # LICENSE:
         
     | 
| 
      
 32 
     | 
    
         
            +
            #   Seandy Wibowo <swibowo@sugarcrm.com>
         
     | 
| 
      
 33 
     | 
    
         
            +
            #   Released under the same terms as Sensu (the MIT license); see LICENSE
         
     | 
| 
      
 34 
     | 
    
         
            +
            #   for details.
         
     | 
| 
      
 35 
     | 
    
         
            +
             
     | 
| 
      
 36 
     | 
    
         
            +
            require 'sensu-plugin/check/cli'
         
     | 
| 
      
 37 
     | 
    
         
            +
            require 'sensu-plugins-aws'
         
     | 
| 
      
 38 
     | 
    
         
            +
            require 'aws-sdk'
         
     | 
| 
      
 39 
     | 
    
         
            +
             
     | 
| 
      
 40 
     | 
    
         
            +
            class CheckTrustedAdvisorServiceLimits < Sensu::Plugin::Check::CLI
         
     | 
| 
      
 41 
     | 
    
         
            +
              include Common
         
     | 
| 
      
 42 
     | 
    
         
            +
              option :aws_language,
         
     | 
| 
      
 43 
     | 
    
         
            +
                     short: '-l AWS_LANGUAGE',
         
     | 
| 
      
 44 
     | 
    
         
            +
                     long: '--aws-language AWS_LANGUAGE',
         
     | 
| 
      
 45 
     | 
    
         
            +
                     description: "ISO 639-1 language code to be used when querying Trusted Advisor API. Only 'en' and 'ja' supported for now",
         
     | 
| 
      
 46 
     | 
    
         
            +
                     default: 'en'
         
     | 
| 
      
 47 
     | 
    
         
            +
             
     | 
| 
      
 48 
     | 
    
         
            +
              def run
         
     | 
| 
      
 49 
     | 
    
         
            +
                # The Support endpoint seems to only available in us-east-1 region
         
     | 
| 
      
 50 
     | 
    
         
            +
                # http://docs.aws.amazon.com/sdkforruby/api/Aws/Support.html
         
     | 
| 
      
 51 
     | 
    
         
            +
                aws_support = Aws::Support::Client.new(region: 'us-east-1')
         
     | 
| 
      
 52 
     | 
    
         
            +
             
     | 
| 
      
 53 
     | 
    
         
            +
                service_limit_msg = []
         
     | 
| 
      
 54 
     | 
    
         
            +
             
     | 
| 
      
 55 
     | 
    
         
            +
                begin
         
     | 
| 
      
 56 
     | 
    
         
            +
                  # service limit check
         
     | 
| 
      
 57 
     | 
    
         
            +
                  # Perform a refresh to make sure the API result is not stale.
         
     | 
| 
      
 58 
     | 
    
         
            +
                  aws_support.refresh_trusted_advisor_check(check_id: 'eW7HH0l7J9')
         
     | 
| 
      
 59 
     | 
    
         
            +
                  sl = aws_support.describe_trusted_advisor_check_result(check_id: 'eW7HH0l7J9', language: config[:aws_language])
         
     | 
| 
      
 60 
     | 
    
         
            +
             
     | 
| 
      
 61 
     | 
    
         
            +
                  sl[:result][:flagged_resources].each do |slr|
         
     | 
| 
      
 62 
     | 
    
         
            +
                    # Data structure will be as follow
         
     | 
| 
      
 63 
     | 
    
         
            +
                    # ["<region>", "<service>", "<description>", "<limit>", "<usage>", "<status>"]
         
     | 
| 
      
 64 
     | 
    
         
            +
                    sl_region, sl_service, sl_description, sl_limit, sl_usage, sl_status = slr[:metadata]
         
     | 
| 
      
 65 
     | 
    
         
            +
             
     | 
| 
      
 66 
     | 
    
         
            +
                    next if sl_status == 'Green'
         
     | 
| 
      
 67 
     | 
    
         
            +
                    sl_usage = 0 if sl_usage.nil?
         
     | 
| 
      
 68 
     | 
    
         
            +
             
     | 
| 
      
 69 
     | 
    
         
            +
                    sl_msg = "#{sl_service} (#{sl_region}) #{sl_description} #{sl_usage} out of #{sl_limit}"
         
     | 
| 
      
 70 
     | 
    
         
            +
                    service_limit_msg.push(sl_msg)
         
     | 
| 
      
 71 
     | 
    
         
            +
                  end
         
     | 
| 
      
 72 
     | 
    
         
            +
                rescue => e
         
     | 
| 
      
 73 
     | 
    
         
            +
                  unknown "An error occurred processing AWS TrustedAdvisor API: #{e.message}"
         
     | 
| 
      
 74 
     | 
    
         
            +
                end
         
     | 
| 
      
 75 
     | 
    
         
            +
             
     | 
| 
      
 76 
     | 
    
         
            +
                if service_limit_msg.empty?
         
     | 
| 
      
 77 
     | 
    
         
            +
                  ok
         
     | 
| 
      
 78 
     | 
    
         
            +
                else
         
     | 
| 
      
 79 
     | 
    
         
            +
                  critical("Services hitting usage limit: #{service_limit_msg.join(', ')}")
         
     | 
| 
      
 80 
     | 
    
         
            +
                end
         
     | 
| 
      
 81 
     | 
    
         
            +
              end
         
     | 
| 
      
 82 
     | 
    
         
            +
            end
         
     | 
    
        data/bin/metrics-elasticache.rb
    CHANGED
    
    | 
         @@ -98,6 +98,21 @@ class ElastiCacheMetrics < Sensu::Plugin::Metric::CLI::Graphite 
     | 
|
| 
       98 
98 
     | 
    
         
             
                                 config[:scheme]
         
     | 
| 
       99 
99 
     | 
    
         
             
                               end
         
     | 
| 
       100 
100 
     | 
    
         | 
| 
      
 101 
     | 
    
         
            +
                dimensions = if config[:cachenodeid]
         
     | 
| 
      
 102 
     | 
    
         
            +
                               [{
         
     | 
| 
      
 103 
     | 
    
         
            +
                                 'name' => 'CacheClusterId',
         
     | 
| 
      
 104 
     | 
    
         
            +
                                 'value' => config[:cacheclusterid]
         
     | 
| 
      
 105 
     | 
    
         
            +
                               }, {
         
     | 
| 
      
 106 
     | 
    
         
            +
                                 'name' => 'CacheNodeId',
         
     | 
| 
      
 107 
     | 
    
         
            +
                                 'value' => config[:cachenodeid]
         
     | 
| 
      
 108 
     | 
    
         
            +
                               }]
         
     | 
| 
      
 109 
     | 
    
         
            +
                             else
         
     | 
| 
      
 110 
     | 
    
         
            +
                               [{
         
     | 
| 
      
 111 
     | 
    
         
            +
                                 'name' => 'CacheClusterId',
         
     | 
| 
      
 112 
     | 
    
         
            +
                                 'value' => config[:cacheclusterid]
         
     | 
| 
      
 113 
     | 
    
         
            +
                               }]
         
     | 
| 
      
 114 
     | 
    
         
            +
                             end
         
     | 
| 
      
 115 
     | 
    
         
            +
             
     | 
| 
       101 
116 
     | 
    
         
             
                statistic_type = {
         
     | 
| 
       102 
117 
     | 
    
         
             
                  'redis' => {
         
     | 
| 
       103 
118 
     | 
    
         
             
                    'CPUUtilization' => 'Percent',
         
     | 
| 
         @@ -168,9 +183,7 @@ class ElastiCacheMetrics < Sensu::Plugin::Metric::CLI::Graphite 
     | 
|
| 
       168 
183 
     | 
    
         
             
                  options = {
         
     | 
| 
       169 
184 
     | 
    
         
             
                    'namespace' => 'AWS/ElastiCache',
         
     | 
| 
       170 
185 
     | 
    
         
             
                    'metric_name' => config[:metric],
         
     | 
| 
       171 
     | 
    
         
            -
                    'dimensions' =>  
     | 
| 
       172 
     | 
    
         
            -
                      { 'name' => 'CacheClusterId', 'value' => config[:cacheclusterid] }
         
     | 
| 
       173 
     | 
    
         
            -
                    ],
         
     | 
| 
      
 186 
     | 
    
         
            +
                    'dimensions' => dimensions,
         
     | 
| 
       174 
187 
     | 
    
         
             
                    'start_time' => st.iso8601,
         
     | 
| 
       175 
188 
     | 
    
         
             
                    'end_time' => et.iso8601,
         
     | 
| 
       176 
189 
     | 
    
         
             
                    'period' => 60,
         
     | 
    
        data/bin/metrics-sqs.rb
    CHANGED
    
    | 
         @@ -1,6 +1,6 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            #! /usr/bin/env ruby
         
     | 
| 
       2 
2 
     | 
    
         
             
            #
         
     | 
| 
       3 
     | 
    
         
            -
            # sqs 
     | 
| 
      
 3 
     | 
    
         
            +
            # metrics-sqs
         
     | 
| 
       4 
4 
     | 
    
         
             
            #
         
     | 
| 
       5 
5 
     | 
    
         
             
            # DESCRIPTION:
         
     | 
| 
       6 
6 
     | 
    
         
             
            #   Fetch SQS metrics
         
     | 
| 
         @@ -16,7 +16,8 @@ 
     | 
|
| 
       16 
16 
     | 
    
         
             
            #   gem: sensu-plugin
         
     | 
| 
       17 
17 
     | 
    
         
             
            #
         
     | 
| 
       18 
18 
     | 
    
         
             
            # USAGE:
         
     | 
| 
       19 
     | 
    
         
            -
            #   sqs 
     | 
| 
      
 19 
     | 
    
         
            +
            #   metrics-sqs -q my_queue -a key -k secret
         
     | 
| 
      
 20 
     | 
    
         
            +
            #   metrics-sqs -p queue_prefix_ -a key -k secret
         
     | 
| 
       20 
21 
     | 
    
         
             
            #
         
     | 
| 
       21 
22 
     | 
    
         
             
            # NOTES:
         
     | 
| 
       22 
23 
     | 
    
         
             
            #
         
     | 
| 
         @@ -34,7 +35,13 @@ class SQSMetrics < Sensu::Plugin::Metric::CLI::Graphite 
     | 
|
| 
       34 
35 
     | 
    
         
             
                     description: 'Name of the queue',
         
     | 
| 
       35 
36 
     | 
    
         
             
                     short: '-q QUEUE',
         
     | 
| 
       36 
37 
     | 
    
         
             
                     long: '--queue QUEUE',
         
     | 
| 
       37 
     | 
    
         
            -
                      
     | 
| 
      
 38 
     | 
    
         
            +
                     default: ''
         
     | 
| 
      
 39 
     | 
    
         
            +
             
     | 
| 
      
 40 
     | 
    
         
            +
              option :prefix,
         
     | 
| 
      
 41 
     | 
    
         
            +
                     description: 'Queue name prefix',
         
     | 
| 
      
 42 
     | 
    
         
            +
                     short: '-p PREFIX',
         
     | 
| 
      
 43 
     | 
    
         
            +
                     long: '--prefix PREFIX',
         
     | 
| 
      
 44 
     | 
    
         
            +
                     default: ''
         
     | 
| 
       38 
45 
     | 
    
         | 
| 
       39 
46 
     | 
    
         
             
              option :scheme,
         
     | 
| 
       40 
47 
     | 
    
         
             
                     description: 'Metric naming scheme, text to prepend to metric',
         
     | 
| 
         @@ -67,19 +74,33 @@ class SQSMetrics < Sensu::Plugin::Metric::CLI::Graphite 
     | 
|
| 
       67 
74 
     | 
    
         
             
                }
         
     | 
| 
       68 
75 
     | 
    
         
             
              end
         
     | 
| 
       69 
76 
     | 
    
         | 
| 
       70 
     | 
    
         
            -
              def  
     | 
| 
       71 
     | 
    
         
            -
                 
     | 
| 
       72 
     | 
    
         
            -
             
     | 
| 
       73 
     | 
    
         
            -
                         else
         
     | 
| 
       74 
     | 
    
         
            -
                           config[:scheme]
         
     | 
| 
       75 
     | 
    
         
            -
                         end
         
     | 
| 
      
 77 
     | 
    
         
            +
              def scheme(queue_name)
         
     | 
| 
      
 78 
     | 
    
         
            +
                "aws.sqs.queue.#{queue_name.tr('-', '_')}.message_count"
         
     | 
| 
      
 79 
     | 
    
         
            +
              end
         
     | 
| 
       76 
80 
     | 
    
         | 
| 
      
 81 
     | 
    
         
            +
              def run
         
     | 
| 
       77 
82 
     | 
    
         
             
                begin
         
     | 
| 
       78 
83 
     | 
    
         
             
                  sqs = AWS::SQS.new aws_config
         
     | 
| 
       79 
84 
     | 
    
         | 
| 
       80 
     | 
    
         
            -
                   
     | 
| 
       81 
     | 
    
         
            -
             
     | 
| 
      
 85 
     | 
    
         
            +
                  if config[:prefix] == ''
         
     | 
| 
      
 86 
     | 
    
         
            +
                    if config[:queue] == ''
         
     | 
| 
      
 87 
     | 
    
         
            +
                      critical 'Error, either QUEUE or PREFIX must be specified'
         
     | 
| 
      
 88 
     | 
    
         
            +
                    end
         
     | 
| 
      
 89 
     | 
    
         
            +
             
     | 
| 
      
 90 
     | 
    
         
            +
                    scheme = if config[:scheme] == ''
         
     | 
| 
      
 91 
     | 
    
         
            +
                               scheme config[:queue]
         
     | 
| 
      
 92 
     | 
    
         
            +
                             else
         
     | 
| 
      
 93 
     | 
    
         
            +
                               config[:scheme]
         
     | 
| 
      
 94 
     | 
    
         
            +
                             end
         
     | 
| 
       82 
95 
     | 
    
         | 
| 
      
 96 
     | 
    
         
            +
                    messages = sqs.queues.named(config[:queue]).approximate_number_of_messages
         
     | 
| 
      
 97 
     | 
    
         
            +
                    output scheme, messages
         
     | 
| 
      
 98 
     | 
    
         
            +
                  else
         
     | 
| 
      
 99 
     | 
    
         
            +
                    sqs.queues.with_prefix(config[:prefix]).each do |q|
         
     | 
| 
      
 100 
     | 
    
         
            +
                      queue_name = q.arn.split(':').last
         
     | 
| 
      
 101 
     | 
    
         
            +
                      output scheme(queue_name), q.approximate_number_of_messages
         
     | 
| 
      
 102 
     | 
    
         
            +
                    end
         
     | 
| 
      
 103 
     | 
    
         
            +
                  end
         
     | 
| 
       83 
104 
     | 
    
         
             
                rescue => e
         
     | 
| 
       84 
105 
     | 
    
         
             
                  critical "Error fetching SQS queue metrics: #{e.message}"
         
     | 
| 
       85 
106 
     | 
    
         
             
                end
         
     | 
    
        metadata
    CHANGED
    
    | 
         @@ -1,45 +1,14 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            --- !ruby/object:Gem::Specification
         
     | 
| 
       2 
2 
     | 
    
         
             
            name: sensu-plugins-aws
         
     | 
| 
       3 
3 
     | 
    
         
             
            version: !ruby/object:Gem::Version
         
     | 
| 
       4 
     | 
    
         
            -
              version: 2. 
     | 
| 
      
 4 
     | 
    
         
            +
              version: 2.2.0
         
     | 
| 
       5 
5 
     | 
    
         
             
            platform: ruby
         
     | 
| 
       6 
6 
     | 
    
         
             
            authors:
         
     | 
| 
       7 
7 
     | 
    
         
             
            - Sensu-Plugins and contributors
         
     | 
| 
       8 
8 
     | 
    
         
             
            autorequire: 
         
     | 
| 
       9 
9 
     | 
    
         
             
            bindir: bin
         
     | 
| 
       10 
     | 
    
         
            -
            cert_chain:
         
     | 
| 
       11 
     | 
    
         
            -
            -  
     | 
| 
       12 
     | 
    
         
            -
              LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSURuakNDQW9hZ0F3SUJB
         
     | 
| 
       13 
     | 
    
         
            -
              Z0lCQVRBTkJna3Foa2lHOXcwQkFRVUZBREJLTVJVd0V3WURWUVFEREF4elpX
         
     | 
| 
       14 
     | 
    
         
            -
              NXoKZFMxd2JIVm5hVzR4SFRBYkJnb0praWFKay9Jc1pBRVpGZzF6Wlc1emRT
         
     | 
| 
       15 
     | 
    
         
            -
              MXdiSFZuYVc1ek1SSXdFQVlLQ1pJbQppWlB5TEdRQkdSWUNhVzh3SGhjTk1U
         
     | 
| 
       16 
     | 
    
         
            -
              WXdNakEwTWpNeU1qRTNXaGNOTVRjd01qQXpNak15TWpFM1dqQktNUlV3CkV3
         
     | 
| 
       17 
     | 
    
         
            -
              WURWUVFEREF4elpXNXpkUzF3YkhWbmFXNHhIVEFiQmdvSmtpYUprL0lzWkFF
         
     | 
| 
       18 
     | 
    
         
            -
              WkZnMXpaVzV6ZFMxd2JIVm4KYVc1ek1SSXdFQVlLQ1pJbWlaUHlMR1FCR1JZ
         
     | 
| 
       19 
     | 
    
         
            -
              Q2FXOHdnZ0VpTUEwR0NTcUdTSWIzRFFFQkFRVUFBNElCRHdBdwpnZ0VLQW9J
         
     | 
| 
       20 
     | 
    
         
            -
              QkFRQy9VUzNmdEkyUmQrOWQzS3JIQUw0bERsOGxhN2s2ZHA3K1RPY210VHd3
         
     | 
| 
       21 
     | 
    
         
            -
              YzRiMUwzV0NyeEFoClpDWms1Q3k2aUpvWUd4VHVoNittSDJZZ3ExbHZGRE4v
         
     | 
| 
       22 
     | 
    
         
            -
              NTh5YVRHTVFINzNRYVJjZjVnak9IMkJSQTlkUWRzWUgKYTNZYnMrbGxwVlYv
         
     | 
| 
       23 
     | 
    
         
            -
              ZC9kMklaYyt2RU9tc21rTFpVeEhzZFdQSTZsWTBuYXJwU2RxNHNML0lXWWZP
         
     | 
| 
       24 
     | 
    
         
            -
              aW1ocFFTWgpTV0t5WHg5cjM4UFpZZ0Q3djIydjloNTZkcUpQZFFPY29OODhF
         
     | 
| 
       25 
     | 
    
         
            -
              NkE4YTdQWTcvL1RweWdTREtuSldudkFwS1JxCjNCN0xMaFNkOTRQMHdRcGow
         
     | 
| 
       26 
     | 
    
         
            -
              MS9sb05Nd0FCMytGQjRRQ0UrdG1QeFYxZ1Q2ZWE4VW1SNjQrcGZKTFN0NGl5
         
     | 
| 
       27 
     | 
    
         
            -
              N0gKVGc5OTdCZFZqaURJdG5SYzhCSXNjVFl4S2JRai9wTEhBZ01CQUFHamdZ
         
     | 
| 
       28 
     | 
    
         
            -
              NHdnWXN3Q1FZRFZSMFRCQUl3QURBTApCZ05WSFE4RUJBTUNCTEF3SFFZRFZS
         
     | 
| 
       29 
     | 
    
         
            -
              ME9CQllFRk5McjBmZ1BmdnlWK0VneEVGRHhVcVFhU2xScE1DZ0dBMVVkCkVR
         
     | 
| 
       30 
     | 
    
         
            -
              UWhNQitCSFhObGJuTjFMWEJzZFdkcGJrQnpaVzV6ZFMxd2JIVm5hVzV6TG1s
         
     | 
| 
       31 
     | 
    
         
            -
              dk1DZ0dBMVVkRWdRaE1CK0IKSFhObGJuTjFMWEJzZFdkcGJrQnpaVzV6ZFMx
         
     | 
| 
       32 
     | 
    
         
            -
              d2JIVm5hVzV6TG1sdk1BMEdDU3FHU0liM0RRRUJCUVVBQTRJQgpBUUNQZTZ0
         
     | 
| 
       33 
     | 
    
         
            -
              RUJ0NS9uQzk1aFhvS2VLRmhrWVc5bTE2aU5YdWRKeEorZGRYcnpDc2tEMXk2
         
     | 
| 
       34 
     | 
    
         
            -
              ajZjQXY0a1FlUDFmClBIbDE4aDVrOWtKeElQU1IrcUkrK2JJbDE3ZUVPU096
         
     | 
| 
       35 
     | 
    
         
            -
              YXNMbXdzdGFNU25NN3U1UWZMcFdFWTJldVZXQkRzdGQKMmhrcG80VSswSzVT
         
     | 
| 
       36 
     | 
    
         
            -
              d3ptZEphMFdLQXRmS3ZkdENROGk5MllJUCtIODNFdXZDU0xwZ29aaDYzRXJx
         
     | 
| 
       37 
     | 
    
         
            -
              dVFVY25lbgphZmg1bHVUQkExaTFjcUJHNEFNSjBmTFdHeU9xSmFYOFA5WnN4
         
     | 
| 
       38 
     | 
    
         
            -
              RERXUEVCbk5TaVd2WGIrSUttSkFWTzF1VzRrClFOODNielZXU1d1bFk4Qlk2
         
     | 
| 
       39 
     | 
    
         
            -
              a1grSVFNd1lhelpBbEIvMTNkN2E4VTBoN0NyYjM2Sm5TUGF0aHVSemU0cUtY
         
     | 
| 
       40 
     | 
    
         
            -
              RlEKM2YzVFVaV3d2UmZ0Y1N1K3Z0Y0JSa00wCi0tLS0tRU5EIENFUlRJRklD
         
     | 
| 
       41 
     | 
    
         
            -
              QVRFLS0tLS0K
         
     | 
| 
       42 
     | 
    
         
            -
            date: 2016-02-07 00:00:00.000000000 Z
         
     | 
| 
      
 10 
     | 
    
         
            +
            cert_chain: []
         
     | 
| 
      
 11 
     | 
    
         
            +
            date: 2016-02-25 00:00:00.000000000 Z
         
     | 
| 
       43 
12 
     | 
    
         
             
            dependencies:
         
     | 
| 
       44 
13 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       45 
14 
     | 
    
         
             
              name: aws-sdk
         
     | 
| 
         @@ -270,6 +239,7 @@ executables: 
     | 
|
| 
       270 
239 
     | 
    
         
             
            - check-ec2-filter.rb
         
     | 
| 
       271 
240 
     | 
    
         
             
            - check-ec2-network.rb
         
     | 
| 
       272 
241 
     | 
    
         
             
            - check-eip-allocation.rb
         
     | 
| 
      
 242 
     | 
    
         
            +
            - check-elasticache-failover.rb
         
     | 
| 
       273 
243 
     | 
    
         
             
            - check-elb-certs.rb
         
     | 
| 
       274 
244 
     | 
    
         
             
            - check-elb-health-fog.rb
         
     | 
| 
       275 
245 
     | 
    
         
             
            - check-elb-health-sdk.rb
         
     | 
| 
         @@ -285,11 +255,12 @@ executables: 
     | 
|
| 
       285 
255 
     | 
    
         
             
            - check-redshift-events.rb
         
     | 
| 
       286 
256 
     | 
    
         
             
            - check-s3-bucket.rb
         
     | 
| 
       287 
257 
     | 
    
         
             
            - check-s3-object.rb
         
     | 
| 
      
 258 
     | 
    
         
            +
            - check-sensu-client.rb
         
     | 
| 
       288 
259 
     | 
    
         
             
            - check-ses-limit.rb
         
     | 
| 
       289 
260 
     | 
    
         
             
            - check-sqs-messages.rb
         
     | 
| 
      
 261 
     | 
    
         
            +
            - check-trustedadvisor-service-limits.rb
         
     | 
| 
       290 
262 
     | 
    
         
             
            - check-vpc-nameservers.rb
         
     | 
| 
       291 
263 
     | 
    
         
             
            - check-vpc-vpn.rb
         
     | 
| 
       292 
     | 
    
         
            -
            - check_vpc_vpn.py
         
     | 
| 
       293 
264 
     | 
    
         
             
            - handler-ec2_node.rb
         
     | 
| 
       294 
265 
     | 
    
         
             
            - handler-ses.rb
         
     | 
| 
       295 
266 
     | 
    
         
             
            - handler-sns.rb
         
     | 
| 
         @@ -318,6 +289,7 @@ files: 
     | 
|
| 
       318 
289 
     | 
    
         
             
            - bin/check-ec2-filter.rb
         
     | 
| 
       319 
290 
     | 
    
         
             
            - bin/check-ec2-network.rb
         
     | 
| 
       320 
291 
     | 
    
         
             
            - bin/check-eip-allocation.rb
         
     | 
| 
      
 292 
     | 
    
         
            +
            - bin/check-elasticache-failover.rb
         
     | 
| 
       321 
293 
     | 
    
         
             
            - bin/check-elb-certs.rb
         
     | 
| 
       322 
294 
     | 
    
         
             
            - bin/check-elb-health-fog.rb
         
     | 
| 
       323 
295 
     | 
    
         
             
            - bin/check-elb-health-sdk.rb
         
     | 
| 
         @@ -333,8 +305,10 @@ files: 
     | 
|
| 
       333 
305 
     | 
    
         
             
            - bin/check-redshift-events.rb
         
     | 
| 
       334 
306 
     | 
    
         
             
            - bin/check-s3-bucket.rb
         
     | 
| 
       335 
307 
     | 
    
         
             
            - bin/check-s3-object.rb
         
     | 
| 
      
 308 
     | 
    
         
            +
            - bin/check-sensu-client.rb
         
     | 
| 
       336 
309 
     | 
    
         
             
            - bin/check-ses-limit.rb
         
     | 
| 
       337 
310 
     | 
    
         
             
            - bin/check-sqs-messages.rb
         
     | 
| 
      
 311 
     | 
    
         
            +
            - bin/check-trustedadvisor-service-limits.rb
         
     | 
| 
       338 
312 
     | 
    
         
             
            - bin/check-vpc-nameservers.rb
         
     | 
| 
       339 
313 
     | 
    
         
             
            - bin/check-vpc-vpn.rb
         
     | 
| 
       340 
314 
     | 
    
         
             
            - bin/check_vpc_vpn.py
         
     | 
    
        checksums.yaml.gz.sig
    DELETED
    
    | 
         Binary file 
     | 
    
        data.tar.gz.sig
    DELETED
    
    | 
         Binary file 
     | 
    
        metadata.gz.sig
    DELETED
    
    | 
         Binary file 
     |