sensu-plugins-aws 16.2.0 → 17.0.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 +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
|