sensu-plugins-aws 16.2.0 → 17.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +12 -1
- data/bin/check-sqs-messages.rb +15 -4
- data/bin/check-vpc-nameservers.rb +1 -1
- data/bin/metrics-cloudfront.rb +39 -26
- data/lib/sensu-plugins-aws/version.rb +2 -2
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b05e0394036396881a2c21bdf8c448eb856c59ce2d6b823552bcca6bbdcc6d7f
|
4
|
+
data.tar.gz: 1ee23068ea1c8d72f2fcf549baa0213cb2d4beda05664861890302a26caf50e0
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 63e63fa98ee696e071f56809357695c80a206618964b0dc85f160d87e42bd8db2c693b97622d82f66153205d8ce4a42b4113589e1496e15a0ead826c0a4ce74e
|
7
|
+
data.tar.gz: f3313e41ad7cf05d9c2717a60cca0061cacbf9bcd3a2734678fa358595f4928c2841615e3212a3f5866798a7f7d2e5c4d0b42d416e12c04af2679b3663babe5b
|
data/CHANGELOG.md
CHANGED
@@ -4,10 +4,20 @@ This project adheres to [Semantic Versioning](http://semver.org/).
|
|
4
4
|
This CHANGELOG follows the format listed [here](https://github.com/sensu-plugins/community/blob/master/HOW_WE_CHANGELOG.md)
|
5
5
|
|
6
6
|
## [Unreleased]
|
7
|
+
## [17.0.0] - 2019-03-26
|
8
|
+
### Breaking Changes
|
9
|
+
- `metrics-cloudfront.rb` `--metric` option was renamed to `--metrics`. (@boutetnico)
|
10
|
+
|
11
|
+
### Added
|
12
|
+
- `check-sqs-messages.rb`: adding option `--exclude-queues` for use in blacklisting specific queues in conjunction with `--prefix` flag. (@ruke47)
|
13
|
+
|
14
|
+
### Changed
|
15
|
+
- `metrics-cloudfront.rb` now accepts multiple metrics. (@boutetnico)
|
7
16
|
|
8
17
|
## [16.2.0] - 2019-02-19
|
9
18
|
### Fixed
|
10
19
|
- removed codeclimate (@tmonk42)
|
20
|
+
- properly iterate over IPs in check-vpc-nameservers.rb (@masneyb)
|
11
21
|
|
12
22
|
### Added
|
13
23
|
- `check-ec2-cpu_balance.rb`: adding option `--instance-families` to manage which instance families to check. (@cyrilgdn)
|
@@ -543,7 +553,8 @@ WARNING: This release contains major breaking changes that will impact all user
|
|
543
553
|
### Added
|
544
554
|
- initial release
|
545
555
|
|
546
|
-
[Unreleased]: https://github.com/sensu-plugins/sensu-plugins-aws/compare/
|
556
|
+
[Unreleased]: https://github.com/sensu-plugins/sensu-plugins-aws/compare/17.0.0...HEAD
|
557
|
+
[17.0.0]: https://github.com/sensu-plugins/sensu-plugins-aws/compare/16.2.0...17.0.0
|
547
558
|
[16.2.0]: https://github.com/sensu-plugins/sensu-plugins-aws/compare/16.1.0...16.2.0
|
548
559
|
[16.1.0]: https://github.com/sensu-plugins/sensu-plugins-aws/compare/16.0.0...16.1.0
|
549
560
|
[16.0.0]: https://github.com/sensu-plugins/sensu-plugins-aws/compare/15.0.0...16.0.0
|
data/bin/check-sqs-messages.rb
CHANGED
@@ -43,11 +43,19 @@ class SQSMsgs < Sensu::Plugin::Check::CLI
|
|
43
43
|
description: 'AWS Region (defaults to us-east-1).',
|
44
44
|
default: 'us-east-1'
|
45
45
|
|
46
|
-
option :
|
46
|
+
option :queues,
|
47
47
|
short: '-q SQS_QUEUE',
|
48
48
|
long: '--queue SQS_QUEUE',
|
49
49
|
description: 'A comma seperated list of the SQS queue(s) you want to check the number of messages for',
|
50
|
-
default:
|
50
|
+
default: [],
|
51
|
+
proc: proc { |q| q.split(',') }
|
52
|
+
|
53
|
+
option :exclude_queues,
|
54
|
+
short: '-Q SQS_QUEUES',
|
55
|
+
long: '--exclude-queues SQS_QUEUE',
|
56
|
+
description: 'A comma separated list of the SQS queue(s) to exclude, if using --prefix',
|
57
|
+
default: [],
|
58
|
+
proc: proc { |q| q.split(',') }
|
51
59
|
|
52
60
|
option :prefix,
|
53
61
|
short: '-p PREFIX',
|
@@ -100,14 +108,14 @@ class SQSMsgs < Sensu::Plugin::Check::CLI
|
|
100
108
|
sqs = Aws::SQS::Resource.new
|
101
109
|
|
102
110
|
if config[:prefix].empty?
|
103
|
-
if config[:
|
111
|
+
if config[:queues].empty?
|
104
112
|
critical 'Error, either QUEUE or PREFIX must be specified'
|
105
113
|
end
|
106
114
|
|
107
115
|
warnings = []
|
108
116
|
crits = []
|
109
117
|
passing = []
|
110
|
-
queues = config[:
|
118
|
+
queues = config[:queues]
|
111
119
|
queues.each do |q|
|
112
120
|
url = sqs.get_queue_by_name(queue_name: q).url
|
113
121
|
messages = sqs.client.get_queue_attributes(queue_url: url, attribute_names: ['All']).attributes[config[:metric]].to_i
|
@@ -131,11 +139,14 @@ class SQSMsgs < Sensu::Plugin::Check::CLI
|
|
131
139
|
warn = false
|
132
140
|
crit = false
|
133
141
|
queues = []
|
142
|
+
exclusions = config[:exclude_queues]
|
134
143
|
|
135
144
|
sqs.queues(queue_name_prefix: config[:prefix]).each do |q|
|
136
145
|
messages = sqs.client.get_queue_attributes(queue_url: q.url, attribute_names: ['All']).attributes[config[:metric]].to_i
|
137
146
|
queue_name = q.attributes['QueueArn'].split(':').last
|
138
147
|
|
148
|
+
next if exclusions.include? queue_name
|
149
|
+
|
139
150
|
if (config[:crit_under] >= 0 && messages < config[:crit_under]) || (config[:crit_over] >= 0 && messages > config[:crit_over])
|
140
151
|
crit = true
|
141
152
|
queues << "#{messages} message(s) in #{queue_name} queue"
|
@@ -65,7 +65,7 @@ class CheckVpcNameservers < Sensu::Plugin::Check::CLI
|
|
65
65
|
options.dhcp_options.each do |option|
|
66
66
|
option.dhcp_configurations.each do |map|
|
67
67
|
next if map.key != 'domain-name-servers'
|
68
|
-
map.
|
68
|
+
map.values.each do |value| # rubocop:disable Performance/HashEachMethods
|
69
69
|
ip = value.value
|
70
70
|
config[:queries].each do |query|
|
71
71
|
begin
|
data/bin/metrics-cloudfront.rb
CHANGED
@@ -36,7 +36,7 @@ require 'time'
|
|
36
36
|
class CloudFrontMetrics < Sensu::Plugin::Metric::CLI::Graphite
|
37
37
|
include Common
|
38
38
|
option :distribution_id,
|
39
|
-
description: 'Distribution id of Cloudfront',
|
39
|
+
description: 'Distribution id of Cloudfront (defaults to all distributions)',
|
40
40
|
short: '-d DISTRIBUTION_ID',
|
41
41
|
long: '--distribution_id DISTRIBUTION_ID'
|
42
42
|
|
@@ -52,11 +52,10 @@ class CloudFrontMetrics < Sensu::Plugin::Metric::CLI::Graphite
|
|
52
52
|
description: 'AWS Region (defaults to us-east-1).',
|
53
53
|
default: 'us-east-1'
|
54
54
|
|
55
|
-
option :
|
56
|
-
description: '
|
57
|
-
short: '-m
|
58
|
-
long: '--
|
59
|
-
in: %w[Requests BytesDownloaded BytesUploaded TotalErrorRate 4xxErrorRate 5xxErrorRate]
|
55
|
+
option :metrics,
|
56
|
+
description: 'Commas separated list of metric(s) to fetch',
|
57
|
+
short: '-m METRIC1,METRIC2',
|
58
|
+
long: '--metrics METRIC1,METRIC2'
|
60
59
|
|
61
60
|
option :end_time,
|
62
61
|
short: '-t T',
|
@@ -76,7 +75,7 @@ class CloudFrontMetrics < Sensu::Plugin::Metric::CLI::Graphite
|
|
76
75
|
@cloud_watch ||= Aws::CloudWatch::Client.new
|
77
76
|
end
|
78
77
|
|
79
|
-
def cloud_watch_metric(metric_name,
|
78
|
+
def cloud_watch_metric(metric_name, statistics, distribution_id)
|
80
79
|
cloud_watch.get_metric_statistics(
|
81
80
|
namespace: 'AWS/CloudFront',
|
82
81
|
metric_name: metric_name,
|
@@ -90,36 +89,36 @@ class CloudFrontMetrics < Sensu::Plugin::Metric::CLI::Graphite
|
|
90
89
|
value: distribution_id
|
91
90
|
}
|
92
91
|
],
|
93
|
-
statistics: [
|
92
|
+
statistics: [statistics],
|
94
93
|
start_time: config[:end_time] - config[:period],
|
95
94
|
end_time: config[:end_time],
|
96
95
|
period: config[:period]
|
97
96
|
)
|
98
97
|
end
|
99
98
|
|
100
|
-
def distribution_list
|
99
|
+
def distribution_list(metrics)
|
101
100
|
list_metrics = cloud_watch.list_metrics(
|
102
101
|
namespace: 'AWS/CloudFront'
|
103
102
|
).metrics
|
104
103
|
|
105
|
-
list_metrics = list_metrics.select { |e| e.metric_name
|
104
|
+
list_metrics = list_metrics.select { |e| metrics.include? e.metric_name }
|
106
105
|
|
107
106
|
list_metrics.reduce(Set.new) do |result, item|
|
108
107
|
result << item.dimensions.find { |element| element.name == 'DistributionId' }.value
|
109
108
|
end
|
110
109
|
end
|
111
110
|
|
112
|
-
def print_statistics(distribution_id,
|
113
|
-
|
114
|
-
r = cloud_watch_metric(
|
111
|
+
def print_statistics(distribution_id, statistic)
|
112
|
+
statistic.each do |metric, static|
|
113
|
+
r = cloud_watch_metric(metric, static, distribution_id)
|
115
114
|
keys = [config[:scheme]]
|
116
|
-
keys.concat [distribution_id,
|
115
|
+
keys.concat [distribution_id, metric, static]
|
117
116
|
output(keys.join('.'), r[:datapoints].first[static.downcase]) unless r[:datapoints].first.nil?
|
118
117
|
end
|
119
118
|
end
|
120
119
|
|
121
|
-
def
|
122
|
-
|
120
|
+
def print_metrics(distribution_id, metrics)
|
121
|
+
metrics_statistic = {
|
123
122
|
'Requests' => 'Sum',
|
124
123
|
'BytesDownloaded' => 'Sum',
|
125
124
|
'BytesUploaded' => 'Sum',
|
@@ -128,19 +127,33 @@ class CloudFrontMetrics < Sensu::Plugin::Metric::CLI::Graphite
|
|
128
127
|
'5xxErrorRate' => 'Average'
|
129
128
|
}
|
130
129
|
|
131
|
-
|
132
|
-
statistic.select
|
130
|
+
metrics.each do |metric|
|
131
|
+
statistic = metrics_statistic.select { |key, _| key == metric }
|
132
|
+
if statistic.empty?
|
133
|
+
unknown "Invalid metric #{metric}. Possible values: #{metrics_statistic.keys.join(',')}"
|
134
|
+
end
|
135
|
+
print_statistics(distribution_id, statistic)
|
133
136
|
end
|
137
|
+
end
|
134
138
|
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
139
|
+
def parse_metrics(metrics)
|
140
|
+
if metrics.nil?
|
141
|
+
unknown 'No metrics provided. See usage for details'
|
142
|
+
end
|
143
|
+
metrics.split(',')
|
144
|
+
end
|
145
|
+
|
146
|
+
def run
|
147
|
+
metrics = parse_metrics(config[:metrics])
|
148
|
+
|
149
|
+
if config[:distribution_id].nil?
|
150
|
+
distribution_list(metrics).each do |distribution|
|
151
|
+
print_metrics(distribution, metrics)
|
142
152
|
end
|
143
|
-
|
153
|
+
else
|
154
|
+
print_metrics(config[:distribution_id], metrics)
|
144
155
|
end
|
156
|
+
|
157
|
+
ok
|
145
158
|
end
|
146
159
|
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:
|
4
|
+
version: 17.0.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: 2019-
|
11
|
+
date: 2019-03-27 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: sensu-plugin
|
@@ -424,7 +424,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
424
424
|
- !ruby/object:Gem::Version
|
425
425
|
version: '0'
|
426
426
|
requirements: []
|
427
|
-
rubygems_version: 3.0.
|
427
|
+
rubygems_version: 3.0.3
|
428
428
|
signing_key:
|
429
429
|
specification_version: 4
|
430
430
|
summary: Sensu plugins for working with an AWS environment
|