sensu-plugins-graphite-donotuse 0.0.7
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 +7 -0
- data/CHANGELOG.md +49 -0
- data/LICENSE +22 -0
- data/README.md +52 -0
- data/bin/check-graphite-data.rb +177 -0
- data/bin/check-graphite-hosts.rb +97 -0
- data/bin/check-graphite-replication.rb +223 -0
- data/bin/check-graphite-stats.rb +158 -0
- data/bin/check-graphite.rb +521 -0
- data/bin/handler-graphite-event.rb +78 -0
- data/bin/handler-graphite-notify.rb +29 -0
- data/bin/handler-graphite-occurrences.rb +39 -0
- data/bin/mutator-graphite.rb +36 -0
- data/lib/sensu-plugins-graphite.rb +1 -0
- data/lib/sensu-plugins-graphite/graphite_proxy/options.rb +113 -0
- data/lib/sensu-plugins-graphite/graphite_proxy/proxy.rb +120 -0
- data/lib/sensu-plugins-graphite/version.rb +9 -0
- metadata +274 -0
@@ -0,0 +1,78 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
#
|
3
|
+
# Sensu - Graphite Event Handler
|
4
|
+
#
|
5
|
+
# This handler takes events and POSTs them to a graphite events URI.
|
6
|
+
#
|
7
|
+
# For configuration see: graphite_event.json
|
8
|
+
#
|
9
|
+
# See here for more details:
|
10
|
+
#
|
11
|
+
# * https://code.launchpad.net/~lucio.torre/graphite/add-events/+merge/69142
|
12
|
+
#
|
13
|
+
# Author: Rob Wilson <roobert@gmail.com>
|
14
|
+
#
|
15
|
+
# Released under the same terms as Sensu (the MIT license); see LICENSE
|
16
|
+
# for details
|
17
|
+
|
18
|
+
require 'sensu-handler'
|
19
|
+
require 'net/http'
|
20
|
+
require 'net/https'
|
21
|
+
require 'uri'
|
22
|
+
require 'json'
|
23
|
+
|
24
|
+
class GraphiteEvent < Sensu::Handler
|
25
|
+
def post_event(uri, body)
|
26
|
+
uri = URI.parse(uri)
|
27
|
+
req = Net::HTTP::Post.new(uri.path)
|
28
|
+
sock = Net::HTTP.new(uri.host, uri.port)
|
29
|
+
sock.use_ssl = uri.scheme == 'https' ? true : false
|
30
|
+
req.body = body
|
31
|
+
|
32
|
+
req.basic_auth(uri.user, uri.password) if uri.user
|
33
|
+
|
34
|
+
sock.start { |http| http.request(req) }
|
35
|
+
end
|
36
|
+
|
37
|
+
def event_status
|
38
|
+
case @event['check']['status']
|
39
|
+
when 0
|
40
|
+
'ok'
|
41
|
+
when 1
|
42
|
+
'warning'
|
43
|
+
when 2
|
44
|
+
'critical'
|
45
|
+
else
|
46
|
+
'unknown'
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
def handle
|
51
|
+
tags = [
|
52
|
+
'sensu',
|
53
|
+
'event',
|
54
|
+
event_status,
|
55
|
+
@event['client']['name'],
|
56
|
+
@event['check']['name']
|
57
|
+
]
|
58
|
+
|
59
|
+
tags += settings['graphite_event']['tags'] if settings['graphite_event']['tags']
|
60
|
+
|
61
|
+
body = {
|
62
|
+
'what' => 'sensu_event',
|
63
|
+
'tags' => tags.join(','),
|
64
|
+
'data' => event_status,
|
65
|
+
'when' => Time.now.to_i
|
66
|
+
}
|
67
|
+
|
68
|
+
uri = settings['graphite_event']['server_uri']
|
69
|
+
|
70
|
+
begin
|
71
|
+
post_event(uri, body.to_json)
|
72
|
+
rescue => e
|
73
|
+
bail "failed to send event to #{uri}: #{e}"
|
74
|
+
end
|
75
|
+
|
76
|
+
puts "sent event to graphite: #{body.to_json}"
|
77
|
+
end
|
78
|
+
end
|
@@ -0,0 +1,29 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
#
|
3
|
+
# Released under the same terms as Sensu (the MIT license); see LICENSE
|
4
|
+
# for details
|
5
|
+
#
|
6
|
+
# This will send a 1 to a graphite metric when an event is created and 0 when it's resolved
|
7
|
+
# See http://imansson.wordpress.com/2012/11/26/why-sensu-is-a-monitoring-router-some-cool-handlers/
|
8
|
+
|
9
|
+
require 'sensu-handler'
|
10
|
+
require 'simple-graphite'
|
11
|
+
|
12
|
+
class Resolve < Sensu::Handler
|
13
|
+
def handle
|
14
|
+
port = settings['graphite_notify']['port'] ? settings['graphite_notify']['port'].to_s : '2003'
|
15
|
+
graphite = Graphite.new(host: settings['graphite_notify']['host'], port: port)
|
16
|
+
return unless graphite
|
17
|
+
prop = @event['action'] == 'create' ? 1 : 0
|
18
|
+
message = "#{settings['graphite_notify']['prefix']}.#{@event['client']['name'].gsub('.', '_')}.#{@event['check']['name']}"
|
19
|
+
message += " #{prop} #{graphite.time_now + rand(100)}"
|
20
|
+
begin
|
21
|
+
graphite.push_to_graphite do |graphite_socket|
|
22
|
+
graphite_socket.puts message
|
23
|
+
end
|
24
|
+
rescue ETIMEDOUT
|
25
|
+
error_msg = "Can't connect to #{settings['graphite_notify']['host']}:#{port} and send message #{message}'"
|
26
|
+
raise error_msg
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
@@ -0,0 +1,39 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
#
|
3
|
+
# Copyright 2013 vimov, LLC. <a.gameel@vimov.com>
|
4
|
+
#
|
5
|
+
# Released under the same terms as Sensu (the MIT license); see LICENSE
|
6
|
+
# for details.
|
7
|
+
|
8
|
+
require 'sensu-handler'
|
9
|
+
|
10
|
+
class GraphiteOccurrences < Sensu::Handler
|
11
|
+
# override filters from Sensu::Handler. not appropriate for metric handlers
|
12
|
+
def filter; end
|
13
|
+
|
14
|
+
def handle
|
15
|
+
hostname = @event['client']['name'].split('.').first
|
16
|
+
# #YELLOW
|
17
|
+
check_name = @event['check']['name'].gsub(%r{[ \.]}, '_')
|
18
|
+
value = @event['action'] == 'create' ? @event['occurrences'] : 0
|
19
|
+
now = Time.now.to_i
|
20
|
+
|
21
|
+
# Get graphite-like format for sensu events here
|
22
|
+
check_occurences = "sensu.#{hostname}.#{check_name} #{value} #{now}"
|
23
|
+
|
24
|
+
graphite_server = settings['graphite']['server']
|
25
|
+
graphite_port = settings['graphite']['port']
|
26
|
+
|
27
|
+
begin
|
28
|
+
timeout(3) do
|
29
|
+
sock = TCPSocket.new(graphite_server, graphite_port)
|
30
|
+
sock.puts check_occurences
|
31
|
+
sock.close
|
32
|
+
end
|
33
|
+
rescue Timeout::Error
|
34
|
+
puts 'graphite -- timed out while sending check occurrence'
|
35
|
+
rescue => error
|
36
|
+
puts "graphite -- failed to send check occurrence: #{error}"
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
@@ -0,0 +1,36 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
#
|
3
|
+
# Graphite
|
4
|
+
# ===
|
5
|
+
#
|
6
|
+
# DESCRIPTION:
|
7
|
+
# This mutator is an extension of the OnlyCheckOutput mutator, but
|
8
|
+
# modified for Graphite metrics. This mutator only sends event output
|
9
|
+
# (so you don't need to use OnlyCheckOutput) and it also modifies
|
10
|
+
# the format of the hostname in the output if present.
|
11
|
+
#
|
12
|
+
# OUTPUT:
|
13
|
+
# Sensu event output with all dots changed to underlines in host name
|
14
|
+
# If -r or --reverse parameter given script put hostname in reverse order
|
15
|
+
# for better graphite tree view
|
16
|
+
#
|
17
|
+
# PLATFORM:
|
18
|
+
# all
|
19
|
+
#
|
20
|
+
# DEPENDENCIES:
|
21
|
+
# none
|
22
|
+
#
|
23
|
+
# Copyright 2013 Peter Kepes <https://github.com/kepes>
|
24
|
+
#
|
25
|
+
# Released under the same terms as Sensu (the MIT license); see LICENSE
|
26
|
+
# for details.
|
27
|
+
require 'json'
|
28
|
+
|
29
|
+
# parse event
|
30
|
+
event = JSON.parse(STDIN.read, symbolize_names: true)
|
31
|
+
|
32
|
+
if ARGV[0] == '-r' || ARGV[0] == '--reverse'
|
33
|
+
puts event[:check][:output].gsub(event[:client][:name], event[:client][:name].split('.').reverse.join('.'))
|
34
|
+
else
|
35
|
+
puts event[:check][:output].gsub(event[:client][:name], event[:client][:name].gsub('.', '_'))
|
36
|
+
end
|
@@ -0,0 +1 @@
|
|
1
|
+
require 'sensu-plugins-graphite/version'
|
@@ -0,0 +1,113 @@
|
|
1
|
+
module SensuPluginsGraphite
|
2
|
+
module GraphiteProxy
|
3
|
+
module Options
|
4
|
+
def self.included(base)
|
5
|
+
add_default_options(base)
|
6
|
+
end
|
7
|
+
|
8
|
+
def self.add_default_options(base)
|
9
|
+
default_options.each do |name, vals|
|
10
|
+
base.send(:option, name, vals)
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
def self.default_options
|
15
|
+
{
|
16
|
+
target: {
|
17
|
+
description: 'Graphite data target',
|
18
|
+
short: '-t TARGET',
|
19
|
+
long: '--target TARGET',
|
20
|
+
required: true
|
21
|
+
},
|
22
|
+
|
23
|
+
server: {
|
24
|
+
description: 'Server host and port',
|
25
|
+
short: '-s SERVER:PORT',
|
26
|
+
long: '--server SERVER:PORT',
|
27
|
+
required: true
|
28
|
+
},
|
29
|
+
|
30
|
+
username: {
|
31
|
+
description: 'username for basic http authentication',
|
32
|
+
short: '-u USERNAME',
|
33
|
+
long: '--user USERNAME',
|
34
|
+
required: false
|
35
|
+
},
|
36
|
+
|
37
|
+
password: {
|
38
|
+
description: 'user password for basic http authentication',
|
39
|
+
short: '-p PASSWORD',
|
40
|
+
long: '--pass PASSWORD',
|
41
|
+
required: false
|
42
|
+
},
|
43
|
+
|
44
|
+
passfile: {
|
45
|
+
description: 'password file path for basic http authentication',
|
46
|
+
short: '-P PASSWORDFILE',
|
47
|
+
long: '--passfile PASSWORDFILE',
|
48
|
+
required: false
|
49
|
+
},
|
50
|
+
|
51
|
+
no_ssl_verify: {
|
52
|
+
description: 'Do not verify SSL certs',
|
53
|
+
short: '-v',
|
54
|
+
long: '--nosslverify'
|
55
|
+
},
|
56
|
+
|
57
|
+
help: {
|
58
|
+
description: 'Show this message',
|
59
|
+
short: '-h',
|
60
|
+
long: '--help'
|
61
|
+
},
|
62
|
+
|
63
|
+
auth: {
|
64
|
+
description: 'Add an auth token to the HTTP request, in the form of "Name: Value",
|
65
|
+
e.g. --auth yourapitokenvaluegoeshere',
|
66
|
+
short: '-A TOKEN',
|
67
|
+
long: '--auth TOKEN'
|
68
|
+
},
|
69
|
+
|
70
|
+
name: {
|
71
|
+
description: 'Name used in responses',
|
72
|
+
short: '-n NAME',
|
73
|
+
long: '--name NAME',
|
74
|
+
default: 'graphite check'
|
75
|
+
},
|
76
|
+
|
77
|
+
hostname_sub: {
|
78
|
+
description: 'Character used to replace periods (.) in hostname (default: _)',
|
79
|
+
short: '-s CHARACTER',
|
80
|
+
long: '--host-sub CHARACTER'
|
81
|
+
},
|
82
|
+
|
83
|
+
from: {
|
84
|
+
description: 'Get samples starting from FROM (default: -10mins)',
|
85
|
+
short: '-f FROM',
|
86
|
+
long: '--from FROM',
|
87
|
+
default: '-10mins'
|
88
|
+
},
|
89
|
+
|
90
|
+
warning: {
|
91
|
+
description: 'Generate warning if number of hosts is below received value',
|
92
|
+
short: '-w VALUE',
|
93
|
+
long: '--warn VALUE',
|
94
|
+
proc: proc(&:to_f)
|
95
|
+
},
|
96
|
+
|
97
|
+
critical: {
|
98
|
+
description: 'Generate critical if number of hosts is below received value',
|
99
|
+
short: '-c VALUE',
|
100
|
+
long: '--critical VALUE',
|
101
|
+
proc: proc(&:to_f)
|
102
|
+
},
|
103
|
+
|
104
|
+
below: {
|
105
|
+
description: 'alert if number of hosts below specified thresholds',
|
106
|
+
short: '-b',
|
107
|
+
long: '--below'
|
108
|
+
}
|
109
|
+
}
|
110
|
+
end
|
111
|
+
end
|
112
|
+
end
|
113
|
+
end
|
@@ -0,0 +1,120 @@
|
|
1
|
+
require 'open-uri'
|
2
|
+
|
3
|
+
module SensuPluginsGraphite
|
4
|
+
module GraphiteProxy
|
5
|
+
class ProxyError < StandardError
|
6
|
+
attr_accessor :exception
|
7
|
+
|
8
|
+
def initialize(msg, args)
|
9
|
+
self.exception = args[:exception]
|
10
|
+
super msg
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
class Proxy
|
15
|
+
attr_accessor :config
|
16
|
+
|
17
|
+
def initialize(config)
|
18
|
+
self.config = config
|
19
|
+
end
|
20
|
+
|
21
|
+
def formatted_target
|
22
|
+
if config[:target].include?('$')
|
23
|
+
require 'socket'
|
24
|
+
formatted = Socket.gethostbyname(Socket.gethostname).first.gsub('.', config[:hostname_sub] || '_')
|
25
|
+
config[:target].gsub('$', formatted)
|
26
|
+
else
|
27
|
+
URI.escape config[:target]
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
def request_auth_options(given_opts)
|
32
|
+
url_opts = {}
|
33
|
+
|
34
|
+
url_opts[:ssl_verify_mode] = OpenSSL::SSL::VERIFY_NONE if given_opts[:no_ssl_verify]
|
35
|
+
|
36
|
+
if given_opts[:username]
|
37
|
+
pass = derive_password(given_opts)
|
38
|
+
url_opts[:http_basic_authentication] = [given_opts[:username], pass.chomp]
|
39
|
+
end # we don't have both username and password trying without
|
40
|
+
|
41
|
+
url_opts['Authorization'] = "Bearer #{given_opts[:auth]}" if given_opts[:auth]
|
42
|
+
|
43
|
+
url_opts
|
44
|
+
end
|
45
|
+
|
46
|
+
def derive_password(given_opts)
|
47
|
+
if given_opts[:passfile]
|
48
|
+
File.open(given_opts[:passfile]).readline
|
49
|
+
elsif given_opts[:password]
|
50
|
+
given_opts[:password]
|
51
|
+
end
|
52
|
+
end
|
53
|
+
|
54
|
+
def format_output(data)
|
55
|
+
output = {}
|
56
|
+
|
57
|
+
data.each do |raw|
|
58
|
+
unless raw['datapoints'].empty?
|
59
|
+
line = output_line(raw)
|
60
|
+
output[line['target']] = line
|
61
|
+
end
|
62
|
+
end
|
63
|
+
output
|
64
|
+
end
|
65
|
+
|
66
|
+
def output_line(raw)
|
67
|
+
raw['datapoints'].delete_if { |v| v.first.nil? }
|
68
|
+
target = raw['target']
|
69
|
+
data = raw['datapoints'].map(&:first)
|
70
|
+
if !raw['datapoints'].first.nil? && !raw['datapoints'].last.nil? && raw['datapoints'].size.to_f > 0
|
71
|
+
start = raw['datapoints'].first.last
|
72
|
+
dend = raw['datapoints'].last.last
|
73
|
+
rdpsize = raw['datapoints'].size.to_f
|
74
|
+
step = ((dend - start) / rdpsize).ceil # moved it here to avoid division by 0.
|
75
|
+
else
|
76
|
+
# Filling up some dummy variables
|
77
|
+
start = 0
|
78
|
+
dend = 0
|
79
|
+
step = 0
|
80
|
+
end
|
81
|
+
{ 'target' => target, 'data' => data, 'start' => start, 'end' => dend, 'step' => step }
|
82
|
+
end
|
83
|
+
|
84
|
+
# grab data from graphite
|
85
|
+
def retrieve_data!
|
86
|
+
unless @raw_data
|
87
|
+
begin
|
88
|
+
unless config[:server].start_with?('https://', 'http://')
|
89
|
+
config[:server].prepend('http://')
|
90
|
+
end
|
91
|
+
|
92
|
+
url = "#{config[:server]}/render?format=json&target=#{formatted_target}&from=#{config[:from]}"
|
93
|
+
|
94
|
+
handle = open(url, request_auth_options(config))
|
95
|
+
|
96
|
+
@raw_data = handle.gets
|
97
|
+
if @raw_data == '[]'
|
98
|
+
unknown 'Empty data received from Graphite - metric probably doesn\'t exists'
|
99
|
+
else
|
100
|
+
json_data = JSON.parse(@raw_data)
|
101
|
+
format_output(json_data)
|
102
|
+
end
|
103
|
+
rescue OpenURI::HTTPError => e
|
104
|
+
raise ProxyError.new('Failed to connect to graphite server', exception: e)
|
105
|
+
rescue NoMethodError => e
|
106
|
+
raise ProxyError.new('No data for time period and/or target', exception: e)
|
107
|
+
rescue Errno::ECONNREFUSED => e
|
108
|
+
raise ProxyError.new('Connection refused when connecting to graphite server', exception: e)
|
109
|
+
rescue Errno::ECONNRESET => e
|
110
|
+
raise ProxyError.new('Connection reset by peer when connecting to graphite server', exception: e)
|
111
|
+
rescue EOFError => e
|
112
|
+
raise ProxyError.new('End of file error when reading from graphite server', exception: e)
|
113
|
+
rescue => e
|
114
|
+
raise ProxyError.new("An unknown error occured: #{e.inspect}", exception: e)
|
115
|
+
end
|
116
|
+
end
|
117
|
+
end
|
118
|
+
end
|
119
|
+
end
|
120
|
+
end
|
metadata
ADDED
@@ -0,0 +1,274 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: sensu-plugins-graphite-donotuse
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.7
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Sensu Plugins and contributors
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2015-11-13 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: array_stats
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - '='
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: 0.6.0
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - '='
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: 0.6.0
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: ipaddress
|
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: rest-client
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - '='
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: 1.8.0
|
48
|
+
type: :runtime
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - '='
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: 1.8.0
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: sensu-plugin
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - '='
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: 1.2.0
|
62
|
+
type: :runtime
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - '='
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: 1.2.0
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: simple-graphite
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - '='
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: 2.1.0
|
76
|
+
type: :runtime
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - '='
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: 2.1.0
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: bundler
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - "~>"
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: '1.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'
|
97
|
+
- !ruby/object:Gem::Dependency
|
98
|
+
name: codeclimate-test-reporter
|
99
|
+
requirement: !ruby/object:Gem::Requirement
|
100
|
+
requirements:
|
101
|
+
- - "~>"
|
102
|
+
- !ruby/object:Gem::Version
|
103
|
+
version: '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: '0.4'
|
111
|
+
- !ruby/object:Gem::Dependency
|
112
|
+
name: github-markup
|
113
|
+
requirement: !ruby/object:Gem::Requirement
|
114
|
+
requirements:
|
115
|
+
- - "~>"
|
116
|
+
- !ruby/object:Gem::Version
|
117
|
+
version: '1.3'
|
118
|
+
type: :development
|
119
|
+
prerelease: false
|
120
|
+
version_requirements: !ruby/object:Gem::Requirement
|
121
|
+
requirements:
|
122
|
+
- - "~>"
|
123
|
+
- !ruby/object:Gem::Version
|
124
|
+
version: '1.3'
|
125
|
+
- !ruby/object:Gem::Dependency
|
126
|
+
name: pry
|
127
|
+
requirement: !ruby/object:Gem::Requirement
|
128
|
+
requirements:
|
129
|
+
- - "~>"
|
130
|
+
- !ruby/object:Gem::Version
|
131
|
+
version: '0.10'
|
132
|
+
type: :development
|
133
|
+
prerelease: false
|
134
|
+
version_requirements: !ruby/object:Gem::Requirement
|
135
|
+
requirements:
|
136
|
+
- - "~>"
|
137
|
+
- !ruby/object:Gem::Version
|
138
|
+
version: '0.10'
|
139
|
+
- !ruby/object:Gem::Dependency
|
140
|
+
name: rake
|
141
|
+
requirement: !ruby/object:Gem::Requirement
|
142
|
+
requirements:
|
143
|
+
- - "~>"
|
144
|
+
- !ruby/object:Gem::Version
|
145
|
+
version: '10.0'
|
146
|
+
type: :development
|
147
|
+
prerelease: false
|
148
|
+
version_requirements: !ruby/object:Gem::Requirement
|
149
|
+
requirements:
|
150
|
+
- - "~>"
|
151
|
+
- !ruby/object:Gem::Version
|
152
|
+
version: '10.0'
|
153
|
+
- !ruby/object:Gem::Dependency
|
154
|
+
name: redcarpet
|
155
|
+
requirement: !ruby/object:Gem::Requirement
|
156
|
+
requirements:
|
157
|
+
- - "~>"
|
158
|
+
- !ruby/object:Gem::Version
|
159
|
+
version: '3.2'
|
160
|
+
type: :development
|
161
|
+
prerelease: false
|
162
|
+
version_requirements: !ruby/object:Gem::Requirement
|
163
|
+
requirements:
|
164
|
+
- - "~>"
|
165
|
+
- !ruby/object:Gem::Version
|
166
|
+
version: '3.2'
|
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.32.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.32.1
|
181
|
+
- !ruby/object:Gem::Dependency
|
182
|
+
name: rspec
|
183
|
+
requirement: !ruby/object:Gem::Requirement
|
184
|
+
requirements:
|
185
|
+
- - "~>"
|
186
|
+
- !ruby/object:Gem::Version
|
187
|
+
version: '3.1'
|
188
|
+
type: :development
|
189
|
+
prerelease: false
|
190
|
+
version_requirements: !ruby/object:Gem::Requirement
|
191
|
+
requirements:
|
192
|
+
- - "~>"
|
193
|
+
- !ruby/object:Gem::Version
|
194
|
+
version: '3.1'
|
195
|
+
- !ruby/object:Gem::Dependency
|
196
|
+
name: yard
|
197
|
+
requirement: !ruby/object:Gem::Requirement
|
198
|
+
requirements:
|
199
|
+
- - "~>"
|
200
|
+
- !ruby/object:Gem::Version
|
201
|
+
version: '0.8'
|
202
|
+
type: :development
|
203
|
+
prerelease: false
|
204
|
+
version_requirements: !ruby/object:Gem::Requirement
|
205
|
+
requirements:
|
206
|
+
- - "~>"
|
207
|
+
- !ruby/object:Gem::Version
|
208
|
+
version: '0.8'
|
209
|
+
description: |-
|
210
|
+
This plugin provides native Graphite instrumentation
|
211
|
+
for monitoring, including: replication status,
|
212
|
+
various Graphite data queries, mutators, and handlers
|
213
|
+
email: "<sensu-users@googlegroups.com>"
|
214
|
+
executables:
|
215
|
+
- check-graphite-data.rb
|
216
|
+
- check-graphite-hosts.rb
|
217
|
+
- check-graphite-replication.rb
|
218
|
+
- check-graphite-stats.rb
|
219
|
+
- check-graphite.rb
|
220
|
+
- handler-graphite-event.rb
|
221
|
+
- handler-graphite-notify.rb
|
222
|
+
- handler-graphite-occurrences.rb
|
223
|
+
- mutator-graphite.rb
|
224
|
+
extensions: []
|
225
|
+
extra_rdoc_files: []
|
226
|
+
files:
|
227
|
+
- CHANGELOG.md
|
228
|
+
- LICENSE
|
229
|
+
- README.md
|
230
|
+
- bin/check-graphite-data.rb
|
231
|
+
- bin/check-graphite-hosts.rb
|
232
|
+
- bin/check-graphite-replication.rb
|
233
|
+
- bin/check-graphite-stats.rb
|
234
|
+
- bin/check-graphite.rb
|
235
|
+
- bin/handler-graphite-event.rb
|
236
|
+
- bin/handler-graphite-notify.rb
|
237
|
+
- bin/handler-graphite-occurrences.rb
|
238
|
+
- bin/mutator-graphite.rb
|
239
|
+
- lib/sensu-plugins-graphite.rb
|
240
|
+
- lib/sensu-plugins-graphite/graphite_proxy/options.rb
|
241
|
+
- lib/sensu-plugins-graphite/graphite_proxy/proxy.rb
|
242
|
+
- lib/sensu-plugins-graphite/version.rb
|
243
|
+
homepage: https://github.com/sensu-plugins/sensu-plugins-graphite
|
244
|
+
licenses:
|
245
|
+
- MIT
|
246
|
+
metadata:
|
247
|
+
maintainer: "@mattyjones"
|
248
|
+
development_status: active
|
249
|
+
production_status: unstable - testing recommended
|
250
|
+
release_draft: 'false'
|
251
|
+
release_prerelease: 'false'
|
252
|
+
post_install_message: You can use the embedded Ruby by setting EMBEDDED_RUBY=true
|
253
|
+
in /etc/default/sensu
|
254
|
+
rdoc_options: []
|
255
|
+
require_paths:
|
256
|
+
- lib
|
257
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
258
|
+
requirements:
|
259
|
+
- - ">="
|
260
|
+
- !ruby/object:Gem::Version
|
261
|
+
version: 1.9.3
|
262
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
263
|
+
requirements:
|
264
|
+
- - ">="
|
265
|
+
- !ruby/object:Gem::Version
|
266
|
+
version: '0'
|
267
|
+
requirements: []
|
268
|
+
rubyforge_project:
|
269
|
+
rubygems_version: 2.4.8
|
270
|
+
signing_key:
|
271
|
+
specification_version: 4
|
272
|
+
summary: Sensu plugins for graphite
|
273
|
+
test_files: []
|
274
|
+
has_rdoc:
|