sensu-plugins-http-boutetnico 1.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 +7 -0
- data/CHANGELOG.md +1 -0
- data/LICENSE +22 -0
- data/README.md +211 -0
- data/bin/check-head-redirect.rb +151 -0
- data/bin/check-http-cors.rb +145 -0
- data/bin/check-http-json.rb +232 -0
- data/bin/check-http.rb +461 -0
- data/bin/check-https-cert.rb +122 -0
- data/bin/check-last-modified.rb +178 -0
- data/bin/metrics-curl.rb +86 -0
- data/bin/metrics-http-json-deep.rb +133 -0
- data/bin/metrics-http-json.rb +137 -0
- data/bin/metrics-libcurl.rb +167 -0
- data/lib/sensu-plugins-http.rb +5 -0
- data/lib/sensu-plugins-http/aws-v4.rb +40 -0
- data/lib/sensu-plugins-http/common.rb +35 -0
- data/lib/sensu-plugins-http/version.rb +11 -0
- metadata +290 -0
@@ -0,0 +1,137 @@
|
|
1
|
+
#! /usr/bin/env ruby
|
2
|
+
# frozen_string_literal: false
|
3
|
+
|
4
|
+
# metrics-http-json.rb
|
5
|
+
#
|
6
|
+
# DESCRIPTION:
|
7
|
+
# Hits an HTTP endpoint which emits JSON and pushes data into Graphite.
|
8
|
+
#
|
9
|
+
# OUTPUT:
|
10
|
+
# Graphite formatted data
|
11
|
+
#
|
12
|
+
# PLATFORMS:
|
13
|
+
# Linux
|
14
|
+
#
|
15
|
+
# DEPENDENCIES:
|
16
|
+
# gem: sensu-plugin
|
17
|
+
# gem: rest-client
|
18
|
+
#
|
19
|
+
# USAGE:
|
20
|
+
# EX: ./metrics-http-json.rb -u 'http://127.0.0.1:8080/jolokia/read/com\
|
21
|
+
# .mchange.v2.c3p0:name=datasource,type=PooledDataSource' -s hostname.c3p0\
|
22
|
+
# -m 'Connections::numConnections,BusyConnections::numBusyConnections'\
|
23
|
+
# -o 'value'
|
24
|
+
#
|
25
|
+
# NOTES:
|
26
|
+
# The metric option is a comma separated list of the metric (how it will
|
27
|
+
# appear in Graphite) and the JSON key which holds the value you want to
|
28
|
+
# graph. The object option is optional and is the name of the JSON object
|
29
|
+
# which holds the key/value pairs you want to graph.
|
30
|
+
#
|
31
|
+
# LICENSE:
|
32
|
+
# phamby@gmail.com
|
33
|
+
# Released under the same terms as Sensu (the MIT license); see LICENSE
|
34
|
+
# for details.
|
35
|
+
#
|
36
|
+
|
37
|
+
require 'sensu-plugin/metric/cli'
|
38
|
+
require 'rest-client'
|
39
|
+
require 'socket'
|
40
|
+
require 'json'
|
41
|
+
require 'uri'
|
42
|
+
#
|
43
|
+
# HttpJsonGraphite - see description above
|
44
|
+
#
|
45
|
+
class HttpJsonGraphite < Sensu::Plugin::Metric::CLI::Graphite
|
46
|
+
option :url,
|
47
|
+
description: 'Full URL to the endpoint',
|
48
|
+
short: '-u URL',
|
49
|
+
long: '--url URL',
|
50
|
+
default: 'http://localhost:8080'
|
51
|
+
|
52
|
+
option :scheme,
|
53
|
+
description: 'Metric naming scheme',
|
54
|
+
short: '-s SCHEME',
|
55
|
+
long: '--scheme SCHEME',
|
56
|
+
default: Socket.gethostname.to_s
|
57
|
+
|
58
|
+
option :metric,
|
59
|
+
description: 'Metric/JSON key pair ex:Connections::numConnections',
|
60
|
+
short: '-m METRIC::JSONKEY',
|
61
|
+
long: '--metric METRIC::JSONKEY'
|
62
|
+
|
63
|
+
option :headers,
|
64
|
+
description: 'Additional HTTP request headers to send. Example: Authorization:XYZ,User-Agent:ABC',
|
65
|
+
short: '-H HEADER1:val,HEADER2:val',
|
66
|
+
long: '--headers HEADER1:val,HEADER2:val'
|
67
|
+
|
68
|
+
option :object,
|
69
|
+
description: 'The JSON object containing the data',
|
70
|
+
short: '-o OBJECT',
|
71
|
+
long: '--object OBJECT'
|
72
|
+
|
73
|
+
option :insecure,
|
74
|
+
description: 'By default, every SSL connection made is verified to be secure. This option allows you to disable the verification',
|
75
|
+
short: '-k',
|
76
|
+
long: '--insecure',
|
77
|
+
boolean: true,
|
78
|
+
default: false
|
79
|
+
|
80
|
+
option :debug,
|
81
|
+
short: '-d',
|
82
|
+
long: '--debug',
|
83
|
+
default: false
|
84
|
+
|
85
|
+
def run
|
86
|
+
puts "args config: #{config}" if config[:debug]
|
87
|
+
|
88
|
+
scheme = config[:scheme].to_s
|
89
|
+
metric_pair_input = config[:metric].to_s
|
90
|
+
if config[:object]
|
91
|
+
object = config[:object].to_s
|
92
|
+
end
|
93
|
+
|
94
|
+
header_dict = {}
|
95
|
+
if config[:headers]
|
96
|
+
config[:headers].split(',').each do |header|
|
97
|
+
h, v = header.split(':', 2)
|
98
|
+
header_dict[h] = v.strip
|
99
|
+
end
|
100
|
+
end
|
101
|
+
|
102
|
+
# TODO: figure out what to do here
|
103
|
+
url = URI.encode(config[:url].to_s) # rubocop:disable Lint/UriEscapeUnescape
|
104
|
+
begin
|
105
|
+
r = RestClient::Request.execute(
|
106
|
+
url: url,
|
107
|
+
method: :get,
|
108
|
+
verify_ssl: !config[:insecure],
|
109
|
+
headers: header_dict
|
110
|
+
)
|
111
|
+
|
112
|
+
puts "Http response: #{r}" if config[:debug]
|
113
|
+
metric_pair_array = metric_pair_input.split(/,/)
|
114
|
+
metric_pair_array.each do |m|
|
115
|
+
metric, attribute = m.to_s.split(/::/)
|
116
|
+
puts "metric: #{metric}, attribute: #{attribute}" if config[:debug]
|
117
|
+
unless object.nil?
|
118
|
+
::JSON.parse(r)[object].each do |k, v|
|
119
|
+
if k == attribute
|
120
|
+
output([scheme, metric].join('.'), v)
|
121
|
+
end
|
122
|
+
end
|
123
|
+
end
|
124
|
+
::JSON.parse(r).each do |k, v|
|
125
|
+
if k == attribute
|
126
|
+
output([scheme, metric].join('.'), v)
|
127
|
+
end
|
128
|
+
end
|
129
|
+
end
|
130
|
+
rescue Errno::ECONNREFUSED
|
131
|
+
critical "#{config[:url]} is not responding"
|
132
|
+
rescue RestClient::RequestTimeout
|
133
|
+
critical "#{config[:url]} Connection timed out"
|
134
|
+
end
|
135
|
+
ok
|
136
|
+
end
|
137
|
+
end
|
@@ -0,0 +1,167 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
# frozen_string_literal: false
|
3
|
+
|
4
|
+
#
|
5
|
+
# metrics-libcurl
|
6
|
+
#
|
7
|
+
# DESCRIPTION:
|
8
|
+
# Simple wrapper around libcurl for getting timing stats from the various phases
|
9
|
+
# of connecting to an HTTP/HTTPS server.
|
10
|
+
#
|
11
|
+
# OUTPUT:
|
12
|
+
# metric data
|
13
|
+
#
|
14
|
+
# PLATFORMS:
|
15
|
+
# Linux
|
16
|
+
#
|
17
|
+
# DEPENDENCIES:
|
18
|
+
# gem: sensu-plugin
|
19
|
+
# gem: typhoeus
|
20
|
+
#
|
21
|
+
# USAGE:
|
22
|
+
# #YELLOW
|
23
|
+
#
|
24
|
+
# NOTES:
|
25
|
+
# Based on: metrics-curl.rb
|
26
|
+
# by Joe Miller.
|
27
|
+
#
|
28
|
+
# LICENSE:
|
29
|
+
# Copyright 2019 Jef Spaleta
|
30
|
+
# Released under the same terms as Sensu (the MIT license); see LICENSE
|
31
|
+
# for details.
|
32
|
+
#
|
33
|
+
|
34
|
+
require 'socket'
|
35
|
+
require 'English'
|
36
|
+
require 'sensu-plugin/metric/cli'
|
37
|
+
require 'typhoeus'
|
38
|
+
require 'json'
|
39
|
+
|
40
|
+
#
|
41
|
+
# Libcurl Metrics
|
42
|
+
#
|
43
|
+
class LibcurlMetrics < Sensu::Plugin::Metric::CLI::Graphite
|
44
|
+
option :url,
|
45
|
+
short: '-u URL',
|
46
|
+
long: '--url URL',
|
47
|
+
description: 'valid cUrl url to connect (default: http://127.0.0.1:80/)',
|
48
|
+
default: 'http://127.0.0.1:80/'
|
49
|
+
|
50
|
+
option :scheme,
|
51
|
+
description: 'Metric naming scheme, text to prepend to metric',
|
52
|
+
short: '-s SCHEME',
|
53
|
+
long: '--scheme SCHEME',
|
54
|
+
default: "#{Socket.gethostname}.curl_timings"
|
55
|
+
option :debug,
|
56
|
+
description: 'Include debug output, should not use in production.',
|
57
|
+
short: '-d',
|
58
|
+
long: '--debug',
|
59
|
+
default: false
|
60
|
+
option :libcurl_options,
|
61
|
+
description: 'Libcurl Options as a key/value JSON string',
|
62
|
+
short: '-o JSON',
|
63
|
+
long: '--options JSON',
|
64
|
+
default: '{}'
|
65
|
+
option :http_headers,
|
66
|
+
description: 'HTTP Request Headers as key/value JSON string',
|
67
|
+
short: '-H JSON',
|
68
|
+
long: '--headers JSON',
|
69
|
+
default: '{}'
|
70
|
+
option :http_params,
|
71
|
+
description: 'HTTP Request Parameters as key/value JSON string',
|
72
|
+
short: '-P JSON',
|
73
|
+
long: '--params JSON',
|
74
|
+
default: '{}'
|
75
|
+
option :http_response_error,
|
76
|
+
description: 'return critical status (2) if http response error status encountered (>= 400)',
|
77
|
+
short: '-c',
|
78
|
+
long: '--critical_http_error',
|
79
|
+
default: false
|
80
|
+
option :http_redirect_warning,
|
81
|
+
description: 'return warning status (1) if http response redirect status encountered (3xx)',
|
82
|
+
short: '-w',
|
83
|
+
long: '--warn_redirect',
|
84
|
+
default: false
|
85
|
+
option :help,
|
86
|
+
short: '-h',
|
87
|
+
long: '--help',
|
88
|
+
description: 'Show this message',
|
89
|
+
on: :tail,
|
90
|
+
boolean: true,
|
91
|
+
show_options: true
|
92
|
+
|
93
|
+
def usage_details
|
94
|
+
<<~USAGE
|
95
|
+
Detailed Info:
|
96
|
+
This wrapper makes use of libcurl directly instead of the curl executable by way of the Typhoeus RubyGem.
|
97
|
+
You can provide additional libcurl options via the commandline using the --options argument.
|
98
|
+
|
99
|
+
Options Examples:
|
100
|
+
Follow Redirects: --options '{\"followlocation\": true}'
|
101
|
+
Use Proxy: --options '{proxy: \"http://proxyurl.com\", proxyuserpwd: \"user:password\"}'
|
102
|
+
Disable TLS Verification: '{\"ssl_verifypeer\": false}'
|
103
|
+
|
104
|
+
References:
|
105
|
+
Typhoeus Docs: https://www.rubydoc.info/gems/typhoeus/1.3.1
|
106
|
+
Libcurl Options: https://curl.haxx.se/libcurl/c/curl_easy_setopt.html
|
107
|
+
USAGE
|
108
|
+
end
|
109
|
+
|
110
|
+
def run
|
111
|
+
if config[:help]
|
112
|
+
puts usage_details
|
113
|
+
ok
|
114
|
+
end
|
115
|
+
|
116
|
+
puts "[DEBUG] args config: #{config}" if config[:debug]
|
117
|
+
begin
|
118
|
+
headers = ::JSON.parse(config[:http_headers])
|
119
|
+
rescue ::JSON::ParserError
|
120
|
+
critical "Error parsing http_headers JSON\n"
|
121
|
+
end
|
122
|
+
begin
|
123
|
+
params = ::JSON.parse(config[:http_params])
|
124
|
+
rescue ::JSON::ParserError
|
125
|
+
critical "Error parsing http_params JSON\n"
|
126
|
+
end
|
127
|
+
begin
|
128
|
+
hash = ::JSON.parse(config[:libcurl_options])
|
129
|
+
rescue ::JSON::ParserError
|
130
|
+
critical "Error parsing libcurl_options JSON\n"
|
131
|
+
end
|
132
|
+
|
133
|
+
begin
|
134
|
+
opts = Hash[hash.map { |k, v| [k.to_sym, v] }]
|
135
|
+
opts[:headers] = headers unless headers.empty?
|
136
|
+
opts[:params] = params unless params.empty?
|
137
|
+
request = Typhoeus::Request.new(config[:url], opts)
|
138
|
+
if config[:debug]
|
139
|
+
puts "[DEBUG] Request Options: #{request.options}"
|
140
|
+
puts "[DEBUG] Request Base Url: #{request.base_url}"
|
141
|
+
puts "[DEBUG] Request Full Url: #{request.url}"
|
142
|
+
end
|
143
|
+
response = request.run
|
144
|
+
Typhoeus.get(config[:url], followlocation: true)
|
145
|
+
if config[:debug]
|
146
|
+
puts "[DEBUG] Response HTTP Code: #{response.response_code}"
|
147
|
+
puts "[DEBUG] Response Return Code: #{response.return_code}"
|
148
|
+
end
|
149
|
+
rescue TyphoeusError
|
150
|
+
critical "Something went wrong\n Request Options: #{request.options}\n Request Base Url: #{request.base_url}\n Request Full Url: #{request.url}"
|
151
|
+
end
|
152
|
+
output "#{config[:scheme]}.time_total", response.total_time
|
153
|
+
output "#{config[:scheme]}.time_namelookup", response.namelookup_time
|
154
|
+
output "#{config[:scheme]}.time_connect", response.connect_time
|
155
|
+
output "#{config[:scheme]}.time_pretransfer", response.pretransfer_time
|
156
|
+
output "#{config[:scheme]}.time_redirect", response.redirect_time
|
157
|
+
output "#{config[:scheme]}.time_starttransfer", response.starttransfer_time
|
158
|
+
output "#{config[:scheme]}.http_code", response.response_code
|
159
|
+
if response.response_code == 0
|
160
|
+
critical
|
161
|
+
end
|
162
|
+
|
163
|
+
critical if config[:http_response_error] && response.response_code >= 400
|
164
|
+
warning if config[:http_redirect_warning] && response.response_code.between?(300, 399)
|
165
|
+
ok
|
166
|
+
end
|
167
|
+
end
|
@@ -0,0 +1,40 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module SensuPluginsHttp
|
4
|
+
module AwsV4
|
5
|
+
# Returns a modified request object with AWS v4 signature headers
|
6
|
+
# and authentication options (if any)
|
7
|
+
#
|
8
|
+
# @param [Net::HTTP] http
|
9
|
+
# The http object used to execute the request. Used to build uri
|
10
|
+
# @param [Net::HTTPGenericRequest] req
|
11
|
+
# The http request. Used to populate headers, path, method, and body
|
12
|
+
# @param [Hash] options Details about how to configure the request
|
13
|
+
# @option options [String] :aws_v4_service
|
14
|
+
# AWS service to use in signature. Defaults to 'execute-api'
|
15
|
+
# @option options [String] :aws_v4_region
|
16
|
+
# AWS region to use in signature. Defaults to
|
17
|
+
# ENV['AWS_REGION'] or ENV['AWS_DEFAULT_REGION']
|
18
|
+
def apply_v4_signature(http, req, options = {})
|
19
|
+
require 'aws-sdk'
|
20
|
+
|
21
|
+
fake_seahorse = Struct.new(:endpoint, :body, :headers, :http_method)
|
22
|
+
headers = {}
|
23
|
+
req.each_name { |name| headers[name] = req[name] }
|
24
|
+
protocol = http.use_ssl? ? 'https' : 'http'
|
25
|
+
uri = URI.parse("#{protocol}://#{http.address}:#{http.port}#{req.path}")
|
26
|
+
fake_req = fake_seahorse.new(uri, req.body || '',
|
27
|
+
headers, req.method)
|
28
|
+
|
29
|
+
credentials = Aws::CredentialProviderChain.new.resolve
|
30
|
+
service = options[:aws_v4_service] || 'execute-api'
|
31
|
+
region = options[:aws_v4_region] || ENV['AWS_REGION'] || ENV['AWS_DEFAULT_REGION']
|
32
|
+
signer = Aws::Signers::V4.new(credentials, service, region)
|
33
|
+
|
34
|
+
signed_req = signer.sign(fake_req)
|
35
|
+
signed_req.headers.each { |key, value| req[key] = value }
|
36
|
+
|
37
|
+
req
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
@@ -0,0 +1,35 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Common
|
4
|
+
def initialize
|
5
|
+
super()
|
6
|
+
aws_config
|
7
|
+
end
|
8
|
+
|
9
|
+
def aws_config
|
10
|
+
if config[:aws_access_key_id] && config[:aws_secret_access_key]
|
11
|
+
Aws.config.update(
|
12
|
+
credentials: Aws::Credentials.new(config[:aws_access_key_id], config[:aws_secret_access_key])
|
13
|
+
)
|
14
|
+
end
|
15
|
+
|
16
|
+
Aws.config.update(
|
17
|
+
region: config[:aws_region]
|
18
|
+
)
|
19
|
+
end
|
20
|
+
|
21
|
+
def merge_s3_config
|
22
|
+
return if config[:s3_config_bucket].nil? || config[:s3_config_key].nil?
|
23
|
+
|
24
|
+
aws_config
|
25
|
+
|
26
|
+
s3 = Aws::S3::Client.new
|
27
|
+
begin
|
28
|
+
resp = s3.get_object(bucket: config[:s3_config_bucket], key: config[:s3_config_key])
|
29
|
+
s3_config = JSON.parse(resp.body.read, symbolize_names: true)
|
30
|
+
config.merge!(s3_config)
|
31
|
+
rescue StandardError
|
32
|
+
critical 'Error getting config file from s3'
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
metadata
ADDED
@@ -0,0 +1,290 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: sensu-plugins-http-boutetnico
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 1.0.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Sensu-Plugins and contributors
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2020-07-02 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: aws-sdk
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '3'
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '3'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: oj
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '3.10'
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '3.10'
|
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: '2.1'
|
48
|
+
type: :runtime
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - "~>"
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '2.1'
|
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: '4.0'
|
62
|
+
type: :runtime
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - "~>"
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '4.0'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: typhoeus
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - "~>"
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '1.4'
|
76
|
+
type: :runtime
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - "~>"
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '1.4'
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: bundler
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - "~>"
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: '2.1'
|
90
|
+
type: :development
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - "~>"
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: '2.1'
|
97
|
+
- !ruby/object:Gem::Dependency
|
98
|
+
name: github-markup
|
99
|
+
requirement: !ruby/object:Gem::Requirement
|
100
|
+
requirements:
|
101
|
+
- - "~>"
|
102
|
+
- !ruby/object:Gem::Version
|
103
|
+
version: '3.0'
|
104
|
+
type: :development
|
105
|
+
prerelease: false
|
106
|
+
version_requirements: !ruby/object:Gem::Requirement
|
107
|
+
requirements:
|
108
|
+
- - "~>"
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: '3.0'
|
111
|
+
- !ruby/object:Gem::Dependency
|
112
|
+
name: json
|
113
|
+
requirement: !ruby/object:Gem::Requirement
|
114
|
+
requirements:
|
115
|
+
- - "~>"
|
116
|
+
- !ruby/object:Gem::Version
|
117
|
+
version: '2.3'
|
118
|
+
type: :development
|
119
|
+
prerelease: false
|
120
|
+
version_requirements: !ruby/object:Gem::Requirement
|
121
|
+
requirements:
|
122
|
+
- - "~>"
|
123
|
+
- !ruby/object:Gem::Version
|
124
|
+
version: '2.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.13'
|
132
|
+
type: :development
|
133
|
+
prerelease: false
|
134
|
+
version_requirements: !ruby/object:Gem::Requirement
|
135
|
+
requirements:
|
136
|
+
- - "~>"
|
137
|
+
- !ruby/object:Gem::Version
|
138
|
+
version: '0.13'
|
139
|
+
- !ruby/object:Gem::Dependency
|
140
|
+
name: rake
|
141
|
+
requirement: !ruby/object:Gem::Requirement
|
142
|
+
requirements:
|
143
|
+
- - "~>"
|
144
|
+
- !ruby/object:Gem::Version
|
145
|
+
version: '13.0'
|
146
|
+
type: :development
|
147
|
+
prerelease: false
|
148
|
+
version_requirements: !ruby/object:Gem::Requirement
|
149
|
+
requirements:
|
150
|
+
- - "~>"
|
151
|
+
- !ruby/object:Gem::Version
|
152
|
+
version: '13.0'
|
153
|
+
- !ruby/object:Gem::Dependency
|
154
|
+
name: rdoc
|
155
|
+
requirement: !ruby/object:Gem::Requirement
|
156
|
+
requirements:
|
157
|
+
- - ">="
|
158
|
+
- !ruby/object:Gem::Version
|
159
|
+
version: '0'
|
160
|
+
type: :development
|
161
|
+
prerelease: false
|
162
|
+
version_requirements: !ruby/object:Gem::Requirement
|
163
|
+
requirements:
|
164
|
+
- - ">="
|
165
|
+
- !ruby/object:Gem::Version
|
166
|
+
version: '0'
|
167
|
+
- !ruby/object:Gem::Dependency
|
168
|
+
name: redcarpet
|
169
|
+
requirement: !ruby/object:Gem::Requirement
|
170
|
+
requirements:
|
171
|
+
- - "~>"
|
172
|
+
- !ruby/object:Gem::Version
|
173
|
+
version: '3.2'
|
174
|
+
type: :development
|
175
|
+
prerelease: false
|
176
|
+
version_requirements: !ruby/object:Gem::Requirement
|
177
|
+
requirements:
|
178
|
+
- - "~>"
|
179
|
+
- !ruby/object:Gem::Version
|
180
|
+
version: '3.2'
|
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: rubocop
|
197
|
+
requirement: !ruby/object:Gem::Requirement
|
198
|
+
requirements:
|
199
|
+
- - "~>"
|
200
|
+
- !ruby/object:Gem::Version
|
201
|
+
version: 0.85.0
|
202
|
+
type: :development
|
203
|
+
prerelease: false
|
204
|
+
version_requirements: !ruby/object:Gem::Requirement
|
205
|
+
requirements:
|
206
|
+
- - "~>"
|
207
|
+
- !ruby/object:Gem::Version
|
208
|
+
version: 0.85.0
|
209
|
+
- !ruby/object:Gem::Dependency
|
210
|
+
name: yard
|
211
|
+
requirement: !ruby/object:Gem::Requirement
|
212
|
+
requirements:
|
213
|
+
- - "~>"
|
214
|
+
- !ruby/object:Gem::Version
|
215
|
+
version: 0.9.25
|
216
|
+
type: :development
|
217
|
+
prerelease: false
|
218
|
+
version_requirements: !ruby/object:Gem::Requirement
|
219
|
+
requirements:
|
220
|
+
- - "~>"
|
221
|
+
- !ruby/object:Gem::Version
|
222
|
+
version: 0.9.25
|
223
|
+
description: |-
|
224
|
+
This plugin provides native HTTP instrumentation
|
225
|
+
for monitoring and metrics collection, including:
|
226
|
+
response code, JSON response, HTTP last modified,
|
227
|
+
SSL expiry, and metrics via `curl`.
|
228
|
+
email: "<sensu-users@googlegroups.com>"
|
229
|
+
executables:
|
230
|
+
- metrics-curl.rb
|
231
|
+
- metrics-http-json.rb
|
232
|
+
- check-https-cert.rb
|
233
|
+
- check-head-redirect.rb
|
234
|
+
- check-http-json.rb
|
235
|
+
- check-http-cors.rb
|
236
|
+
- check-last-modified.rb
|
237
|
+
- metrics-libcurl.rb
|
238
|
+
- check-http.rb
|
239
|
+
- metrics-http-json-deep.rb
|
240
|
+
extensions: []
|
241
|
+
extra_rdoc_files: []
|
242
|
+
files:
|
243
|
+
- CHANGELOG.md
|
244
|
+
- LICENSE
|
245
|
+
- README.md
|
246
|
+
- bin/check-head-redirect.rb
|
247
|
+
- bin/check-http-cors.rb
|
248
|
+
- bin/check-http-json.rb
|
249
|
+
- bin/check-http.rb
|
250
|
+
- bin/check-https-cert.rb
|
251
|
+
- bin/check-last-modified.rb
|
252
|
+
- bin/metrics-curl.rb
|
253
|
+
- bin/metrics-http-json-deep.rb
|
254
|
+
- bin/metrics-http-json.rb
|
255
|
+
- bin/metrics-libcurl.rb
|
256
|
+
- lib/sensu-plugins-http.rb
|
257
|
+
- lib/sensu-plugins-http/aws-v4.rb
|
258
|
+
- lib/sensu-plugins-http/common.rb
|
259
|
+
- lib/sensu-plugins-http/version.rb
|
260
|
+
homepage: https://github.com/boutetnico/sensu-plugins-http
|
261
|
+
licenses:
|
262
|
+
- MIT
|
263
|
+
metadata:
|
264
|
+
maintainer: sensu-plugin
|
265
|
+
development_status: active
|
266
|
+
production_status: unstable - testing recommended
|
267
|
+
release_draft: 'false'
|
268
|
+
release_prerelease: 'false'
|
269
|
+
post_install_message: You can use the embedded Ruby by setting EMBEDDED_RUBY=true
|
270
|
+
in /etc/default/sensu
|
271
|
+
rdoc_options: []
|
272
|
+
require_paths:
|
273
|
+
- lib
|
274
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
275
|
+
requirements:
|
276
|
+
- - ">="
|
277
|
+
- !ruby/object:Gem::Version
|
278
|
+
version: 2.4.0
|
279
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
280
|
+
requirements:
|
281
|
+
- - ">="
|
282
|
+
- !ruby/object:Gem::Version
|
283
|
+
version: '0'
|
284
|
+
requirements: []
|
285
|
+
rubyforge_project:
|
286
|
+
rubygems_version: 2.6.14.4
|
287
|
+
signing_key:
|
288
|
+
specification_version: 4
|
289
|
+
summary: Sensu plugins for various http monitors and metrics
|
290
|
+
test_files: []
|