sensu-plugins-nginx 2.0.0 → 2.1.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 +4 -4
- data/CHANGELOG.md +6 -1
- data/README.md +6 -2
- data/bin/check-nginx-status.rb +139 -0
- data/lib/sensu-plugins-nginx/version.rb +1 -1
- metadata +5 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 476205e6bed938636daf2e723fdca5d0547eadd5
|
4
|
+
data.tar.gz: 24104bf3d8f97424618621b661c752f22dee69a0
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 95133fd68e7d3834c3c0e84cc18a78fea12f496a2720e0081c26e4d0ed4563f1f3f09ae476e57017a28b23f900e3ad4ea26a9b5b24491b697d56c2ac0108e722
|
7
|
+
data.tar.gz: 338d1d7f21e436e95fd277223e710c2451dc66551c15bda7ad412ff2b0ca576a35b29ac9a1740a1f4fa5c7142f98788adf6327993de03dbfb7351ac0cf37ca4d
|
data/CHANGELOG.md
CHANGED
@@ -5,6 +5,10 @@ This CHANGELOG follows the format listed at [Keep A Changelog](http://keepachang
|
|
5
5
|
|
6
6
|
## [Unreleased]
|
7
7
|
|
8
|
+
## [2.1.0] - 2017-02-28
|
9
|
+
### Added
|
10
|
+
- add `check-nginx-status` plugin (@hany)
|
11
|
+
|
8
12
|
## [2.0.0] - 2016-05-24
|
9
13
|
### Changed
|
10
14
|
- remove support for rubies < 2.0
|
@@ -56,7 +60,8 @@ This CHANGELOG follows the format listed at [Keep A Changelog](http://keepachang
|
|
56
60
|
## 0.0.1 - 2015-02-11 **YANKED**
|
57
61
|
- initial stable release
|
58
62
|
|
59
|
-
[Unreleased]: https://github.com/sensu-plugins/sensu-plugins-nginx/compare/2.
|
63
|
+
[Unreleased]: https://github.com/sensu-plugins/sensu-plugins-nginx/compare/2.1.0...HEAD
|
64
|
+
[2.1.0]: https://github.com/sensu-plugins/sensu-plugins-nginx/compare/2.0.0...2.1.0
|
60
65
|
[2.0.0]: https://github.com/sensu-plugins/sensu-plugins-nginx/compare/1.0.0...2.0.0
|
61
66
|
[1.0.0]: https://github.com/sensu-plugins/sensu-plugins-nginx/compare/0.0.6...1.0.0
|
62
67
|
[0.0.6]: https://github.com/sensu-plugins/sensu-plugins-nginx/compare/0.0.5...0.0.6
|
data/README.md
CHANGED
@@ -10,11 +10,15 @@
|
|
10
10
|
|
11
11
|
**metrics-nginx**
|
12
12
|
|
13
|
-
Fetch the nginx status page and convert the response into
|
13
|
+
Fetch the nginx status page and convert the response into metrics
|
14
|
+
|
15
|
+
**check-nginx-status**
|
16
|
+
|
17
|
+
Check nginx statistics
|
14
18
|
|
15
19
|
## Files
|
16
20
|
* bin/metrics-nginx.rb
|
17
|
-
|
21
|
+
* bin/check-nginx-status.rb
|
18
22
|
|
19
23
|
## Usage
|
20
24
|
|
@@ -0,0 +1,139 @@
|
|
1
|
+
#! /usr/bin/env ruby
|
2
|
+
#
|
3
|
+
# check-nginx-status
|
4
|
+
#
|
5
|
+
# DESCRIPTION:
|
6
|
+
# Sensu Check that fetches Nginx Status
|
7
|
+
#
|
8
|
+
# OUTPUT:
|
9
|
+
# plain text
|
10
|
+
#
|
11
|
+
# PLATFORMS:
|
12
|
+
# Linux
|
13
|
+
#
|
14
|
+
# DEPENDENCIES:
|
15
|
+
# gem: sensu-plugin
|
16
|
+
#
|
17
|
+
# USAGE:
|
18
|
+
# You need to enable nginx status
|
19
|
+
# https://easyengine.io/tutorials/nginx/status-page/
|
20
|
+
# check-nginx-status.rb --help
|
21
|
+
#
|
22
|
+
# NOTES:
|
23
|
+
#
|
24
|
+
# LICENSE:
|
25
|
+
# Adapted from official metrics-nginx plugin (Pete Shima <me@peteshima.com>)
|
26
|
+
# Magic Online http://www.magic.fr @2016 - hanynowsky@gmail.com
|
27
|
+
# Released under the same terms as Sensu (the MIT license); see LICENSE for details.
|
28
|
+
# Last Modified October 2016
|
29
|
+
#
|
30
|
+
|
31
|
+
require 'net/https'
|
32
|
+
require 'uri'
|
33
|
+
require 'socket'
|
34
|
+
require 'sensu-plugin/check/cli'
|
35
|
+
|
36
|
+
#
|
37
|
+
# Nginx Status Check
|
38
|
+
#
|
39
|
+
class CheckNginxStatus < Sensu::Plugin::Check::CLI
|
40
|
+
option :url,
|
41
|
+
short: '-u URL',
|
42
|
+
long: '--url URL',
|
43
|
+
description: 'Full URL to nginx status page, example: https://yoursite.com/nginx_status This ignores ALL other options'
|
44
|
+
|
45
|
+
option :hostname,
|
46
|
+
short: '-h HOSTNAME',
|
47
|
+
long: '--host HOSTNAME', description: 'Nginx hostname', default: 'localhost'
|
48
|
+
|
49
|
+
option :port,
|
50
|
+
short: '-p PORT',
|
51
|
+
long: '--port PORT',
|
52
|
+
description: 'Nginx port',
|
53
|
+
default: '80'
|
54
|
+
|
55
|
+
option :activecon,
|
56
|
+
short: '-a ACTIVE_CONNECTION_THRESHOLD',
|
57
|
+
long: '--activecon ACTIVE_CONNECTION_THRESHOLD',
|
58
|
+
description: 'Active connections threshold',
|
59
|
+
default: 300
|
60
|
+
|
61
|
+
option :waitingreq,
|
62
|
+
short: '-w WAITING_REQUESTS_THRESHOLD',
|
63
|
+
long: '--waitingreq WAITING_REQUESTS_THRESHOLD',
|
64
|
+
description: 'Waiting requests threshold',
|
65
|
+
default: 30
|
66
|
+
|
67
|
+
option :path,
|
68
|
+
short: '-q STATUSPATH',
|
69
|
+
long: '--statspath STATUSPATH',
|
70
|
+
description: 'Path to your stub status module',
|
71
|
+
default: 'nginx_status'
|
72
|
+
|
73
|
+
option :hostheader,
|
74
|
+
long: '--hostheader HOSTHEADER',
|
75
|
+
description: 'Set the Host header to this string'
|
76
|
+
|
77
|
+
#
|
78
|
+
# Acquire Nginx Status
|
79
|
+
#
|
80
|
+
def statutor
|
81
|
+
found = false
|
82
|
+
attempts = 0
|
83
|
+
begin
|
84
|
+
until found || attempts >= 10
|
85
|
+
attempts += 1
|
86
|
+
if config[:url]
|
87
|
+
uri = URI.parse(config[:url])
|
88
|
+
http = Net::HTTP.new(uri.host, uri.port)
|
89
|
+
if uri.scheme == 'https'
|
90
|
+
http.use_ssl = true
|
91
|
+
http.verify_mode = OpenSSL::SSL::VERIFY_NONE
|
92
|
+
end
|
93
|
+
request = Net::HTTP::Get.new(uri.request_uri)
|
94
|
+
if config[:hostheader]
|
95
|
+
request['Host'] = config[:hostheader]
|
96
|
+
end
|
97
|
+
response = http.request(request)
|
98
|
+
if response.code == '200'
|
99
|
+
found = true
|
100
|
+
elsif !response.header['location'].nil?
|
101
|
+
config[:url] = response.header['location']
|
102
|
+
end
|
103
|
+
else
|
104
|
+
response = Net::HTTP.start(config[:hostname], config[:port]) do |connection|
|
105
|
+
request = Net::HTTP::Get.new("/#{config[:path]}")
|
106
|
+
connection.request(request)
|
107
|
+
end
|
108
|
+
end
|
109
|
+
return response
|
110
|
+
end
|
111
|
+
rescue => e
|
112
|
+
unknown "Could not fetch Nginx status | #{e.message}"
|
113
|
+
end
|
114
|
+
end
|
115
|
+
|
116
|
+
#
|
117
|
+
# Main function
|
118
|
+
#
|
119
|
+
def run
|
120
|
+
code = statutor
|
121
|
+
#### Metrics
|
122
|
+
code.body.split(/\r?\n/).each do |line|
|
123
|
+
if line =~ /^Active connections:\s+(\d+)/
|
124
|
+
connections = line.match(/^Active connections:\s+(\d+)/).to_a
|
125
|
+
if connections[1].to_i > config[:activecon].to_i
|
126
|
+
warning "Active connections: #{connections[1]}"
|
127
|
+
end
|
128
|
+
end
|
129
|
+
if line =~ /^Reading:\s+(\d+).*Writing:\s+(\d+).*Waiting:\s+(\d+)/
|
130
|
+
queue = line.match(/^Reading:\s+(\d+).*Writing:\s+(\d+).*Waiting:\s+(\d+)/).to_a
|
131
|
+
warning "Waiting requests: #{queue[3]}" if queue[3].to_i > config[:waitingreq].to_i
|
132
|
+
end
|
133
|
+
end
|
134
|
+
#####
|
135
|
+
ok 'Nginx is Alive and healthy' if code.code.to_i == 200
|
136
|
+
warning 'Nginx Status endpoint is mis-configured' if code.code.to_i == 301
|
137
|
+
critical 'Nginx is Down'
|
138
|
+
end
|
139
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sensu-plugins-nginx
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: 2.1.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:
|
11
|
+
date: 2017-03-01 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: sensu-plugin
|
@@ -155,6 +155,7 @@ description: |-
|
|
155
155
|
for metrics collection, including: metrics via `stub_status`.
|
156
156
|
email: "<sensu-users@googlegroups.com>"
|
157
157
|
executables:
|
158
|
+
- check-nginx-status.rb
|
158
159
|
- metrics-nginx.rb
|
159
160
|
extensions: []
|
160
161
|
extra_rdoc_files: []
|
@@ -162,6 +163,7 @@ files:
|
|
162
163
|
- CHANGELOG.md
|
163
164
|
- LICENSE
|
164
165
|
- README.md
|
166
|
+
- bin/check-nginx-status.rb
|
165
167
|
- bin/metrics-nginx.rb
|
166
168
|
- lib/sensu-plugins-nginx.rb
|
167
169
|
- lib/sensu-plugins-nginx/version.rb
|
@@ -191,9 +193,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
191
193
|
version: '0'
|
192
194
|
requirements: []
|
193
195
|
rubyforge_project:
|
194
|
-
rubygems_version: 2.5
|
196
|
+
rubygems_version: 2.4.5
|
195
197
|
signing_key:
|
196
198
|
specification_version: 4
|
197
199
|
summary: Sensu plugins for the NGINX server
|
198
200
|
test_files: []
|
199
|
-
has_rdoc:
|