sensu-plugins-chrony 0.0.8 → 2.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
- SHA1:
3
- metadata.gz: 9cac8096899909e07539a3cb15728b38b3825ac9
4
- data.tar.gz: 37a753949e0a60708685275b7319b4474d20004d
2
+ SHA256:
3
+ metadata.gz: 965f2fbf43b9f3c77f30a54bc1290865dd3d5de5cedef3d4575a978840aeffb3
4
+ data.tar.gz: 3c1aaf84eb403857d96c51d76db2fb0c35fe9fd7ec04b5b97d0281699b25fff7
5
5
  SHA512:
6
- metadata.gz: b34f1d7f6c39d2bcef2cb16273d4917e58062184829e5c71a2dbc3db123764fbf4d2f08de0b244775b26212feb83aaad6f54b90f22522ddfb0df91d998c7ecb5
7
- data.tar.gz: 2f149cf30bbe0c876e139ba363806ec7a4c680e1cf6a8c4ba5bc5b8f285b96b0969a97b828ac93398c1e70b5b2da38a7f6f1b4907876170c841f53797fdf81ec
6
+ metadata.gz: 54a4b4245e9e8fc549c8229e2f9eb8135cfb8d286d52cef7bb2de7a6a33ba3fdc500a4a0e4309c7984a759781acb9125a8d06111b027aaf3ee64aff31f3bb677
7
+ data.tar.gz: 19aff54c37cc2db333c0d7f0fdcf356daad184717b35697666a2ddd2e8b7f8eca9bb5e07696ef4fe4e2e6082afd8a6bc921e7564120713587590a9ba23f5eddf
@@ -1,9 +1,45 @@
1
1
  # Change Log
