hq-aws-check-sqs-queue 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 2cc5d9ea4e103b699c1f4e8d1e1d35b733aabd33
4
+ data.tar.gz: 5a1f97687ffb686992e90b8233dacb04a6f4772c
5
+ SHA512:
6
+ metadata.gz: df7fe666c58138e0e5d43afb46c1a819f107c0a30579a4994ff851f5a21d33ddd480894b754ed88c4051d50a9464eaec7b3371ed537c2baa71288cfb71571ac6
7
+ data.tar.gz: 49ecb752ce42cd4c8c953d4855b9e42d6fac45af7b1ecb609c1c49af0ab12d91aa396ebded1230460a4eb7291b2631da2f5648346724bfdf305ac53cdd6c2720
@@ -0,0 +1,58 @@
1
+ Feature: Check SQS queue size
2
+
3
+ Background:
4
+
5
+ Given a file "accounts.xml":
6
+ """
7
+ <aws-accounts>
8
+ <aws-account
9
+ name="account"
10
+ access-key-id="access key id"
11
+ secret-access-key="secret access key"/>
12
+ </aws-accounts>
13
+ """
14
+
15
+ Given a file "default.args":
16
+ """
17
+ --config accounts.xml
18
+ --account account
19
+ --queue-name queue
20
+ --warning 1
21
+ --critical 2
22
+ """
23
+
24
+ Scenario: Ok
25
+
26
+ Given the queue has 0 items
27
+
28
+ When I invoke hq-aws-check-sqs-queue with "default.args"
29
+
30
+ Then the command stdout should be:
31
+ """
32
+ SQS queue OK: 0 messages
33
+ """
34
+ And the command exit status should be 0
35
+
36
+ Scenario: Warning
37
+
38
+ Given the queue has 1 items
39
+
40
+ When I invoke hq-aws-check-sqs-queue with "default.args"
41
+
42
+ Then the command stdout should be:
43
+ """
44
+ SQS queue WARNING: 1 messages (warning is 1)
45
+ """
46
+ And the command exit status should be 1
47
+
48
+ Scenario: Critical
49
+
50
+ Given the queue has 2 items
51
+
52
+ When I invoke hq-aws-check-sqs-queue with "default.args"
53
+
54
+ Then the command stdout should be:
55
+ """
56
+ SQS queue CRITICAL: 2 messages (critical is 2)
57
+ """
58
+ And the command exit status should be 2
@@ -0,0 +1,7 @@
1
+ require "hq/cucumber/command"
2
+ require "hq/cucumber/temp-dir"
3
+
4
+ require "hq/aws/check-sqs-queue/script"
5
+
6
+ $commands["hq-aws-check-sqs-queue"] =
7
+ HQ::AWS::CheckSqsQueue::Script
@@ -0,0 +1,55 @@
1
+ require "cucumber/rspec/doubles"
2
+
3
+ Before do
4
+
5
+ sqs_double = double "sqs"
6
+ queues_double = double "queues"
7
+ queue_double = double "queue"
8
+
9
+ ::AWS::SQS.stub(:new) do
10
+ |opts|
11
+
12
+ opts[:access_key_id].should == "access key id"
13
+ opts[:secret_access_key].should == "secret access key"
14
+ opts[:http_open_timeout].should == 10
15
+ opts[:http_read_timeout].should == 10
16
+
17
+ sqs_double
18
+
19
+ end
20
+
21
+ sqs_double.stub(:queues) do
22
+
23
+ queues_double
24
+
25
+ end
26
+
27
+ queues_double.stub(:named) do
28
+ |queue_name|
29
+
30
+ queue_name.should == "queue"
31
+
32
+ queue_double
33
+
34
+ end
35
+
36
+ queue_double
37
+ .stub(:approximate_number_of_messages)
38
+ .and_return { @messages_in_queue }
39
+
40
+ queue_double
41
+ .stub(:approximate_number_of_messages_delayed)
42
+ .and_return { 0 }
43
+
44
+ queue_double
45
+ .stub(:approximate_number_of_messages_not_visible)
46
+ .and_return { 0 }
47
+
48
+ end
49
+
50
+ Given /^the queue has (\d+) items$/ do
51
+ |count_str|
52
+
53
+ @messages_in_queue = count_str.to_i
54
+
55
+ end
@@ -0,0 +1,121 @@
1
+ require "aws-sdk"
2
+ require "xml"
3
+
4
+ require "hq/tools/check-script"
5
+ require "hq/tools/escape"
6
+ require "hq/tools/future"
7
+ require "hq/tools/getopt"
8
+ require "hq/tools/thread-pool"
9
+
10
+ module HQ
11
+ module AWS
12
+ module CheckSqsQueue
13
+
14
+ class Script < Tools::CheckScript
15
+
16
+ include Tools::Escape
17
+
18
+ def initialize
19
+ super
20
+ @name = "SQS queue"
21
+ end
22
+
23
+ def process_args
24
+
25
+ @opts, @args =
26
+ Tools::Getopt.process @args, [
27
+
28
+ { :name => :warning,
29
+ :required => true,
30
+ :convert => :to_i },
31
+
32
+ { :name => :critical,
33
+ :required => true,
34
+ :convert => :to_i },
35
+
36
+ { :name => :config,
37
+ :required => true },
38
+
39
+ { :name => :account,
40
+ :required => true },
41
+
42
+ { :name => :queue_name,
43
+ :required => true },
44
+
45
+ ]
46
+
47
+ @args.empty? \
48
+ or raise "Extra args on command line"
49
+
50
+ end
51
+
52
+ def prepare
53
+
54
+ config_doc =
55
+ XML::Document.file \
56
+ @opts[:config]
57
+
58
+ @config =
59
+ config_doc.root
60
+
61
+ @account =
62
+ @config.find_first "
63
+ aws-account [
64
+ @name = #{esc_xp @opts[:account]}
65
+ ]
66
+ "
67
+
68
+ raise "No such account" \
69
+ unless @account
70
+
71
+ @sqs =
72
+ ::AWS::SQS.new \
73
+ :access_key_id =>
74
+ @account.attributes["access-key-id"],
75
+ :secret_access_key =>
76
+ @account.attributes["secret-access-key"],
77
+ :http_open_timeout => 10,
78
+ :http_read_timeout => 10
79
+
80
+ end
81
+
82
+ def perform_checks
83
+
84
+ queue =
85
+ @sqs.queues.named @opts[:queue_name]
86
+
87
+ message_count = [
88
+ queue.approximate_number_of_messages,
89
+ queue.approximate_number_of_messages_delayed,
90
+ queue.approximate_number_of_messages_not_visible,
91
+ ].inject(:+)
92
+
93
+ if message_count >= @opts[:critical]
94
+
95
+ critical "%s messages (critical is %s)" % [
96
+ message_count,
97
+ @opts[:critical],
98
+ ]
99
+
100
+ elsif message_count >= @opts[:warning]
101
+
102
+ warning "%s messages (warning is %s)" % [
103
+ message_count,
104
+ @opts[:warning],
105
+ ]
106
+
107
+ else
108
+
109
+ message "%s messages" % [
110
+ message_count,
111
+ ]
112
+
113
+ end
114
+
115
+ end
116
+
117
+ end
118
+
119
+ end
120
+ end
121
+ end
metadata ADDED
@@ -0,0 +1,190 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: hq-aws-check-sqs-queue
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - James Pharaoh
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2013-05-14 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: aws-sdk
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - '>='
18
+ - !ruby/object:Gem::Version
19
+ version: 1.9.5
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - '>='
25
+ - !ruby/object:Gem::Version
26
+ version: 1.9.5
27
+ - !ruby/object:Gem::Dependency
28
+ name: hq-tools
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - '>='
32
+ - !ruby/object:Gem::Version
33
+ version: 0.8.0
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - '>='
39
+ - !ruby/object:Gem::Version
40
+ version: 0.8.0
41
+ - !ruby/object:Gem::Dependency
42
+ name: libxml-ruby
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - '>='
46
+ - !ruby/object:Gem::Version
47
+ version: 2.6.0
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - '>='
53
+ - !ruby/object:Gem::Version
54
+ version: 2.6.0
55
+ - !ruby/object:Gem::Dependency
56
+ name: cucumber
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - '>='
60
+ - !ruby/object:Gem::Version
61
+ version: 1.3.1
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - '>='
67
+ - !ruby/object:Gem::Version
68
+ version: 1.3.1
69
+ - !ruby/object:Gem::Dependency
70
+ name: hq-dev
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - '>='
74
+ - !ruby/object:Gem::Version
75
+ version: 0.0.13
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - '>='
81
+ - !ruby/object:Gem::Version
82
+ version: 0.0.13
83
+ - !ruby/object:Gem::Dependency
84
+ name: json
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - '>='
88
+ - !ruby/object:Gem::Version
89
+ version: 1.7.7
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - '>='
95
+ - !ruby/object:Gem::Version
96
+ version: 1.7.7
97
+ - !ruby/object:Gem::Dependency
98
+ name: rake
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - '>='
102
+ - !ruby/object:Gem::Version
103
+ version: 10.0.4
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - '>='
109
+ - !ruby/object:Gem::Version
110
+ version: 10.0.4
111
+ - !ruby/object:Gem::Dependency
112
+ name: rspec
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - '>='
116
+ - !ruby/object:Gem::Version
117
+ version: 2.13.0
118
+ type: :development
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - '>='
123
+ - !ruby/object:Gem::Version
124
+ version: 2.13.0
125
+ - !ruby/object:Gem::Dependency
126
+ name: rspec_junit_formatter
127
+ requirement: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - '>='
130
+ - !ruby/object:Gem::Version
131
+ version: 0.1.6
132
+ type: :development
133
+ prerelease: false
134
+ version_requirements: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - '>='
137
+ - !ruby/object:Gem::Version
138
+ version: 0.1.6
139
+ - !ruby/object:Gem::Dependency
140
+ name: simplecov
141
+ requirement: !ruby/object:Gem::Requirement
142
+ requirements:
143
+ - - '>='
144
+ - !ruby/object:Gem::Version
145
+ version: 0.7.1
146
+ type: :development
147
+ prerelease: false
148
+ version_requirements: !ruby/object:Gem::Requirement
149
+ requirements:
150
+ - - '>='
151
+ - !ruby/object:Gem::Version
152
+ version: 0.7.1
153
+ description: Icinga/nagios plugin to check the status of an Amazon SQS queue
154
+ email:
155
+ - james@phsys.co.uk
156
+ executables: []
157
+ extensions: []
158
+ extra_rdoc_files: []
159
+ files:
160
+ - lib/hq/aws/check-sqs-queue/script.rb
161
+ - features/basic.feature
162
+ - features/support/steps.rb
163
+ - features/support/env.rb
164
+ homepage: https://github.com/jamespharaoh/hq-aws-check-sqs-queue
165
+ licenses: []
166
+ metadata: {}
167
+ post_install_message:
168
+ rdoc_options: []
169
+ require_paths:
170
+ - lib
171
+ required_ruby_version: !ruby/object:Gem::Requirement
172
+ requirements:
173
+ - - '>='
174
+ - !ruby/object:Gem::Version
175
+ version: '0'
176
+ required_rubygems_version: !ruby/object:Gem::Requirement
177
+ requirements:
178
+ - - '>='
179
+ - !ruby/object:Gem::Version
180
+ version: 1.3.6
181
+ requirements: []
182
+ rubyforge_project: hq-aws-check-sqs-queue
183
+ rubygems_version: 2.0.3
184
+ signing_key:
185
+ specification_version: 4
186
+ summary: HQ AWS check SQS queue
187
+ test_files:
188
+ - features/basic.feature
189
+ - features/support/steps.rb
190
+ - features/support/env.rb