sensu-plugins-aws 0.0.4 → 1.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
- checksums.yaml.gz.sig +0 -0
- data.tar.gz.sig +0 -0
- data/CHANGELOG.md +21 -1
- data/README.md +23 -14
- data/bin/check-autoscaling-cpucredits.rb +161 -0
- data/bin/check-dynamodb-capacity.rb +22 -20
- data/bin/check-dynamodb-throttle.rb +22 -20
- data/bin/check-ec2-network.rb +23 -23
- data/bin/check-elb-certs.rb +12 -15
- data/bin/check-elb-health-fog.rb +11 -14
- data/bin/check-elb-health-sdk.rb +12 -14
- data/bin/check-elb-health.rb +6 -9
- data/bin/check-elb-latency.rb +23 -20
- data/bin/check-elb-nodes.rb +12 -11
- data/bin/check-elb-sum-requests.rb +22 -19
- data/bin/check-instance-events.rb +35 -36
- data/bin/check-rds-events.rb +31 -23
- data/bin/check-rds.rb +38 -25
- data/bin/check-redshift-events.rb +16 -12
- data/bin/check-ses-limit.rb +16 -10
- data/bin/check-sqs-messages.rb +13 -12
- data/bin/handler-ec2_node.rb +60 -37
- data/bin/{autoscaling-instance-count-metrics.rb → metrics-autoscaling-instance-count.rb} +12 -12
- data/bin/metrics-ec2-count.rb +64 -62
- data/bin/metrics-elasticache.rb +13 -12
- data/bin/metrics-elb-full.rb +17 -15
- data/bin/metrics-elb.rb +9 -8
- data/bin/metrics-sqs.rb +16 -11
- data/lib/sensu-plugins-aws/version.rb +2 -2
- metadata +14 -14
- metadata.gz.sig +0 -0
- data/bin/handler-ec2-node.rb +0 -156
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sensu-plugins-aws
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0
|
4
|
+
version: 1.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Sensu-Plugins and contributors
|
@@ -30,7 +30,7 @@ cert_chain:
|
|
30
30
|
8sHuVruarogxxKPBzlL2is4EUb6oN/RdpGx2l4254+nyR+abg//Ed27Ym0PkB4lk
|
31
31
|
HP0m8WSjZmFr109pE/sVsM5jtOCvogyujQOjNVGN4gz1wwPr
|
32
32
|
-----END CERTIFICATE-----
|
33
|
-
date: 2015-07-
|
33
|
+
date: 2015-07-22 00:00:00.000000000 Z
|
34
34
|
dependencies:
|
35
35
|
- !ruby/object:Gem::Dependency
|
36
36
|
name: sensu-plugin
|
@@ -38,28 +38,28 @@ dependencies:
|
|
38
38
|
requirements:
|
39
39
|
- - '='
|
40
40
|
- !ruby/object:Gem::Version
|
41
|
-
version: 1.
|
41
|
+
version: 1.2.0
|
42
42
|
type: :runtime
|
43
43
|
prerelease: false
|
44
44
|
version_requirements: !ruby/object:Gem::Requirement
|
45
45
|
requirements:
|
46
46
|
- - '='
|
47
47
|
- !ruby/object:Gem::Version
|
48
|
-
version: 1.
|
48
|
+
version: 1.2.0
|
49
49
|
- !ruby/object:Gem::Dependency
|
50
50
|
name: aws-sdk
|
51
51
|
requirement: !ruby/object:Gem::Requirement
|
52
52
|
requirements:
|
53
53
|
- - "~>"
|
54
54
|
- !ruby/object:Gem::Version
|
55
|
-
version: 2.
|
55
|
+
version: 2.1.7
|
56
56
|
type: :runtime
|
57
57
|
prerelease: false
|
58
58
|
version_requirements: !ruby/object:Gem::Requirement
|
59
59
|
requirements:
|
60
60
|
- - "~>"
|
61
61
|
- !ruby/object:Gem::Version
|
62
|
-
version: 2.
|
62
|
+
version: 2.1.7
|
63
63
|
- !ruby/object:Gem::Dependency
|
64
64
|
name: aws-sdk-v1
|
65
65
|
requirement: !ruby/object:Gem::Requirement
|
@@ -80,14 +80,14 @@ dependencies:
|
|
80
80
|
requirements:
|
81
81
|
- - "~>"
|
82
82
|
- !ruby/object:Gem::Version
|
83
|
-
version: 1.
|
83
|
+
version: 1.32.0
|
84
84
|
type: :runtime
|
85
85
|
prerelease: false
|
86
86
|
version_requirements: !ruby/object:Gem::Requirement
|
87
87
|
requirements:
|
88
88
|
- - "~>"
|
89
89
|
- !ruby/object:Gem::Version
|
90
|
-
version: 1.
|
90
|
+
version: 1.32.0
|
91
91
|
- !ruby/object:Gem::Dependency
|
92
92
|
name: right_aws
|
93
93
|
requirement: !ruby/object:Gem::Requirement
|
@@ -122,14 +122,14 @@ dependencies:
|
|
122
122
|
requirements:
|
123
123
|
- - '='
|
124
124
|
- !ruby/object:Gem::Version
|
125
|
-
version:
|
125
|
+
version: 0.32.1
|
126
126
|
type: :development
|
127
127
|
prerelease: false
|
128
128
|
version_requirements: !ruby/object:Gem::Requirement
|
129
129
|
requirements:
|
130
130
|
- - '='
|
131
131
|
- !ruby/object:Gem::Version
|
132
|
-
version:
|
132
|
+
version: 0.32.1
|
133
133
|
- !ruby/object:Gem::Dependency
|
134
134
|
name: rspec
|
135
135
|
requirement: !ruby/object:Gem::Requirement
|
@@ -236,9 +236,9 @@ executables:
|
|
236
236
|
- metrics-elb-full.rb
|
237
237
|
- metrics-elasticache.rb
|
238
238
|
- metrics-ec2-count.rb
|
239
|
+
- metrics-autoscaling-instance-count.rb
|
239
240
|
- handler-sns.rb
|
240
241
|
- handler-ec2_node.rb
|
241
|
-
- handler-ec2-node.rb
|
242
242
|
- check_vpc_vpn.py
|
243
243
|
- check-sqs-messages.rb
|
244
244
|
- check-ses-limit.rb
|
@@ -257,14 +257,14 @@ executables:
|
|
257
257
|
- check-ebs-snapshots.rb
|
258
258
|
- check-dynamodb-throttle.rb
|
259
259
|
- check-dynamodb-capacity.rb
|
260
|
-
- autoscaling-
|
260
|
+
- check-autoscaling-cpucredits.rb
|
261
261
|
extensions: []
|
262
262
|
extra_rdoc_files: []
|
263
263
|
files:
|
264
264
|
- CHANGELOG.md
|
265
265
|
- LICENSE
|
266
266
|
- README.md
|
267
|
-
- bin/autoscaling-
|
267
|
+
- bin/check-autoscaling-cpucredits.rb
|
268
268
|
- bin/check-dynamodb-capacity.rb
|
269
269
|
- bin/check-dynamodb-throttle.rb
|
270
270
|
- bin/check-ebs-snapshots.rb
|
@@ -283,9 +283,9 @@ files:
|
|
283
283
|
- bin/check-ses-limit.rb
|
284
284
|
- bin/check-sqs-messages.rb
|
285
285
|
- bin/check_vpc_vpn.py
|
286
|
-
- bin/handler-ec2-node.rb
|
287
286
|
- bin/handler-ec2_node.rb
|
288
287
|
- bin/handler-sns.rb
|
288
|
+
- bin/metrics-autoscaling-instance-count.rb
|
289
289
|
- bin/metrics-ec2-count.rb
|
290
290
|
- bin/metrics-elasticache.rb
|
291
291
|
- bin/metrics-elb-full.rb
|
metadata.gz.sig
CHANGED
Binary file
|
data/bin/handler-ec2-node.rb
DELETED
@@ -1,156 +0,0 @@
|
|
1
|
-
#!/usr/bin/env ruby
|
2
|
-
#
|
3
|
-
# CHANGELOG:
|
4
|
-
# * 0.4.0:
|
5
|
-
# - Adds ability to specify a list of states an individual client can have in
|
6
|
-
# EC2. If none is specified, it filters out 'terminated' and 'stopped'
|
7
|
-
# instances by default.
|
8
|
-
# - Updates how we are "puts"-ing to the log.
|
9
|
-
# * 0.3.0:
|
10
|
-
# - Updates handler to additionally filter stopped instances.
|
11
|
-
# * 0.2.1:
|
12
|
-
# - Updates requested configuration snippets so they'll be redacted by
|
13
|
-
# default.
|
14
|
-
# * 0.2.0:
|
15
|
-
# - Renames handler from chef_ec2_node to ec2_node
|
16
|
-
# - Removes Chef-related stuff from handler
|
17
|
-
# - Updates documentation
|
18
|
-
# * 0.1.0:
|
19
|
-
# - Initial release
|
20
|
-
#
|
21
|
-
# This handler deletes a Sensu client if it's been stopped or terminated in EC2.
|
22
|
-
# Optionally, you may specify a client attribute `ec2_states`, a list of valid
|
23
|
-
# states an instance may have.
|
24
|
-
#
|
25
|
-
# NOTE: The implementation for correlating Sensu clients to EC2 instances may
|
26
|
-
# need to be modified to fit your organization. The current implementation
|
27
|
-
# assumes that Sensu clients' names are the same as their instance IDs in EC2.
|
28
|
-
# If this is not the case, you can either sub-class this handler and override
|
29
|
-
# `ec2_node_exists?` in your own organization-specific handler, or modify this
|
30
|
-
# handler to suit your needs.
|
31
|
-
#
|
32
|
-
# Requires the following Rubygems (`gem install $GEM`):
|
33
|
-
# - sensu-plugin
|
34
|
-
# - fog
|
35
|
-
#
|
36
|
-
# Requires a Sensu configuration snippet:
|
37
|
-
# {
|
38
|
-
# "aws": {
|
39
|
-
# "access_key": "adsafdafda",
|
40
|
-
# "secret_key": "qwuieohajladsafhj23nm",
|
41
|
-
# "region": "us-east-1c"
|
42
|
-
# }
|
43
|
-
# }
|
44
|
-
#
|
45
|
-
# Or you can set the following environment variables:
|
46
|
-
# - AWS_ACCESS_KEY_ID
|
47
|
-
# - AWS_SECRET_ACCESS_KEY
|
48
|
-
# - EC2_REGION
|
49
|
-
#
|
50
|
-
#
|
51
|
-
# To use, you can set it as the keepalive handler for a client:
|
52
|
-
# {
|
53
|
-
# "client": {
|
54
|
-
# "name": "i-424242",
|
55
|
-
# "address": "127.0.0.1",
|
56
|
-
# "keepalive": {
|
57
|
-
# "handler": "ec2_node"
|
58
|
-
# },
|
59
|
-
# "subscriptions": ["all"]
|
60
|
-
# }
|
61
|
-
# }
|
62
|
-
#
|
63
|
-
# You can also use this handler with a filter:
|
64
|
-
# {
|
65
|
-
# "filters": {
|
66
|
-
# "ghost_nodes": {
|
67
|
-
# "attributes": {
|
68
|
-
# "check": {
|
69
|
-
# "name": "keepalive",
|
70
|
-
# "status": 2
|
71
|
-
# },
|
72
|
-
# "occurences": "eval: value > 2"
|
73
|
-
# }
|
74
|
-
# }
|
75
|
-
# },
|
76
|
-
# "handlers": {
|
77
|
-
# "ec2_node": {
|
78
|
-
# "type": "pipe",
|
79
|
-
# "command": "/etc/sensu/handlers/ec2_node.rb",
|
80
|
-
# "severities": ["warning","critical"],
|
81
|
-
# "filter": "ghost_nodes"
|
82
|
-
# }
|
83
|
-
# }
|
84
|
-
# }
|
85
|
-
#
|
86
|
-
# Copyleft 2013 Yet Another Clever Name
|
87
|
-
#
|
88
|
-
# Based off of the `chef_node` handler by Heavy Water Operations, LLC
|
89
|
-
#
|
90
|
-
# Released under the same terms as Sensu (the MIT license); see
|
91
|
-
# LICENSE for details
|
92
|
-
|
93
|
-
require 'timeout'
|
94
|
-
require 'sensu-handler'
|
95
|
-
require 'fog'
|
96
|
-
|
97
|
-
class Ec2Node < Sensu::Handler
|
98
|
-
def filter; end
|
99
|
-
|
100
|
-
def handle
|
101
|
-
# #YELLOW
|
102
|
-
unless ec2_node_exists? # rubocop:disable UnlessElse
|
103
|
-
delete_sensu_client!
|
104
|
-
else
|
105
|
-
puts "[EC2 Node] #{@event['client']['name']} appears to exist in EC2"
|
106
|
-
end
|
107
|
-
end
|
108
|
-
|
109
|
-
def delete_sensu_client!
|
110
|
-
response = api_request(:DELETE, '/clients/' + @event['client']['name']).code
|
111
|
-
deletion_status(response)
|
112
|
-
end
|
113
|
-
|
114
|
-
def ec2_node_exists?
|
115
|
-
states = acquire_valid_states
|
116
|
-
filtered_instances = ec2.servers.select { |s| states.include?(s.state) }
|
117
|
-
instance_ids = filtered_instances.map(&:id)
|
118
|
-
instance_ids.each do |id|
|
119
|
-
return true if id == @event['client']['name']
|
120
|
-
end
|
121
|
-
false # no match found, node doesn't exist
|
122
|
-
end
|
123
|
-
|
124
|
-
def ec2
|
125
|
-
@ec2 ||= begin
|
126
|
-
key = settings['aws']['access_key'] || ENV['AWS_ACCESS_KEY_ID']
|
127
|
-
secret = settings['aws']['secret_key'] || ENV['AWS_SECRET_ACCESS_KEY']
|
128
|
-
region = settings['aws']['region'] || ENV['EC2_REGION']
|
129
|
-
Fog::Compute.new(provider: 'AWS',
|
130
|
-
aws_access_key_id: key,
|
131
|
-
aws_secret_access_key: secret,
|
132
|
-
region: region)
|
133
|
-
end
|
134
|
-
end
|
135
|
-
|
136
|
-
def deletion_status(code)
|
137
|
-
case code
|
138
|
-
when '202'
|
139
|
-
puts "[EC2 Node] 202: Successfully deleted Sensu client: #{node}"
|
140
|
-
when '404'
|
141
|
-
puts "[EC2 Node] 404: Unable to delete #{node}, doesn't exist!"
|
142
|
-
when '500'
|
143
|
-
puts "[EC2 Node] 500: Miscellaneous error when deleting #{node}"
|
144
|
-
else
|
145
|
-
puts "[EC2 Node] #{res}: Completely unsure of what happened!"
|
146
|
-
end
|
147
|
-
end
|
148
|
-
|
149
|
-
def acquire_valid_states
|
150
|
-
if @event['client'].key?('ec2_states')
|
151
|
-
return @event['client']['ec2_states']
|
152
|
-
else
|
153
|
-
return ['running']
|
154
|
-
end
|
155
|
-
end
|
156
|
-
end
|