2
2
  This project adheres to [Semantic Versioning](http://semver.org/).
3
3
 
4
- This CHANGELOG follows the format listed at [Keep A Changelog](http://keepachangelog.com/)
4
+ This CHANGELOG follows the format listed [here](https://github.com/sensu-plugins/community/blob/master/HOW_WE_CHANGELOG.md)
5
5
 
6
- ## Unreleased
6
+ ## [Unreleased]
7
+
8
+ ## [2.0.0] - 2020-08-24
9
+ ### Breaking Changes
10
+ - Remove support for old Ruby (< 2.3)
11
+ - Bump sensu-plugin dependency from ~> 2.0 to ~> 4.0
12
+
13
+ ### Changed
14
+ - Updated bundler dependancy to '~> 2.1'
15
+ - Updated rubocop dependency to '~> 0.81.0'
16
+ - Remediated rubocop issues
17
+ - Updated rake dependency to '~> 13.0'
18
+ - Fixed errors where warnings where sent as critical
19
+
20
+ ## [1.0.1] - 2018-05-03
21
+ ### Fixed
22
+ - Fixes "undefined method `empty?"` (@jwatroba)
23
+
24
+ ## [1.0.0] - 2018-01-04
25
+ ### Breaking Change
26
+ - remove ruby < 2.0 support (@majormoses)
27
+ - require `sensu-plugin` 2.0 (@majormoses)
28
+
29
+ ### Added
30
+ - github templates (@majormoses)
31
+ - links to changelog guidelines (@majormoses)
32
+ - badges to README (@majormoses)
33
+ - various misc development dependencies (@majormoses)
34
+
35
+ ### Changed
36
+ - standard gemspec (@majormoses)
37
+ - appease the cops (@majormoses)
38
+ - standard Rakefile (@majormoses)
39
+
40
+ ## [0.0.9] - 2016-04-05
41
+ ### Added
42
+ - fixed metrics key naming (@vervas)
7
43
 
8
44
  ## [0.0.8] - 2016-04-04
9
45
  ### Added
@@ -36,3 +72,18 @@ This CHANGELOG follows the format listed at [Keep A Changelog](http://keepachang
36
72
  ## [0.0.1] - 2015-12-28
37
73
  ### Added
38
74
  - Initial release
75
+
76
+ [Unreleased]: https://github.com/sensu-plugins/sensu-plugins-ntp/compare/2.0.0...HEAD
77
+ [2.0.0]: https://github.com/sensu-plugins/sensu-plugins-ntp/compare/1.0.1...2.0.0
78
+ [1.0.1]: https://github.com/sensu-plugins/sensu-plugins-ntp/compare/1.0.0...1.0.1
79
+ [1.0.0]: https://github.com/sensu-plugins/sensu-plugins-ntp/compare/0.0.10...1.0.0
80
+ [0.0.10]: https://github.com/sensu-plugins/sensu-plugins-ntp/compare/0.0.9...0.0.10
81
+ [0.0.9]: https://github.com/sensu-plugins/sensu-plugins-ntp/compare/0.0.8...0.0.9
82
+ [0.0.8]: https://github.com/sensu-plugins/sensu-plugins-ntp/compare/0.0.7...0.0.8
83
+ [0.0.7]: https://github.com/sensu-plugins/sensu-plugins-ntp/compare/0.0.6...0.0.7
84
+ [0.0.6]: https://github.com/sensu-plugins/sensu-plugins-ntp/compare/0.0.5...0.0.6
85
+ [0.0.5]: https://github.com/sensu-plugins/sensu-plugins-ntp/compare/0.0.4...0.0.5
86
+ [0.0.4]: https://github.com/sensu-plugins/sensu-plugins-ntp/compare/0.0.3...0.0.4
87
+ [0.0.3]: https://github.com/sensu-plugins/sensu-plugins-ntp/compare/0.0.2...0.0.3
88
+ [0.0.2]: https://github.com/sensu-plugins/sensu-plugins-ntp/compare/0.0.1...0.0.2
89
+ [0.0.1]: https://github.com/sensu-plugins/sensu-plugins-ntp/compare/00e3dfb1d044946ec5465f7075dce532bbb60cff...0.0.1
data/README.md CHANGED
@@ -1,5 +1,13 @@
1
1
  # Sensu plugin for monitoring Chrony NTP
2
2
 
3
+
4
+ [![Build Status](https://travis-ci.org/sensu-plugins/sensu-plugins-chrony.svg?branch=master)](https://travis-ci.org/sensu-plugins/sensu-plugins-chrony)
5
+ [![Gem Version](https://badge.fury.io/rb/sensu-plugins-chrony.svg)](https://badge.fury.io/rb/sensu-plugins-chrony)
6
+ [![Code Climate](https://codeclimate.com/github/sensu-plugins/sensu-plugins-chrony/badges/gpa.svg)](https://codeclimate.com/github/sensu-plugins/sensu-plugins-chrony)
7
+ [![Test Coverage](https://codeclimate.com/github/sensu-plugins/sensu-plugins-chrony/badges/coverage.svg)](https://codeclimate.com/github/sensu-plugins/sensu-plugins-chrony)
8
+ [![Dependency Status](https://gemnasium.com/sensu-plugins/sensu-plugins-chrony.svg)](https://gemnasium.com/sensu-plugins/sensu-plugins-chrony)
9
+ [![Community Slack](https://slack.sensu.io/badge.svg)](https://slack.sensu.io/badge)
10
+
3
11
  A sensu plugin to monitor Chrony NTP. There is also a metrics plugin for collecting things like offset, delay etc.
4
12
 
5
13
  The plugin generates multiple OK/WARN/CRIT/UNKNOWN check events via the sensu client socket (https://sensuapp.org/docs/latest/clients#client-socket-input) so that you do not miss state changes when monitoring offset, stratum and status.
@@ -1,4 +1,6 @@
1
1
  #!/usr/bin/env ruby
2
+ # frozen_string_literal: false
3
+
2
4
  #
3
5
  # check-chrony.rb
4
6
  #
@@ -11,48 +13,48 @@ require 'json'
11
13
 
12
14
  class CheckChrony < Sensu::Plugin::Check::CLI
13
15
  option :chronyc_cmd,
14
- :description => "Path to chronyc executable (default: /usr/bin/chronyc)",
15
- :short => "-c <PATH>",
16
- :long => "--chronyc-cmd <PATH>",
17
- :default => "/usr/bin/chronyc"
16
+ description: 'Path to chronyc executable (default: /usr/bin/chronyc)',
17
+ short: '-c <PATH>',
18
+ long: '--chronyc-cmd <PATH>',
19
+ default: '/usr/bin/chronyc'
18
20
 
19
21
  option :warn_offset,
20
- :description => "Warn if OFFSET exceeds current offset (ms)",
21
- :long => "--warn-offset <OFFSET>",
22
- :proc => proc(&:to_f),
23
- :default => 50
22
+ description: 'Warn if OFFSET exceeds current offset (ms)',
23
+ long: '--warn-offset <OFFSET>',
24
+ proc: proc(&:to_f),
25
+ default: 50
24
26
 
25
27
  option :crit_offset,
26
- :description => "Critical if OFFSET exceeds current offset (ms)",
27
- :long => "--crit-offset <OFFSET>",
28
- :proc => proc(&:to_f),
29
- :default => 100
28
+ description: 'Critical if OFFSET exceeds current offset (ms)',
29
+ long: '--crit-offset <OFFSET>',
30
+ proc: proc(&:to_f),
31
+ default: 100
30
32
 
31
33
  option :warn_stratum,
32
- :description => "Warn if STRATUM exceeds current stratum",
33
- :long => "--warn-stratum <STRATUM>",
34
- :proc => proc(&:to_i),
35
- :default => 10
34
+ description: 'Warn if STRATUM exceeds current stratum',
35
+ long: '--warn-stratum <STRATUM>',
36
+ proc: proc(&:to_i),
37
+ default: 10
36
38
 
37
39
  option :crit_stratum,
38
- :description => "Critical if STRATUM exceeds current stratum",
39
- :long => "--crit-stratum <STRATUM>",
40
- :proc => proc(&:to_i),
41
- :default => 16
40
+ description: 'Critical if STRATUM exceeds current stratum',
41
+ long: '--crit-stratum <STRATUM>',
42
+ proc: proc(&:to_i),
43
+ default: 16
42
44
 
43
45
  option :handlers,
44
- :description => "Comma separated list of handlers",
45
- :long => "--handlers <HANDLER>",
46
- :proc => proc { |s| s.split(',') },
47
- :default => []
46
+ description: 'Comma separated list of handlers',
47
+ long: '--handlers <HANDLER>',
48
+ proc: proc { |s| s.split(',') },
49
+ default: []
48
50
 
49
51
  option :dryrun,
50
- :description => "Do not send events to sensu client socket",
51
- :long => "--dryrun",
52
- :boolean => true,
53
- :default => false
52
+ description: 'Do not send events to sensu client socket',
53
+ long: '--dryrun',
54
+ boolean: true,
55
+ default: false
54
56
 
55
- def initialize()
57
+ def initialize
56
58
  super
57
59
  end
58
60
 
@@ -61,27 +63,47 @@ class CheckChrony < Sensu::Plugin::Check::CLI
61
63
  puts data.inspect
62
64
  else
63
65
  sock = UDPSocket.new
64
- sock.send(data + "\n", 0, "127.0.0.1", 3030)
66
+ sock.send(data + "\n", 0, '127.0.0.1', 3030)
65
67
  end
66
68
  end
67
69
 
68
70
  def send_ok(check_name, msg)
69
- event = {"name" => check_name, "status" => 0, "output" => "#{self.class.name} OK: #{msg}", "handlers" => config[:handlers]}
71
+ event = {
72
+ 'name' => check_name,
73
+ 'status' => 0,
74
+ 'output' => "#{self.class.name} OK: #{msg}",
75
+ 'handlers' => config[:handlers]
76
+ }
70
77
  send_client_socket(event.to_json)
71
78
  end
72
79
 
73
80
  def send_warning(check_name, msg)
74
- event = {"name" => check_name, "status" => 1, "output" => "#{self.class.name} WARNING: #{msg}", "handlers" => config[:handlers]}
81
+ event = {
82
+ 'name' => check_name,
83
+ 'status' => 1,
84
+ 'output' => "#{self.class.name} WARNING: #{msg}",
85
+ 'handlers' => config[:handlers]
86
+ }
75
87
  send_client_socket(event.to_json)
76
88
  end
77
89
 
78
90
  def send_critical(check_name, msg)
79
- event = {"name" => check_name, "status" => 2, "output" => "#{self.class.name} CRITICAL: #{msg}", "handlers" => config[:handlers]}
91
+ event = {
92
+ 'name' => check_name,
93
+ 'status' => 2,
94
+ 'output' => "#{self.class.name} CRITICAL: #{msg}",
95
+ 'handlers' => config[:handlers]
96
+ }
80
97
  send_client_socket(event.to_json)
81
98
  end
82
99
 
83
100
  def send_unknown(check_name, msg)
84
- event = {"name" => check_name, "status" => 3, "output" => "#{self.class.name} UNKNOWN: #{msg}", "handlers" => config[:handlers]}
101
+ event = {
102
+ 'name' => check_name,
103
+ 'status' => 3,
104
+ 'output' => "#{self.class.name} UNKNOWN: #{msg}",
105
+ 'handlers' => config[:handlers]
106
+ }
85
107
  send_client_socket(event.to_json)
86
108
  end
87
109
 
@@ -90,19 +112,19 @@ class CheckChrony < Sensu::Plugin::Check::CLI
90
112
  offset = nil
91
113
  status = nil
92
114
 
93
- %x[#{config[:chronyc_cmd]} tracking].each_line do |line|
115
+ `#{config[:chronyc_cmd]} tracking`.each_line do |line|
94
116
  case line.downcase
95
- when /^stratum\s*:\s*(\d+)$/
96
- stratum = $1.to_i
97
- when /^last offset\s*:\s*([\-\+]?[.\d]+)\s*seconds$/
98
- # convert from seconds to milliseconds
99
- offset = $1.to_f * 1000
100
- when /^leap status\s*:\s*(.*?)$/
101
- status = $1
117
+ when /^stratum\s*:\s*(\d+)$/
118
+ stratum = Regexp.last_match(1).to_i
119
+ when /^last offset\s*:\s*([\-\+]?[.\d]+)\s*seconds$/
120
+ # convert from seconds to milliseconds
121
+ offset = Regexp.last_match(1).to_f * 1000
122
+ when /^leap status\s*:\s*(.*?)$/
123
+ status = Regexp.last_match(1)
102
124
  end
103
125
  end
104
126
 
105
- check_name = "chrony-stratum"
127
+ check_name = 'chrony-stratum'
106
128
  if stratum
107
129
  msg = "NTP stratum is #{stratum}"
108
130
 
@@ -111,42 +133,42 @@ class CheckChrony < Sensu::Plugin::Check::CLI
111
133
  send_critical(check_name, msg)
112
134
  elsif stratum >= config[:warn_stratum]
113
135
  msg += ", expected < #{config[:warn_stratum]}"
114
- send_critical(check_name, msg)
136
+ send_warning(check_name, msg)
115
137
  else
116
138
  send_ok(check_name, msg)
117
139
  end
118
140
  else
119
- send_unknown(check_name, "Failed to look up NTP stratum")
141
+ send_unknown(check_name, 'Failed to look up NTP stratum')
120
142
  end
121
143
 
122
- check_name = "chrony-offset"
144
+ check_name = 'chrony-offset'
123
145
  if offset
124
146
  msg = "NTP offset is #{offset.round(4)}ms"
125
147
 
126
- if offset >= config[:crit_offset] or offset <= -config[:crit_offset]
148
+ if offset >= config[:crit_offset] || offset <= -config[:crit_offset]
127
149
  msg += ", expected > -#{config[:crit_offset]} and < #{config[:crit_offset]}"
128
150
  send_critical(check_name, msg)
129
- elsif offset >= config[:warn_offset] or offset < -config[:warn_offset]
130
- msg += ", expected > -#{config[:crit_offset]} and < #{config[:warn_offset]}"
131
- send_critical(check_name, msg)
151
+ elsif offset >= config[:warn_offset] || offset < -config[:warn_offset]
152
+ msg += ", expected > -#{config[:warn_offset]} and < #{config[:warn_offset]}"
153
+ send_warning(check_name, msg)
132
154
  else
133
155
  send_ok(check_name, msg)
134
156
  end
135
157
  else
136
- send_unknown(check_name, "Failed to look up NTP offset")
158
+ send_unknown(check_name, 'Failed to look up NTP offset')
137
159
  end
138
160
 
139
161
  if status
140
162
  msg = "NTP status is '#{status}'"
141
163
 
142
- if status != "normal"
143
- msg += ", expected 'Normal'"
164
+ if status != 'normal'
165
+ msg += ', expected \'Normal\''
144
166
  critical(msg)
145
167
  else
146
168
  ok(msg)
147
169
  end
148
170
  else
149
- unknown("Failed to look up NTP status")
171
+ unknown('Failed to look up NTP status')
150
172
  end
151
173
  end
152
174
  end
@@ -1,5 +1,6 @@
1
1
  #! /usr/bin/env ruby
2
- # encoding: UTF-8
2
+ # frozen_string_literal: false
3
+
3
4
  #
4
5
  # metrics-chrony
5
6
  #
@@ -34,7 +35,7 @@ class ChronyMetrics < Sensu::Plugin::Metric::CLI::Graphite
34
35
  description: 'Metric naming scheme, text to prepend to metric',
35
36
  short: '-s SCHEME',
36
37
  long: '--scheme SCHEME',
37
- default: Socket.gethostname
38
+ default: "#{Socket.gethostname}.chronystats"
38
39
 
39
40
  def run
40
41
  # #YELLOW
@@ -42,39 +43,33 @@ class ChronyMetrics < Sensu::Plugin::Metric::CLI::Graphite
42
43
  config[:scheme] = config[:host]
43
44
  end
44
45
 
45
- chronystats = get_chronystats(config[:host])
46
+ chronystats = read_chronystats
46
47
  critical "Failed to get chronycstats from #{config[:host]}" if chronystats.empty?
47
48
  metrics = {
48
- chronystats: chronystats
49
+ config[:scheme] => chronystats
49
50
  }
50
51
  metrics.each do |name, stats|
51
52
  stats.each do |key, value|
52
- output([config[:scheme], name, key].join('.'), value)
53
+ output([name, key].join('.'), value)
53
54
  end
54
55
  end
55
56
  ok
56
57
  end
57
58
 
58
- def get_chronystats(host)
59
- key_pattern = Regexp.compile(
60
- [
61
- "Stratum",
62
- "Last offset",
63
- "RMS offset",
64
- "Frequency",
65
- "Residual freq",
66
- "Skew",
67
- "Root delay",
68
- "Root dispersion",
69
- "Update interval"
70
- ].join('|'))
71
- num_val_pattern = /[\-\+]?[\d]+(\.[\d]+)?/
72
- pattern = /^(#{key_pattern})\s*:\s*(#{num_val_pattern}).*$/
59
+ def read_chronystats
60
+ num_val_pattern = /^[-+]?\d+(\.\d+)?\s/
73
61
 
74
- `chronyc tracking`.scan(pattern).reduce({}) do |hash, parsed|
75
- key, val, fraction = parsed
76
- hash[key] = fraction ? val.to_f : val.to_i
77
- hash
62
+ `chronyc tracking`.each_line.each_with_object({}) do |line, hash|
63
+ key, val = line.split(/\s*:\s*/)
64
+ matched = val.match(num_val_pattern) || (next hash)
65
+ number, fraction = matched.to_a
66
+ number = fraction ? number.to_f : number.to_i
67
+ number = - number if /slow/ =~ val # for system time
68
+ hash[snakecase(key)] = number
78
69
  end
79
70
  end
71
+
72
+ def snakecase(str)
73
+ str.downcase.tr(' ', '_').gsub(/[()]/, '')
74
+ end
80
75
  end
@@ -1 +1,3 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'sensu-plugins-chrony/version'
@@ -1,8 +1,10 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module SensuPluginsChrony
2
4
  module Version
3
- MAJOR = 0
5
+ MAJOR = 2
4
6
  MINOR = 0
5
- PATCH = 8
7
+ PATCH = 0
6
8
 
7
9
  VER_STRING = [MAJOR, MINOR, PATCH].compact.join('.')
8
10
  end
metadata CHANGED
@@ -1,31 +1,132 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sensu-plugins-chrony
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.8
4
+ version: 2.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Matteo Cerutti
8
+ - Sensu-Plugins and contributors
8
9
  autorequire:
9
10
  bindir: bin
10
11
  cert_chain: []
11
- date: 2016-04-04 00:00:00.000000000 Z
12
+ date: 2020-08-24 00:00:00.000000000 Z
12
13
  dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: bundler
16
+ requirement: !ruby/object:Gem::Requirement
17
+ requirements:
18
+ - - "~>"
19
+ - !ruby/object:Gem::Version
20
+ version: '2.1'
21
+ type: :development
22
+ prerelease: false
23
+ version_requirements: !ruby/object:Gem::Requirement
24
+ requirements:
25
+ - - "~>"
26
+ - !ruby/object:Gem::Version
27
+ version: '2.1'
28
+ - !ruby/object:Gem::Dependency
29
+ name: github-markup
30
+ requirement: !ruby/object:Gem::Requirement
31
+ requirements:
32
+ - - "~>"
33
+ - !ruby/object:Gem::Version
34
+ version: '3.0'
35
+ type: :development
36
+ prerelease: false
37
+ version_requirements: !ruby/object:Gem::Requirement
38
+ requirements:
39
+ - - "~>"
40
+ - !ruby/object:Gem::Version
41
+ version: '3.0'
42
+ - !ruby/object:Gem::Dependency
43
+ name: rake
44
+ requirement: !ruby/object:Gem::Requirement
45
+ requirements:
46
+ - - "~>"
47
+ - !ruby/object:Gem::Version
48
+ version: '12.0'
49
+ type: :development
50
+ prerelease: false
51
+ version_requirements: !ruby/object:Gem::Requirement
52
+ requirements:
53
+ - - "~>"
54
+ - !ruby/object:Gem::Version
55
+ version: '12.0'
56
+ - !ruby/object:Gem::Dependency
57
+ name: redcarpet
58
+ requirement: !ruby/object:Gem::Requirement
59
+ requirements:
60
+ - - "~>"
61
+ - !ruby/object:Gem::Version
62
+ version: '3.2'
63
+ type: :development
64
+ prerelease: false
65
+ version_requirements: !ruby/object:Gem::Requirement
66
+ requirements:
67
+ - - "~>"
68
+ - !ruby/object:Gem::Version
69
+ version: '3.2'
70
+ - !ruby/object:Gem::Dependency
71
+ name: rspec
72
+ requirement: !ruby/object:Gem::Requirement
73
+ requirements:
74
+ - - "~>"
75
+ - !ruby/object:Gem::Version
76
+ version: '3.4'
77
+ type: :development
78
+ prerelease: false
79
+ version_requirements: !ruby/object:Gem::Requirement
80
+ requirements:
81
+ - - "~>"
82
+ - !ruby/object:Gem::Version
83
+ version: '3.4'
84
+ - !ruby/object:Gem::Dependency
85
+ name: rubocop
86
+ requirement: !ruby/object:Gem::Requirement
87
+ requirements:
88
+ - - "~>"
89
+ - !ruby/object:Gem::Version
90
+ version: 0.81.0
91
+ type: :development
92
+ prerelease: false
93
+ version_requirements: !ruby/object:Gem::Requirement
94
+ requirements:
95
+ - - "~>"
96
+ - !ruby/object:Gem::Version
97
+ version: 0.81.0
98
+ - !ruby/object:Gem::Dependency
99
+ name: yard
100
+ requirement: !ruby/object:Gem::Requirement
101
+ requirements:
102
+ - - "~>"
103
+ - !ruby/object:Gem::Version
104
+ version: '0.8'
105
+ type: :development
106
+ prerelease: false
107
+ version_requirements: !ruby/object:Gem::Requirement
108
+ requirements:
109
+ - - "~>"
110
+ - !ruby/object:Gem::Version
111
+ version: '0.8'
13
112
  - !ruby/object:Gem::Dependency
14
113
  name: sensu-plugin
15
114
  requirement: !ruby/object:Gem::Requirement
16
115
  requirements:
17
- - - '='
116
+ - - "~>"
18
117
  - !ruby/object:Gem::Version
19
- version: 1.2.0
118
+ version: '4.0'
20
119
  type: :runtime
21
120
  prerelease: false
22
121
  version_requirements: !ruby/object:Gem::Requirement
23
122
  requirements:
24
- - - '='
123
+ - - "~>"
25
124
  - !ruby/object:Gem::Version
26
- version: 1.2.0
125
+ version: '4.0'
27
126
  description: This plugin provides facilities for monitoring Chrony NTP
28
- email: "<matteo.cerutti@hotmail.co.uk>"
127
+ email:
128
+ - "<matteo.cerutti@hotmail.co.uk>"
129
+ - "<sensu-users@googlegroups.com>"
29
130
  executables:
30
131
  - check-chrony.rb
31
132
  - metrics-chrony.rb
@@ -57,15 +158,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
57
158
  requirements:
58
159
  - - ">="
59
160
  - !ruby/object:Gem::Version
60
- version: 1.9.3
161
+ version: 2.3.0
61
162
  required_rubygems_version: !ruby/object:Gem::Requirement
62
163
  requirements:
63
164
  - - ">="
64
165
  - !ruby/object:Gem::Version
65
166
  version: '0'
66
167
  requirements: []
67
- rubyforge_project:
68
- rubygems_version: 2.4.5.1
168
+ rubygems_version: 3.0.8
69
169
  signing_key:
70
170
  specification_version: 4
71
171
  summary: Sensu plugins for monitoring Chrony NTP