sensu-plugins-aws 11.3.1 → 11.4.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 +4 -4
- data/CHANGELOG.md +9 -1
- data/bin/metrics-waf.rb +111 -0
- data/lib/sensu-plugins-aws/version.rb +2 -2
- metadata +6 -4
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA256:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: 759ebb6f5b2c991d44235b5392c64c005e25372b639d77aa561f5d2dc8de9768
         | 
| 4 | 
            +
              data.tar.gz: 002bdfa80613f0b1a9499f968175bf81d3a94d758379174a9cd92f356b74cee8
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: d9bf47beeff3da64504e8a4fa7c47f9c9c3e279e770ec7c806ce5747ddad06acb12fdf51ff59b3550f6aa30d7d64d5e774fb0195231b3e24e08c873a0a6f82ea
         | 
| 7 | 
            +
              data.tar.gz: 8576679f7f3fa9702fd12691eb63574dec0102ddc8c5eff7832cb70b093480937d9e3f7c3935ccdabafb5471d3e1a9a332d171a85c57caa8bdc7195597d00896
         | 
    
        data/CHANGELOG.md
    CHANGED
    
    | @@ -5,6 +5,13 @@ This CHANGELOG follows the format listed [here](https://github.com/sensu-plugins | |
| 5 5 |  | 
| 6 6 | 
             
            ## [Unreleased]
         | 
| 7 7 |  | 
| 8 | 
            +
            ## [11.4.0] - 2018-04-28
         | 
| 9 | 
            +
            ### Security
         | 
| 10 | 
            +
            - updated yard dependency to `~> 0.9.11` per: https://nvd.nist.gov/vuln/detail/CVE-2017-17042 (@yuri-zubov sponsored by Actility, https://www.actility.com)
         | 
| 11 | 
            +
             | 
| 12 | 
            +
            ### Added
         | 
| 13 | 
            +
            - Added ability to get metrics from WAF (@yuri-zubov sponsored by Actility, https://www.actility.com)
         | 
| 14 | 
            +
             | 
| 8 15 | 
             
            ## [11.3.1] - 2018-04-17
         | 
| 9 16 | 
             
            ### Fixed
         | 
| 10 17 | 
             
            - check-rds-events.rb: fixed issues with queries because the assume local time, now we force UTC timezone (@nadarashwin) (@majormoses)
         | 
| @@ -459,7 +466,8 @@ WARNING:  This release contains major breaking changes that will impact all user | |
| 459 466 | 
             
            ### Added
         | 
| 460 467 | 
             
            - initial release
         | 
| 461 468 |  | 
| 462 | 
            -
            [Unreleased]: https://github.com/sensu-plugins/sensu-plugins-aws/compare/11. | 
| 469 | 
            +
            [Unreleased]: https://github.com/sensu-plugins/sensu-plugins-aws/compare/11.4.0...HEAD
         | 
| 470 | 
            +
            [11.4.0]: https://github.com/sensu-plugins/sensu-plugins-aws/compare/11.3.1...11.4.0
         | 
| 463 471 | 
             
            [11.3.1]: https://github.com/sensu-plugins/sensu-plugins-aws/compare/11.3.0...11.3.1
         | 
| 464 472 | 
             
            [11.3.0]: https://github.com/sensu-plugins/sensu-plugins-aws/compare/11.2.0...11.3.0
         | 
| 465 473 | 
             
            [11.2.0]: https://github.com/sensu-plugins/sensu-plugins-aws/compare/11.1.0...11.2.0
         | 
    
        data/bin/metrics-waf.rb
    ADDED
    
    | @@ -0,0 +1,111 @@ | |
| 1 | 
            +
            #! /usr/bin/env ruby
         | 
| 2 | 
            +
            #
         | 
| 3 | 
            +
            # metrics-waf
         | 
| 4 | 
            +
            #
         | 
| 5 | 
            +
            # DESCRIPTION:
         | 
| 6 | 
            +
            #   Gets latency metrics from CloudWatch and puts them in Graphite for longer term storage
         | 
| 7 | 
            +
            #
         | 
| 8 | 
            +
            # OUTPUT:
         | 
| 9 | 
            +
            #   metric-data
         | 
| 10 | 
            +
            #
         | 
| 11 | 
            +
            # PLATFORMS:
         | 
| 12 | 
            +
            #   Linux
         | 
| 13 | 
            +
            #
         | 
| 14 | 
            +
            # DEPENDENCIES:
         | 
| 15 | 
            +
            #   gem: aws-sdk
         | 
| 16 | 
            +
            #   gem: sensu-plugin
         | 
| 17 | 
            +
            #   gem: sensu-plugin-aws
         | 
| 18 | 
            +
            #   gem: time
         | 
| 19 | 
            +
            #
         | 
| 20 | 
            +
            # USAGE:
         | 
| 21 | 
            +
            #
         | 
| 22 | 
            +
            #
         | 
| 23 | 
            +
            # NOTES:
         | 
| 24 | 
            +
            #
         | 
| 25 | 
            +
            # LICENSE:
         | 
| 26 | 
            +
            #   Zubov Yuri <yury.zubau@gmail.com> sponsored by Actility, https://www.actility.com
         | 
| 27 | 
            +
            #   Released under the same terms as Sensu (the MIT license); see LICENSE
         | 
| 28 | 
            +
            #   for details.
         | 
| 29 | 
            +
            #
         | 
| 30 | 
            +
             | 
| 31 | 
            +
            require 'sensu-plugin/metric/cli'
         | 
| 32 | 
            +
            require 'aws-sdk'
         | 
| 33 | 
            +
            require 'sensu-plugins-aws'
         | 
| 34 | 
            +
            require 'time'
         | 
| 35 | 
            +
             | 
| 36 | 
            +
            class WafMetrics < Sensu::Plugin::Metric::CLI::Generic
         | 
| 37 | 
            +
              include CloudwatchCommon
         | 
| 38 | 
            +
             | 
| 39 | 
            +
              option :scheme,
         | 
| 40 | 
            +
                     description: 'Metric naming scheme, text to prepend to metric',
         | 
| 41 | 
            +
                     short: '-s SCHEME',
         | 
| 42 | 
            +
                     long: '--scheme SCHEME',
         | 
| 43 | 
            +
                     default: 'aws.waf'
         | 
| 44 | 
            +
             | 
| 45 | 
            +
              option :aws_region,
         | 
| 46 | 
            +
                     short: '-r AWS_REGION',
         | 
| 47 | 
            +
                     long: '--aws-region REGION',
         | 
| 48 | 
            +
                     description: 'AWS Region (defaults to us-east-1).',
         | 
| 49 | 
            +
                     default: 'us-east-1'
         | 
| 50 | 
            +
             | 
| 51 | 
            +
              option :metric,
         | 
| 52 | 
            +
                     description: 'Metric to fetch',
         | 
| 53 | 
            +
                     short: '-m METRIC',
         | 
| 54 | 
            +
                     long: '--metric',
         | 
| 55 | 
            +
                     required: false,
         | 
| 56 | 
            +
                     in: %w[AllowedRequests BlockedRequests CountedRequests PassedRequests]
         | 
| 57 | 
            +
             | 
| 58 | 
            +
              option :end_time,
         | 
| 59 | 
            +
                     short:       '-t T',
         | 
| 60 | 
            +
                     long:        '--end-time TIME',
         | 
| 61 | 
            +
                     default:     Time.now,
         | 
| 62 | 
            +
                     proc:        proc { |a| Time.parse a },
         | 
| 63 | 
            +
                     description: 'CloudWatch metric statistics end time'
         | 
| 64 | 
            +
             | 
| 65 | 
            +
              option :period,
         | 
| 66 | 
            +
                     short:       '-p N',
         | 
| 67 | 
            +
                     long:        '--period SECONDS',
         | 
| 68 | 
            +
                     default:     60,
         | 
| 69 | 
            +
                     proc:        proc(&:to_i),
         | 
| 70 | 
            +
                     description: 'CloudWatch metric statistics period'
         | 
| 71 | 
            +
             | 
| 72 | 
            +
              def print_statistics(statistics, config)
         | 
| 73 | 
            +
                statistics.each do |key, stats|
         | 
| 74 | 
            +
                  r = client.get_metric_statistics(metrics_request(config).merge(metric_name: key, statistics: [stats]))
         | 
| 75 | 
            +
                  keys = [config[:scheme]]
         | 
| 76 | 
            +
                  keys.concat([key, stats])
         | 
| 77 | 
            +
                  unless r[:datapoints].first.nil?
         | 
| 78 | 
            +
                    output metric_name: keys.join('.'), value: r[:datapoints].first[stats.downcase]
         | 
| 79 | 
            +
                  end
         | 
| 80 | 
            +
                end
         | 
| 81 | 
            +
              end
         | 
| 82 | 
            +
             | 
| 83 | 
            +
              def run
         | 
| 84 | 
            +
                statistic = {
         | 
| 85 | 
            +
                  'AllowedRequests' => 'Sum',
         | 
| 86 | 
            +
                  'BlockedRequests' => 'Sum',
         | 
| 87 | 
            +
                  'CountedRequests' => 'Sum',
         | 
| 88 | 
            +
                  'PassedRequests' => 'Sum'
         | 
| 89 | 
            +
                }
         | 
| 90 | 
            +
             | 
| 91 | 
            +
                unless config[:metric].nil?
         | 
| 92 | 
            +
                  statistic.select! { |key, _| key == config[:metric] }
         | 
| 93 | 
            +
                end
         | 
| 94 | 
            +
             | 
| 95 | 
            +
                new_config = config.clone
         | 
| 96 | 
            +
                new_config[:namespace] = 'WAF'
         | 
| 97 | 
            +
                new_config[:dimensions] = [
         | 
| 98 | 
            +
                  {
         | 
| 99 | 
            +
                    name: 'WebACL',
         | 
| 100 | 
            +
                    value: 'SecurityAutomationsMaliciousRequesters'
         | 
| 101 | 
            +
                  },
         | 
| 102 | 
            +
                  {
         | 
| 103 | 
            +
                    name: 'Rule',
         | 
| 104 | 
            +
                    value: 'ALL'
         | 
| 105 | 
            +
                  }
         | 
| 106 | 
            +
                ]
         | 
| 107 | 
            +
             | 
| 108 | 
            +
                print_statistics(statistic, new_config)
         | 
| 109 | 
            +
                ok
         | 
| 110 | 
            +
              end
         | 
| 111 | 
            +
            end
         | 
    
        metadata
    CHANGED
    
    | @@ -1,14 +1,14 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: sensu-plugins-aws
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 11. | 
| 4 | 
            +
              version: 11.4.0
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - Sensu-Plugins and contributors
         | 
| 8 8 | 
             
            autorequire: 
         | 
| 9 9 | 
             
            bindir: bin
         | 
| 10 10 | 
             
            cert_chain: []
         | 
| 11 | 
            -
            date: 2018-04- | 
| 11 | 
            +
            date: 2018-04-28 00:00:00.000000000 Z
         | 
| 12 12 | 
             
            dependencies:
         | 
| 13 13 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 14 14 | 
             
              name: sensu-plugin
         | 
| @@ -240,14 +240,14 @@ dependencies: | |
| 240 240 | 
             
                requirements:
         | 
| 241 241 | 
             
                - - "~>"
         | 
| 242 242 | 
             
                  - !ruby/object:Gem::Version
         | 
| 243 | 
            -
                    version:  | 
| 243 | 
            +
                    version: 0.9.11
         | 
| 244 244 | 
             
              type: :development
         | 
| 245 245 | 
             
              prerelease: false
         | 
| 246 246 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 247 247 | 
             
                requirements:
         | 
| 248 248 | 
             
                - - "~>"
         | 
| 249 249 | 
             
                  - !ruby/object:Gem::Version
         | 
| 250 | 
            -
                    version:  | 
| 250 | 
            +
                    version: 0.9.11
         | 
| 251 251 | 
             
            description: |-
         | 
| 252 252 | 
             
              This plugin provides native AWS instrumentation
         | 
| 253 253 | 
             
                                            for monitoring and metrics collection, including:
         | 
| @@ -333,6 +333,7 @@ executables: | |
| 333 333 | 
             
            - metrics-s3.rb
         | 
| 334 334 | 
             
            - metrics-ses.rb
         | 
| 335 335 | 
             
            - metrics-sqs.rb
         | 
| 336 | 
            +
            - metrics-waf.rb
         | 
| 336 337 | 
             
            extensions: []
         | 
| 337 338 | 
             
            extra_rdoc_files: []
         | 
| 338 339 | 
             
            files:
         | 
| @@ -416,6 +417,7 @@ files: | |
| 416 417 | 
             
            - bin/metrics-s3.rb
         | 
| 417 418 | 
             
            - bin/metrics-ses.rb
         | 
| 418 419 | 
             
            - bin/metrics-sqs.rb
         | 
| 420 | 
            +
            - bin/metrics-waf.rb
         | 
| 419 421 | 
             
            - lib/sensu-plugins-aws.rb
         | 
| 420 422 | 
             
            - lib/sensu-plugins-aws/cloudwatch-common.rb
         | 
| 421 423 | 
             
            - lib/sensu-plugins-aws/common.rb
         |