sensu-plugins-twilio 1.0.0 → 2.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -5
- data/CHANGELOG.md +31 -1
- data/README.md +20 -3
- data/bin/handler-twiliosms.rb +78 -19
- data/lib/sensu-plugins-twilio/version.rb +1 -1
- metadata +44 -46
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: a18c7edf5b1fd69af670e932d8e452c837dab00d78ea3857bc04fa59af0f326b
|
4
|
+
data.tar.gz: '0911b3c675af9ba10293b70f6fb8cc5e15ae0c2096461644e84ef7610f488585'
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9e98d7c3891530b4af6d7aa3e680a82f28e6e189bbc5f9376d1c31c2a6dd5bf5bf6aa47db7da3b93ab860dc17fd51bde8416f0875681f02203b4486415998631
|
7
|
+
data.tar.gz: 7a9c1d27fc43bdf45e3809e11f5560ef57f57b1be0de1ee9d0fb2d49f2edf61e90b59a3a98948544b5d49084d5cb013c62ae74782d88b585dc34506bfd7a5225
|
data/CHANGELOG.md
CHANGED
@@ -5,6 +5,35 @@ This CHANGELOG follows the format listed at [Keep A Changelog](http://keepachang
|
|
5
5
|
|
6
6
|
## [Unreleased]
|
7
7
|
|
8
|
+
## [2.0.0] - 2018-12-28
|
9
|
+
### Added
|
10
|
+
- Bump sensu-plugin runtime dep to 3.0 with Sensu Go to Sensu Core 1.x migration option (@jspaleta)
|
11
|
+
- Ruby 2.4.1 testing
|
12
|
+
- Ruby 2.5.1 testing (@jspaleta)
|
13
|
+
- Added --verbose cmdline switch to aid in local testing
|
14
|
+
- Added --disable_send cmdline switch to aid in local testing
|
15
|
+
|
16
|
+
### Breaking Changes
|
17
|
+
- Dropped 2.0 ruby testing (@jspaleta)
|
18
|
+
- Dropped 2.1 ruby testing (@jspaleta)
|
19
|
+
- Dropped 2.2 ruby testing (@jspaleta)
|
20
|
+
- Dropped rest-client runtime dep, no longer needed (@jspaleta)
|
21
|
+
- Set required_ruby_version in gemspec to >= 2.3.0 (@jspaleta)
|
22
|
+
|
23
|
+
### Changed
|
24
|
+
- Bump twilio runtime dep to 5.18.0 (@jspaleta)
|
25
|
+
- Bump codeclimate development dep to 1.0 (@jspaleta)
|
26
|
+
- Bump rake development dep to 12.3 (@jspaleta)
|
27
|
+
- Bump rubocop development dep to 0.61.1 (@jspaleta)
|
28
|
+
- Bump yard development dep to 0.9.11 (@jspaleta)
|
29
|
+
- Added explict rdoc development dep needed for ruby 2.5.1 (@jspaleta)
|
30
|
+
- Updated .rubocop.yml to disable unneeded warning messages (@jspaleta)
|
31
|
+
- Updated Rakefile and introduce quick task (@jspaleta)
|
32
|
+
- Updated .travis.yml to use quick task (@jspaleta)
|
33
|
+
- Clean up robucop warnings (@jspaleta)
|
34
|
+
- Updated README.md with clearer explanation concerning config
|
35
|
+
|
36
|
+
|
8
37
|
## [1.0.0] - 2016-05-24
|
9
38
|
### Added
|
10
39
|
- Ruby 2.3.0 support
|
@@ -38,7 +67,8 @@ This CHANGELOG follows the format listed at [Keep A Changelog](http://keepachang
|
|
38
67
|
### Added
|
39
68
|
- initial release
|
40
69
|
|
41
|
-
[Unreleased]: https://github.com/sensu-plugins/sensu-plugins-twilio/compare/
|
70
|
+
[Unreleased]: https://github.com/sensu-plugins/sensu-plugins-twilio/compare/2.0.0...HEAD
|
71
|
+
[2.0.0]: https://github.com/sensu-plugins/sensu-plugins-twilio/compare/1.0.0...2.0.0
|
42
72
|
[1.0.0]: https://github.com/sensu-plugins/sensu-plugins-twilio/compare/0.0.4...1.0.0
|
43
73
|
[0.0.4]: https://github.com/sensu-plugins/sensu-plugins-twilio/compare/0.0.3...0.0.4
|
44
74
|
[0.0.3]: https://github.com/sensu-plugins/sensu-plugins-twilio/compare/0.0.2...0.0.3
|
data/README.md
CHANGED
@@ -22,9 +22,9 @@
|
|
22
22
|
"sid":"AC0ds98gd098gf09d8fg",
|
23
23
|
"recipients":{
|
24
24
|
"+11111111111": {
|
25
|
-
"sensu_roles":[ "web-server" ],
|
26
|
-
"sensu_checks":[],
|
27
|
-
"sensu_level": 1
|
25
|
+
"sensu_roles":[ "web-server" ],
|
26
|
+
"sensu_checks":[],
|
27
|
+
"sensu_level": 1
|
28
28
|
},
|
29
29
|
"+11111222222": {
|
30
30
|
"sensu_roles":[],
|
@@ -35,6 +35,23 @@
|
|
35
35
|
}
|
36
36
|
}
|
37
37
|
```
|
38
|
+
`token`, `sid`, and `number` from twilio account configuration.
|
39
|
+
|
40
|
+
`sensu_checks` -> matching checks
|
41
|
+
|
42
|
+
`sensu_roles` -> matching subscribers or special values:
|
43
|
+
|
44
|
+
* `all` matches all events
|
45
|
+
* `keepalive` matches keepalive events
|
46
|
+
|
47
|
+
`sensu_level` -> minimum matching check return status value
|
48
|
+
|
49
|
+
* `0` -> activate for all check statuses: ok+warning+critical+unknown
|
50
|
+
* `1` -> activate for warning+critical+unknown
|
51
|
+
* `2` -> activate for critical+unknown
|
52
|
+
* `3` -> activate for unknown
|
53
|
+
|
54
|
+
|
38
55
|
## Installation
|
39
56
|
|
40
57
|
[Installation and Setup](http://sensu-plugins.io/docs/installation_instructions.html)
|
data/bin/handler-twiliosms.rb
CHANGED
@@ -15,14 +15,62 @@ require 'rest-client'
|
|
15
15
|
require 'json'
|
16
16
|
|
17
17
|
class TwilioSMS < Sensu::Handler
|
18
|
+
option :verbose,
|
19
|
+
description: 'Verbose output',
|
20
|
+
short: '-v',
|
21
|
+
long: '--verbose',
|
22
|
+
boolean: true,
|
23
|
+
default: false
|
24
|
+
option :disable_send,
|
25
|
+
description: 'Disable send',
|
26
|
+
long: '--disable_send',
|
27
|
+
boolean: true,
|
28
|
+
default: false
|
29
|
+
|
18
30
|
def short_name
|
19
|
-
@event['client']['name'] + '/' + @event['check']['name']
|
31
|
+
(@event['client']['name'] || 'unknown') + '/' + (@event['check']['name'] || 'unknown')
|
32
|
+
end
|
33
|
+
|
34
|
+
def output
|
35
|
+
@event['check']['output'] || 'no check output'
|
36
|
+
end
|
37
|
+
|
38
|
+
def address
|
39
|
+
@event['client']['address'] || 'unknown address'
|
40
|
+
end
|
41
|
+
|
42
|
+
def check_name
|
43
|
+
@event['check']['name'] if @event.include? 'check'
|
44
|
+
end
|
45
|
+
|
46
|
+
def check_status
|
47
|
+
check_status = @event['check']['status'] if @event.include? 'check'
|
48
|
+
check_status || 3
|
20
49
|
end
|
21
50
|
|
22
51
|
def action_to_string
|
23
52
|
@event['action'].eql?('resolve') ? 'RESOLVED' : 'ALERT'
|
24
53
|
end
|
25
54
|
|
55
|
+
def event_match?(candidate)
|
56
|
+
matching = false
|
57
|
+
sensu_role_all = candidate['sensu_roles'].include?('all')
|
58
|
+
puts " sensu_roles includes all: #{sensu_role_all}" if config[:verbose]
|
59
|
+
matching ||= sensu_role_all
|
60
|
+
keepalive_check = @event['check']['name'].eql?('keepalive')
|
61
|
+
sensu_role_keepalive = candidate['sensu_roles'].include?('keepalive')
|
62
|
+
puts " matching keepalive: #{(sensu_role_keepalive && keepalive_check)}" if config[:verbose]
|
63
|
+
matching ||= (sensu_role_keepalive && keepalive_check)
|
64
|
+
matching_subscribers = (@event['check']['subscribers'] &&
|
65
|
+
!(candidate['sensu_roles'] & @event['check']['subscribers']).empty?)
|
66
|
+
matching_subscribers ||= false
|
67
|
+
puts " matching_subscribers: #{matching_subscribers}" if config[:verbose]
|
68
|
+
matching ||= matching_subscribers
|
69
|
+
matching_checkname = candidate['sensu_checks'].include?(check_name)
|
70
|
+
puts " matching_checkname: #{matching_checkname}" if config[:verbose]
|
71
|
+
matching || matching_checkname
|
72
|
+
end
|
73
|
+
|
26
74
|
def handle
|
27
75
|
account_sid = settings['twiliosms']['sid']
|
28
76
|
auth_token = settings['twiliosms']['token']
|
@@ -36,36 +84,47 @@ class TwilioSMS < Sensu::Handler
|
|
36
84
|
raise 'Please define a valid Twilio authentication set to use this handler' unless account_sid && auth_token && from_number
|
37
85
|
raise 'Please define a valid set of SMS recipients to use this handler' if candidates.nil? || candidates.empty?
|
38
86
|
|
87
|
+
puts "Check: #{@event['check']}" if config[:verbose]
|
88
|
+
puts "Check Status: #{check_status}" if config[:verbose]
|
39
89
|
recipients = []
|
40
90
|
candidates.each do |mobile, candidate|
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
91
|
+
puts "Mobile: #{mobile} Config:#{candidate}" if config[:verbose]
|
92
|
+
|
93
|
+
##
|
94
|
+
# Match event subsciption and/or check name using event_match? method
|
95
|
+
# and require requested level <= check_status:
|
96
|
+
# sensu_level == 0 Matches all status
|
97
|
+
# sensu_level == 1 Matches warnings+critical+unknown
|
98
|
+
# sensu_level == 2 Matches critical+unknown
|
99
|
+
# sensu_level == 3 Matches unknown
|
100
|
+
next unless event_match?(candidate) && (candidate['sensu_level'] <= check_status)
|
101
|
+
|
102
|
+
puts "Send text to: #{mobile}" if config[:verbose]
|
47
103
|
recipients << mobile
|
48
104
|
end
|
49
|
-
|
50
105
|
message = if short
|
51
|
-
"Sensu #{action_to_string}: #{
|
106
|
+
"Sensu #{action_to_string}: #{output}"
|
52
107
|
else
|
53
|
-
"Sensu #{action_to_string}: #{short_name} (#{
|
108
|
+
"Sensu #{action_to_string}: Status: #{check_status} :: #{short_name} (#{address}) #{output}"
|
54
109
|
end
|
55
110
|
|
56
111
|
message[157..message.length] = '...' if message.length > 160
|
57
112
|
|
58
113
|
twilio = Twilio::REST::Client.new(account_sid, auth_token)
|
59
114
|
recipients.each do |recipient|
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
115
|
+
if config[:disable_send]
|
116
|
+
puts "From: #{from_number} To: #{recipient} Body: #{message}"
|
117
|
+
else
|
118
|
+
begin
|
119
|
+
twilio.api.account.messages.create(
|
120
|
+
from: from_number,
|
121
|
+
to: recipient,
|
122
|
+
body: message
|
123
|
+
)
|
124
|
+
puts "Notified #{recipient} for #{action_to_string}"
|
125
|
+
rescue StandardError => e
|
126
|
+
puts "Failure detected while using Twilio to notify on event: #{e.message}"
|
127
|
+
end
|
69
128
|
end
|
70
129
|
end
|
71
130
|
end
|
metadata
CHANGED
@@ -1,71 +1,57 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sensu-plugins-twilio
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 2.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:
|
11
|
+
date: 2018-12-28 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
|
-
name:
|
15
|
-
requirement: !ruby/object:Gem::Requirement
|
16
|
-
requirements:
|
17
|
-
- - "~>"
|
18
|
-
- !ruby/object:Gem::Version
|
19
|
-
version: '1.2'
|
20
|
-
type: :runtime
|
21
|
-
prerelease: false
|
22
|
-
version_requirements: !ruby/object:Gem::Requirement
|
23
|
-
requirements:
|
24
|
-
- - "~>"
|
25
|
-
- !ruby/object:Gem::Version
|
26
|
-
version: '1.2'
|
27
|
-
- !ruby/object:Gem::Dependency
|
28
|
-
name: twilio-ruby
|
14
|
+
name: nori
|
29
15
|
requirement: !ruby/object:Gem::Requirement
|
30
16
|
requirements:
|
31
17
|
- - '='
|
32
18
|
- !ruby/object:Gem::Version
|
33
|
-
version:
|
19
|
+
version: 2.6.0
|
34
20
|
type: :runtime
|
35
21
|
prerelease: false
|
36
22
|
version_requirements: !ruby/object:Gem::Requirement
|
37
23
|
requirements:
|
38
24
|
- - '='
|
39
25
|
- !ruby/object:Gem::Version
|
40
|
-
version:
|
26
|
+
version: 2.6.0
|
41
27
|
- !ruby/object:Gem::Dependency
|
42
|
-
name:
|
28
|
+
name: sensu-plugin
|
43
29
|
requirement: !ruby/object:Gem::Requirement
|
44
30
|
requirements:
|
45
|
-
- -
|
31
|
+
- - "~>"
|
46
32
|
- !ruby/object:Gem::Version
|
47
|
-
version:
|
33
|
+
version: '3.0'
|
48
34
|
type: :runtime
|
49
35
|
prerelease: false
|
50
36
|
version_requirements: !ruby/object:Gem::Requirement
|
51
37
|
requirements:
|
52
|
-
- -
|
38
|
+
- - "~>"
|
53
39
|
- !ruby/object:Gem::Version
|
54
|
-
version:
|
40
|
+
version: '3.0'
|
55
41
|
- !ruby/object:Gem::Dependency
|
56
|
-
name:
|
42
|
+
name: twilio-ruby
|
57
43
|
requirement: !ruby/object:Gem::Requirement
|
58
44
|
requirements:
|
59
45
|
- - '='
|
60
46
|
- !ruby/object:Gem::Version
|
61
|
-
version:
|
47
|
+
version: 5.18.0
|
62
48
|
type: :runtime
|
63
49
|
prerelease: false
|
64
50
|
version_requirements: !ruby/object:Gem::Requirement
|
65
51
|
requirements:
|
66
52
|
- - '='
|
67
53
|
- !ruby/object:Gem::Version
|
68
|
-
version:
|
54
|
+
version: 5.18.0
|
69
55
|
- !ruby/object:Gem::Dependency
|
70
56
|
name: bundler
|
71
57
|
requirement: !ruby/object:Gem::Requirement
|
@@ -86,28 +72,28 @@ dependencies:
|
|
86
72
|
requirements:
|
87
73
|
- - "~>"
|
88
74
|
- !ruby/object:Gem::Version
|
89
|
-
version: '0
|
75
|
+
version: '1.0'
|
90
76
|
type: :development
|
91
77
|
prerelease: false
|
92
78
|
version_requirements: !ruby/object:Gem::Requirement
|
93
79
|
requirements:
|
94
80
|
- - "~>"
|
95
81
|
- !ruby/object:Gem::Version
|
96
|
-
version: '0
|
82
|
+
version: '1.0'
|
97
83
|
- !ruby/object:Gem::Dependency
|
98
84
|
name: github-markup
|
99
85
|
requirement: !ruby/object:Gem::Requirement
|
100
86
|
requirements:
|
101
87
|
- - "~>"
|
102
88
|
- !ruby/object:Gem::Version
|
103
|
-
version: '
|
89
|
+
version: '3.0'
|
104
90
|
type: :development
|
105
91
|
prerelease: false
|
106
92
|
version_requirements: !ruby/object:Gem::Requirement
|
107
93
|
requirements:
|
108
94
|
- - "~>"
|
109
95
|
- !ruby/object:Gem::Version
|
110
|
-
version: '
|
96
|
+
version: '3.0'
|
111
97
|
- !ruby/object:Gem::Dependency
|
112
98
|
name: pry
|
113
99
|
requirement: !ruby/object:Gem::Requirement
|
@@ -128,42 +114,42 @@ dependencies:
|
|
128
114
|
requirements:
|
129
115
|
- - "~>"
|
130
116
|
- !ruby/object:Gem::Version
|
131
|
-
version: '
|
117
|
+
version: '12.3'
|
132
118
|
type: :development
|
133
119
|
prerelease: false
|
134
120
|
version_requirements: !ruby/object:Gem::Requirement
|
135
121
|
requirements:
|
136
122
|
- - "~>"
|
137
123
|
- !ruby/object:Gem::Version
|
138
|
-
version: '
|
124
|
+
version: '12.3'
|
139
125
|
- !ruby/object:Gem::Dependency
|
140
|
-
name:
|
126
|
+
name: rdoc
|
141
127
|
requirement: !ruby/object:Gem::Requirement
|
142
128
|
requirements:
|
143
129
|
- - "~>"
|
144
130
|
- !ruby/object:Gem::Version
|
145
|
-
version: '
|
131
|
+
version: '6.0'
|
146
132
|
type: :development
|
147
133
|
prerelease: false
|
148
134
|
version_requirements: !ruby/object:Gem::Requirement
|
149
135
|
requirements:
|
150
136
|
- - "~>"
|
151
137
|
- !ruby/object:Gem::Version
|
152
|
-
version: '
|
138
|
+
version: '6.0'
|
153
139
|
- !ruby/object:Gem::Dependency
|
154
|
-
name:
|
140
|
+
name: redcarpet
|
155
141
|
requirement: !ruby/object:Gem::Requirement
|
156
142
|
requirements:
|
157
143
|
- - "~>"
|
158
144
|
- !ruby/object:Gem::Version
|
159
|
-
version:
|
145
|
+
version: '3.2'
|
160
146
|
type: :development
|
161
147
|
prerelease: false
|
162
148
|
version_requirements: !ruby/object:Gem::Requirement
|
163
149
|
requirements:
|
164
150
|
- - "~>"
|
165
151
|
- !ruby/object:Gem::Version
|
166
|
-
version:
|
152
|
+
version: '3.2'
|
167
153
|
- !ruby/object:Gem::Dependency
|
168
154
|
name: rspec
|
169
155
|
requirement: !ruby/object:Gem::Requirement
|
@@ -178,25 +164,39 @@ dependencies:
|
|
178
164
|
- - "~>"
|
179
165
|
- !ruby/object:Gem::Version
|
180
166
|
version: '3.4'
|
167
|
+
- !ruby/object:Gem::Dependency
|
168
|
+
name: rubocop
|
169
|
+
requirement: !ruby/object:Gem::Requirement
|
170
|
+
requirements:
|
171
|
+
- - "~>"
|
172
|
+
- !ruby/object:Gem::Version
|
173
|
+
version: 0.61.1
|
174
|
+
type: :development
|
175
|
+
prerelease: false
|
176
|
+
version_requirements: !ruby/object:Gem::Requirement
|
177
|
+
requirements:
|
178
|
+
- - "~>"
|
179
|
+
- !ruby/object:Gem::Version
|
180
|
+
version: 0.61.1
|
181
181
|
- !ruby/object:Gem::Dependency
|
182
182
|
name: yard
|
183
183
|
requirement: !ruby/object:Gem::Requirement
|
184
184
|
requirements:
|
185
185
|
- - "~>"
|
186
186
|
- !ruby/object:Gem::Version
|
187
|
-
version:
|
187
|
+
version: 0.9.11
|
188
188
|
type: :development
|
189
189
|
prerelease: false
|
190
190
|
version_requirements: !ruby/object:Gem::Requirement
|
191
191
|
requirements:
|
192
192
|
- - "~>"
|
193
193
|
- !ruby/object:Gem::Version
|
194
|
-
version:
|
194
|
+
version: 0.9.11
|
195
195
|
description: Sensu plugins for twilio
|
196
196
|
email: "<sensu-users@googlegroups.com>"
|
197
197
|
executables:
|
198
|
-
- check-num-recordings.rb
|
199
198
|
- handler-twiliosms.rb
|
199
|
+
- check-num-recordings.rb
|
200
200
|
extensions: []
|
201
201
|
extra_rdoc_files: []
|
202
202
|
files:
|
@@ -225,17 +225,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
225
225
|
requirements:
|
226
226
|
- - ">="
|
227
227
|
- !ruby/object:Gem::Version
|
228
|
-
version: 2.
|
228
|
+
version: 2.3.0
|
229
229
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
230
230
|
requirements:
|
231
231
|
- - ">="
|
232
232
|
- !ruby/object:Gem::Version
|
233
233
|
version: '0'
|
234
234
|
requirements: []
|
235
|
-
|
236
|
-
rubygems_version: 2.5.1
|
235
|
+
rubygems_version: 3.0.1
|
237
236
|
signing_key:
|
238
237
|
specification_version: 4
|
239
238
|
summary: Sensu plugins for twilio
|
240
239
|
test_files: []
|
241
|
-
has_rdoc:
|