sensu-plugins-sensu 3.0.0 → 4.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 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