sensu-plugins-sensu 3.0.0 → 4.0.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 74be22e9979ca4bce08680ae287bbdc861afff3afc3783fccd98a1d0a9fbd528
4
- data.tar.gz: bd7f1ed317662a1892ed771d7d74b3e8e6a7f8936fa0efd93942631b62b34821
3
+ metadata.gz: 6133a1d932a4e24c9866faaf379348fcc320fdb6d00afbefd7cd934dcaf95f01
4
+ data.tar.gz: 6feac0be3ec402a6374a97823dd095421cd5aa34666a444da2dc68c8261169e2
5
5
  SHA512:
6
- metadata.gz: bc717f238a82fcd66675ff1b5b4c441c2f065f2d90f92c89d784f84262d4dbdcebb0c74f91f7be9700b129f98fdc9c765c319d93fe13f83d02c57242c2836fbc
7
- data.tar.gz: c2c3a8b78237a623c30484fbdb8e193abced393ae1cbf4e9055cfa0d358c9435d9faddeee4afa58a5896a55262b501f5cf7774c794d392593251409d56061c8a
6
+ metadata.gz: 8097b173310aa6a407c16a8c89505c2a794fabf3fab36e25b09c77c93d3af34046a986e0001061d8d27efccdc24328ffcb246075396ccd89a5b66c5e14824a55
7
+ data.tar.gz: 568f7b0e700cb97df368f6343aa57b79c9a34726ba077397bce5f713cd38a35752aa5f2c911aed61ec4895fff1d99147aafb63780eb3e66e0e63351357c4d041
data/CHANGELOG.md CHANGED
@@ -6,6 +6,27 @@ Which is based on [Keep A Changelog](http://keepachangelog.com/)
6
6
 
7
7
  ## [Unreleased]
8
8
 
9
+ ## [4.0.0] - 2018-07-18
10
+ ### Security
11
+ - updated `yard` dependency to `~> 0.9.11` per: https://nvd.nist.gov/vuln/detail/CVE-2017-17042 which closes attacks against a yard server loading arbitrary files (@majormoses)
12
+ - updated rubocop dependency to `~> 0.51.0` per: https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-8418. (@majormoses)
13
+
14
+ ### Breaking Changes
15
+ - removing ruby support for `< 2.3` versions as they are EOL (@majormoses)
16
+ - metrics-aggregate.rb: removed support for `sensu` api versions lower than `0.24` you can read about it [here](https://github.com/sensu/sensu/issues/1218) (@majormoses)
17
+
18
+ ### Removed
19
+ - gemnasium badge as github offers native feature and they were bought by gitlab and no longer available as a standalone product (@majormoses)
20
+
21
+ ### Added
22
+ - slack badge (@majormoses)
23
+
24
+ ### Changed
25
+ - check-stale-results.rb: improve error message when there is no api key in sensu settings (@majormoses)
26
+ - bumped dependency of `sensu-plugin` to `~> 2.5` (@majormoses)
27
+ - appeasing the cops (@majormoses)
28
+
29
+ ## [3.0.0] - 2018-05-17
9
30
  ### Breaking Change
10
31
  - bumped dependency of `sensu-plugin` to 2.x you can read about it [here](https://github.com/sensu-plugins/sensu-plugin/blob/master/CHANGELOG.md#v200---2017-03-29)
11
32
 
@@ -122,7 +143,8 @@ Which is based on [Keep A Changelog](http://keepachangelog.com/)
122
143
  ### Added
123
144
  - initial release
124
145
 
125
- [Unreleased]: https://github.com/sensu-plugins/sensu-plugins-sensu/compare/3.0.0...HEAD
146
+ [Unreleased]: https://github.com/sensu-plugins/sensu-plugins-sensu/compare/4.0.0...HEAD
147
+ [4.0.0]: https://github.com/sensu-plugins/sensu-plugins-sensu/compare/3.0.0...4.0.0
126
148
  [3.0.0]: https://github.com/sensu-plugins/sensu-plugins-sensu/compare/2.5.0...3.0.0
127
149
  [2.5.0]: https://github.com/sensu-plugins/sensu-plugins-sensu/compare/2.4.1...2.5.0
128
150
  [2.4.1]: https://github.com/sensu-plugins/sensu-plugins-sensu/compare/2.4.0...2.4.1
data/README.md CHANGED
@@ -4,7 +4,7 @@
4
4
  [![Gem Version](https://badge.fury.io/rb/sensu-plugins-sensu.svg)](http://badge.fury.io/rb/sensu-plugins-sensu)
5
5
  [![Code Climate](https://codeclimate.com/github/sensu-plugins/sensu-plugins-sensu/badges/gpa.svg)](https://codeclimate.com/github/sensu-plugins/sensu-plugins-sensu)
6
6
  [![Test Coverage](https://codeclimate.com/github/sensu-plugins/sensu-plugins-sensu/badges/coverage.svg)](https://codeclimate.com/github/sensu-plugins/sensu-plugins-sensu)
7
- [![Dependency Status](https://gemnasium.com/sensu-plugins/sensu-plugins-sensu.svg)](https://gemnasium.com/sensu-plugins/sensu-plugins-sensu)
7
+ [![Community Slack](https://slack.sensu.io/badge.svg)](https://slack.sensu.io/badge)
8
8
 
9
9
  ## Functionality
10
10
 
@@ -1,4 +1,6 @@
1
1
  #!/usr/bin/env ruby
2
+ # frozen_string_literal: false
3
+
2
4
  #
3
5
  # Check Aggregate
4
6
  # ===
@@ -171,7 +173,7 @@ class CheckAggregate < Sensu::Plugin::Check::CLI
171
173
  aggregate[:results].delete_if do |entry|
172
174
  begin
173
175
  api_request("/stashes/silence/#{entry[:client]}/#{config[:check]}")
174
- if entry[:status] == 0
176
+ if entry[:status].zero?
175
177
  aggregate[:ok] = aggregate[:ok] - 1
176
178
  elsif entry[:status] == 1
177
179
  aggregate[:warning] = aggregate[:warning] - 1
@@ -192,7 +194,7 @@ class CheckAggregate < Sensu::Plugin::Check::CLI
192
194
  def collect_output(aggregate)
193
195
  output = ''
194
196
  aggregate[:results].each do |entry|
195
- output << entry[:output] + "\n" unless entry[:status] == 0
197
+ output << entry[:output] + "\n" unless entry[:status].zero?
196
198
  end
197
199
  aggregate[:outputs] = [output]
198
200
  end
@@ -208,7 +210,7 @@ class CheckAggregate < Sensu::Plugin::Check::CLI
208
210
 
209
211
  def named_aggregate_results
210
212
  results = api_request("/aggregates/#{config[:check]}?max_age=#{config[:age]}")[:results]
211
- warning "No aggregates found in last #{config[:age]} seconds" if %w(ok warning critical unknown).all? { |x| results[x.to_sym] == 0 }
213
+ warning "No aggregates found in last #{config[:age]} seconds" if %w[ok warning critical unknown].all? { |x| results[x.to_sym].zero? }
212
214
  results
213
215
  end
214
216
 
@@ -263,7 +265,7 @@ class CheckAggregate < Sensu::Plugin::Check::CLI
263
265
  if config[:debug]
264
266
  message += "\n" + aggregate.to_s
265
267
  end
266
- aggregate[:outputs].each do |output, _count|
268
+ aggregate[:outputs].each_key do |output|
267
269
  matched = regex.match(output.to_s)
268
270
  unless matched.nil?
269
271
  key = matched[1]
@@ -1,4 +1,6 @@
1
1
  #!/usr/bin/env ruby
2
+ # frozen_string_literal: false
3
+
2
4
  #
3
5
  # check-stale-results.rb
4
6
  #
@@ -54,7 +56,7 @@ class CheckStaleResults < Sensu::Plugin::Check::CLI
54
56
 
55
57
  def humanize(secs)
56
58
  [[60, :seconds], [60, :minutes], [24, :hours], [1000, :days]].map do |count, name|
57
- if secs > 0
59
+ if secs.positive?
58
60
  secs, n = secs.divmod(count)
59
61
  "#{n.to_i} #{name}"
60
62
  end
@@ -69,7 +71,11 @@ class CheckStaleResults < Sensu::Plugin::Check::CLI
69
71
 
70
72
  def api_request(method, path)
71
73
  unless settings.key?('api')
72
- raise 'api.json settings not found.'
74
+ unknown <<~HEREDOC
75
+ sensu does not have an api config stanza set, please configure it in
76
+ either /etc/sensu/config.json or in any config that is loaded by sensu
77
+ such as /etc/sensu/conf.d/api.json
78
+ HEREDOC
73
79
  end
74
80
  uri = get_uri(path)
75
81
  Net::HTTP.start(uri.host, uri.port, use_ssl: uri.scheme == 'https') do |http|
@@ -85,7 +91,7 @@ class CheckStaleResults < Sensu::Plugin::Check::CLI
85
91
  def results
86
92
  res = []
87
93
  req = api_request(:GET, '/results')
88
- res = JSON.parse(req.body) if req && req.code == '200'
94
+ res = JSON.parse(req.body) if req&.code == '200'
89
95
  res
90
96
  end
91
97
 
@@ -1,3 +1,6 @@
1
+ #!/usr/bin/env ruby
2
+ # frozen_string_literal: false
3
+
1
4
  #
2
5
  # handler-purge-stale-results.rb
3
6
  #
@@ -36,7 +39,7 @@ class HandlerPurgeStaleResults < Sensu::Handler
36
39
  def results
37
40
  res = []
38
41
  req = api_request(:GET, '/results')
39
- res = JSON.parse(req.body) if req && req.code == '200'
42
+ res = JSON.parse(req.body) if req&.code == '200'
40
43
  res
41
44
  end
42
45
 
@@ -54,33 +57,33 @@ class HandlerPurgeStaleResults < Sensu::Handler
54
57
  else
55
58
  deleted << "#{result['client']} - #{result['check']['name']}"
56
59
  end
57
- rescue
60
+ rescue StandardError
58
61
  failed << "#{result['client']} - #{result['check']['name']} (Caught exception: #{$ERROR_INFO})"
59
62
  end
60
63
  end
61
64
  end
62
65
 
63
66
  if !deleted.empty? || !failed.empty?
64
- msg = <<EOF
65
- From: Sensu <#{config[:mail_sender]}>
66
- To: <#{config[:mail_recipient]}>
67
- Subject: Purge stale check results
67
+ msg = <<~MESSAGE
68
+ From: Sensu <#{config[:mail_sender]}>
69
+ To: <#{config[:mail_recipient]}>
70
+ Subject: Purge stale check results
68
71
 
69
- This is a notification concerning the #{self.class.name} sensu handler running at #{Socket.gethostname}
72
+ This is a notification concerning the #{self.class.name} sensu handler running at #{Socket.gethostname}
70
73
 
71
- * Summary
74
+ * Summary
72
75
 
73
- Deleted: #{deleted.size}
74
- Failed to delete: #{failed.size}
76
+ Deleted: #{deleted.size}
77
+ Failed to delete: #{failed.size}
75
78
 
76
- * Failed to delete check results:
79
+ * Failed to delete check results:
77
80
 
78
- #{failed.map { |m| " #{m}" }.join("\n")}
81
+ #{failed.map { |m| " #{m}" }.join("\n")}
79
82
 
80
- * Deleted check results:
83
+ * Deleted check results:
81
84
 
82
- #{deleted.map { |m| " #{m}" }.join("\n")}
83
- EOF
85
+ #{deleted.map { |m| " #{m}" }.join("\n")}
86
+ MESSAGE
84
87
 
85
88
  Net::SMTP.start(config[:mail_server]) do |smtp|
86
89
  smtp.send_message(msg, config[:mail_sender], config[:mail_recipient])
@@ -1,4 +1,5 @@
1
1
  #!/usr/bin/env ruby
2
+ # frozen_string_literal: false
2
3
 
3
4
  require 'rubygems'
4
5
  require 'sensu-handler'
@@ -21,13 +22,13 @@ class Deregister < Sensu::Handler
21
22
  end
22
23
 
23
24
  def delete_sensu_client!
24
- if config[:invalidate] && config[:invalidate_expire]
25
- response = api_request(:DELETE, '/clients/' + @event['client']['name'] + "?invalidate=#{config[:invalidate]}&#{config[:invalidate_expire]}").code
26
- elsif config[:invalidate]
27
- response = api_request(:DELETE, '/clients/' + @event['client']['name'] + "?invalidate=#{config[:invalidate]}").code
28
- else
29
- response = api_request(:DELETE, '/clients/' + @event['client']['name']).code
30
- end
25
+ response = if config[:invalidate] && config[:invalidate_expire]
26
+ api_request(:DELETE, '/clients/' + @event['client']['name'] + "?invalidate=#{config[:invalidate]}&#{config[:invalidate_expire]}").code
27
+ elsif config[:invalidate]
28
+ api_request(:DELETE, '/clients/' + @event['client']['name'] + "?invalidate=#{config[:invalidate]}").code
29
+ else
30
+ api_request(:DELETE, '/clients/' + @event['client']['name']).code
31
+ end
31
32
  deletion_status(response)
32
33
  end
33
34
 
data/bin/handler-sensu.rb CHANGED
@@ -1,4 +1,6 @@
1
1
  #!/usr/bin/env ruby
2
+ # frozen_string_literal: false
3
+
2
4
  #
3
5
  ##################
4
6
  # Sensu Remediator
@@ -1,4 +1,6 @@
1
1
  #!/usr/bin/env ruby
2
+ # frozen_string_literal: false
3
+
2
4
  #
3
5
  # Aggregate Metrics
4
6
  #
@@ -115,27 +117,12 @@ class AggregateMetrics < Sensu::Plugin::Metric::CLI::Generic
115
117
  acquire_checks.each do |check|
116
118
  aggregate = get_aggregate(check['name'])
117
119
  puts "#{check['name']} aggregates: #{aggregate}" if config[:debug]
118
- aggregate.each do |result, count|
119
- # in 0.24 they changed the api results for aggregates this helps
120
- # maintain backwards compatibility with 0.23 and newer versions.
121
- if count.is_a?(Hash)
122
- count.each do |x, y|
123
- output metric_name: x,
124
- value: y,
125
- graphite_metric_path: "#{config[:scheme]}.#{check['name']}.#{x}",
126
- statsd_metric_name: "#{config[:scheme]}.#{check['name']}.#{x}",
127
- influxdb_measurement: config[:measurement],
128
- tags: {
129
- check: check['name'],
130
- host: Socket.gethostname
131
- },
132
- timestamp: timestamp
133
- end
134
- else
135
- output metric_name: result,
136
- value: count,
137
- graphite_metric_path: "#{config[:scheme]}.#{check['name']}.#{result}",
138
- statsd_metric_name: "#{config[:scheme]}.#{check['name']}.#{result}",
120
+ aggregate.each_value do |count|
121
+ count.each do |x, y|
122
+ output metric_name: x,
123
+ value: y,
124
+ graphite_metric_path: "#{config[:scheme]}.#{check['name']}.#{x}",
125
+ statsd_metric_name: "#{config[:scheme]}.#{check['name']}.#{x}",
139
126
  influxdb_measurement: config[:measurement],
140
127
  tags: {
141
128
  check: check['name'],
@@ -1,4 +1,6 @@
1
1
  #!/usr/bin/env ruby
2
+ # frozen_string_literal: false
3
+
2
4
  #
3
5
  # Delete stashes when their 'expires' timestamp is exceeded
4
6
  # ===
@@ -14,12 +16,11 @@ require 'rest-client'
14
16
  require 'json'
15
17
  require 'socket'
16
18
 
17
- include Sensu::Plugin::Utils
18
-
19
19
  class CheckSilenced < Sensu::Plugin::Metric::CLI::Generic
20
+ include Sensu::Plugin::Utils
20
21
  default_host = begin
21
22
  settings['api']['host']
22
- rescue
23
+ rescue StandardError
23
24
  'localhost'
24
25
  end
25
26
 
@@ -81,7 +82,7 @@ class CheckSilenced < Sensu::Plugin::Metric::CLI::Generic
81
82
  all_stashes.each do |stash|
82
83
  filtered_stashes << stash if stash['path'] =~ /^#{@config[:filter]}\/.*/
83
84
  end
84
- return filtered_stashes
85
+ filtered_stashes
85
86
  rescue Errno::ECONNREFUSED
86
87
  warning 'Connection refused'
87
88
  rescue RestClient::RequestTimeout
@@ -99,9 +100,9 @@ class CheckSilenced < Sensu::Plugin::Metric::CLI::Generic
99
100
  stashes = acquire_stashes
100
101
  now = Time.now.to_i
101
102
  @count = 0
102
- if stashes.count > 0
103
+ if stashes.count.positive?
103
104
  stashes.each do |stash|
104
- if stash['content'].key?('expires') && now - stash['content']['expires'] > 0
105
+ if stash['content'].key?('expires') && now - stash['content']['expires'] .positive?
105
106
  delete_stash(stash) unless config[:noop]
106
107
  @count += 1
107
108
  end
@@ -1,4 +1,6 @@
1
1
  #!/usr/bin/env ruby
2
+ # frozen_string_literal: false
3
+
2
4
  #
3
5
  # Event Metrics
4
6
  #
@@ -1 +1,3 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'sensu-plugins-sensu/version'
@@ -1,7 +1,9 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module SensuPluginsSensu
2
4
  # This defines the version of the gem
3
5
  module Version
4
- MAJOR = 3
6
+ MAJOR = 4
5
7
  MINOR = 0
6
8
  PATCH = 0
7
9
 
metadata CHANGED
@@ -1,29 +1,29 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sensu-plugins-sensu
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.0.0
4
+ version: 4.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: 2018-03-17 00:00:00.000000000 Z
11
+ date: 2018-07-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: sensu-plugin
14
+ name: chronic_duration
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - "~>"
17
+ - - '='
18
18
  - !ruby/object:Gem::Version
19
- version: '2.4'
19
+ version: 0.10.6
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - "~>"
24
+ - - '='
25
25
  - !ruby/object:Gem::Version
26
- version: '2.4'
26
+ version: 0.10.6
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: rest-client
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -39,19 +39,19 @@ dependencies:
39
39
  - !ruby/object:Gem::Version
40
40
  version: 1.8.0
41
41
  - !ruby/object:Gem::Dependency
42
- name: chronic_duration
42
+ name: sensu-plugin
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - '='
45
+ - - "~>"
46
46
  - !ruby/object:Gem::Version
47
- version: 0.10.6
47
+ version: '2.5'
48
48
  type: :runtime
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - '='
52
+ - - "~>"
53
53
  - !ruby/object:Gem::Version
54
- version: 0.10.6
54
+ version: '2.5'
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: bundler
57
57
  requirement: !ruby/object:Gem::Requirement
@@ -109,75 +109,75 @@ dependencies:
109
109
  - !ruby/object:Gem::Version
110
110
  version: '0.10'
111
111
  - !ruby/object:Gem::Dependency
112
- name: rubocop
112
+ name: rake
113
113
  requirement: !ruby/object:Gem::Requirement
114
114
  requirements:
115
115
  - - "~>"
116
116
  - !ruby/object:Gem::Version
117
- version: 0.40.0
117
+ version: '10.0'
118
118
  type: :development
119
119
  prerelease: false
120
120
  version_requirements: !ruby/object:Gem::Requirement
121
121
  requirements:
122
122
  - - "~>"
123
123
  - !ruby/object:Gem::Version
124
- version: 0.40.0
124
+ version: '10.0'
125
125
  - !ruby/object:Gem::Dependency
126
- name: rspec
126
+ name: redcarpet
127
127
  requirement: !ruby/object:Gem::Requirement
128
128
  requirements:
129
129
  - - "~>"
130
130
  - !ruby/object:Gem::Version
131
- version: '3.1'
131
+ version: '3.2'
132
132
  type: :development
133
133
  prerelease: false
134
134
  version_requirements: !ruby/object:Gem::Requirement
135
135
  requirements:
136
136
  - - "~>"
137
137
  - !ruby/object:Gem::Version
138
- version: '3.1'
138
+ version: '3.2'
139
139
  - !ruby/object:Gem::Dependency
140
- name: rake
140
+ name: rspec
141
141
  requirement: !ruby/object:Gem::Requirement
142
142
  requirements:
143
143
  - - "~>"
144
144
  - !ruby/object:Gem::Version
145
- version: '10.0'
145
+ version: '3.1'
146
146
  type: :development
147
147
  prerelease: false
148
148
  version_requirements: !ruby/object:Gem::Requirement
149
149
  requirements:
150
150
  - - "~>"
151
151
  - !ruby/object:Gem::Version
152
- version: '10.0'
152
+ version: '3.1'
153
153
  - !ruby/object:Gem::Dependency
154
- name: redcarpet
154
+ name: rubocop
155
155
  requirement: !ruby/object:Gem::Requirement
156
156
  requirements:
157
157
  - - "~>"
158
158
  - !ruby/object:Gem::Version
159
- version: '3.2'
159
+ version: 0.51.0
160
160
  type: :development
161
161
  prerelease: false
162
162
  version_requirements: !ruby/object:Gem::Requirement
163
163
  requirements:
164
164
  - - "~>"
165
165
  - !ruby/object:Gem::Version
166
- version: '3.2'
166
+ version: 0.51.0
167
167
  - !ruby/object:Gem::Dependency
168
168
  name: yard
169
169
  requirement: !ruby/object:Gem::Requirement
170
170
  requirements:
171
171
  - - "~>"
172
172
  - !ruby/object:Gem::Version
173
- version: '0.8'
173
+ version: 0.9.11
174
174
  type: :development
175
175
  prerelease: false
176
176
  version_requirements: !ruby/object:Gem::Requirement
177
177
  requirements:
178
178
  - - "~>"
179
179
  - !ruby/object:Gem::Version
180
- version: '0.8'
180
+ version: 0.9.11
181
181
  description: This plugin provides monitoring and metrics for Sensu.
182
182
  email: "<sensu-users@googlegroups.com>"
183
183
  executables:
@@ -223,7 +223,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
223
223
  requirements:
224
224
  - - ">="
225
225
  - !ruby/object:Gem::Version
226
- version: 2.0.0
226
+ version: 2.3.0
227
227
  required_rubygems_version: !ruby/object:Gem::Requirement
228
228
  requirements:
229
229
  - - ">="
@@ -231,7 +231,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
231
231
  version: '0'
232
232
  requirements: []
233
233
  rubyforge_project:
234
- rubygems_version: 2.7.6
234
+ rubygems_version: 2.7.7
235
235
  signing_key:
236
236
  specification_version: 4
237
237
  summary: Sensu plugins for sensu