sensu 1.6.2 → 1.7.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
- checksums.yaml.gz.sig +0 -0
- data.tar.gz.sig +1 -1
- data/CHANGELOG.md +14 -0
- data/lib/sensu/api/routes/clients.rb +4 -2
- data/lib/sensu/api/routes/health.rb +16 -6
- data/lib/sensu/api/utilities/publish_check_request.rb +1 -1
- data/lib/sensu/api/utilities/servers_info.rb +8 -1
- data/lib/sensu/constants.rb +1 -1
- data/lib/sensu/daemon.rb +32 -2
- data/lib/sensu/utilities.rb +1 -1
- data/sensu.gemspec +2 -2
- metadata +6 -6
- metadata.gz.sig +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: abc95454535a1de5457e625a992d6d4de138bc9c
|
4
|
+
data.tar.gz: cdb41cd96c00967d8c7653edb03b4dddc23f5800
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e211d7fc0dc37af916333af52a926d1fa41d5be94d5472ec1deb8dfb2edcb775a5246ca3ea32df21de7c41fb3a811549f5cb13f8bf444b3800cd02564d33295f
|
7
|
+
data.tar.gz: 8d6790cbca39aec06b05e3a1874eae7a15d580e079d7a5b8edc1ab94bf8a85e21a402c09a1e51dd2bd9692558b2eee3c5e859543bfdb51e467c556fd1a701b56
|
checksums.yaml.gz.sig
CHANGED
Binary file
|
data.tar.gz.sig
CHANGED
@@ -1 +1 @@
|
|
1
|
-
|
1
|
+
�W�T��F���P����E)��tLթ�A���\c��)<|w�|�M�z�9ݾ������Wϰ�-����)&�%]�aD����a��N�hϱ�Q�W��.�������h+/�m{���L��-}����qs.�'7�^PS��/�83�4��_���\d?}ԫrJ����_��P���TY1����^�w�3�L���,`V��$����5H�E���l���e�7��b�<N�a
|
data/CHANGELOG.md
CHANGED
@@ -5,6 +5,20 @@ This CHANGELOG follows the format listed [here](https://github.com/sensu-plugins
|
|
5
5
|
|
6
6
|
## [Unreleased]
|
7
7
|
|
8
|
+
## [1.7.0] - 2018-02-19
|
9
|
+
|
10
|
+
### Added
|
11
|
+
- Added a response body to the api health endpoint including transport consumer & message counts.
|
12
|
+
- Bump sensu-extensions to 1.11.0 to add support for built-in sensu-extensions-deregistration handler.
|
13
|
+
- Added an eventmachine globbal catch-all error handler.
|
14
|
+
|
15
|
+
### Fixed
|
16
|
+
- Token substitution will now only split on the first instance of the pipe character.
|
17
|
+
- Use `deep_dup` in api token substitution to prevent an issue where substitution could use an incorrect value.
|
18
|
+
- Redacted attributes are now redacted from the `/clients` and `/clients/:client` routes.
|
19
|
+
- Server registry entires that fail to expire are now cleaned up.
|
20
|
+
- Improved error logging.
|
21
|
+
|
8
22
|
## [1.6.2] - 2018-12-07
|
9
23
|
|
10
24
|
### Fixed
|
@@ -42,7 +42,8 @@ module Sensu
|
|
42
42
|
clients.each_with_index do |client_name, index|
|
43
43
|
@redis.get("client:#{client_name}") do |client_json|
|
44
44
|
unless client_json.nil?
|
45
|
-
|
45
|
+
client = Sensu::JSON.load(client_json)
|
46
|
+
@response_content << redact_sensitive(client, client[:redact])
|
46
47
|
else
|
47
48
|
@logger.error("client data missing from registry", :client_name => client_name)
|
48
49
|
@redis.srem("clients", client_name)
|
@@ -63,7 +64,8 @@ module Sensu
|
|
63
64
|
client_name = parse_uri(CLIENT_URI).first
|
64
65
|
@redis.get("client:#{client_name}") do |client_json|
|
65
66
|
unless client_json.nil?
|
66
|
-
|
67
|
+
client = Sensu::JSON.load(client_json)
|
68
|
+
@response_content = redact_sensitive(client, client[:redact])
|
67
69
|
respond
|
68
70
|
else
|
69
71
|
not_found!
|
@@ -10,22 +10,32 @@ module Sensu
|
|
10
10
|
|
11
11
|
# GET /health
|
12
12
|
def get_health
|
13
|
+
@response_content = []
|
13
14
|
if @redis.connected? && @transport.connected?
|
14
|
-
healthy = []
|
15
15
|
min_consumers = integer_parameter(@params[:consumers])
|
16
16
|
max_messages = integer_parameter(@params[:messages])
|
17
17
|
transport_info do |info|
|
18
18
|
if min_consumers
|
19
|
-
|
20
|
-
|
19
|
+
if info[:keepalives][:consumers] < min_consumers
|
20
|
+
@response_content << "keepalive consumers (#{info[:keepalives][:consumers]}) less than min_consumers (#{min_consumers})"
|
21
|
+
end
|
22
|
+
if info[:results][:consumers] < min_consumers
|
23
|
+
@response_content << "result consumers (#{info[:results][:consumers]}) less than min_consumers (#{min_consumers})"
|
24
|
+
end
|
21
25
|
end
|
22
26
|
if max_messages
|
23
|
-
|
24
|
-
|
27
|
+
if info[:keepalives][:messages] > max_messages
|
28
|
+
@response_content << "keepalive messages (#{info[:keepalives][:messages]}) greater than max_messages (#{max_messages})"
|
29
|
+
end
|
30
|
+
if info[:results][:messages] > max_messages
|
31
|
+
@response_content << "result messages (#{info[:results][:messages]}) greater than max_messages (#{max_messages})"
|
32
|
+
end
|
25
33
|
end
|
26
|
-
|
34
|
+
@response_content.empty? ? no_content! : precondition_failed!
|
27
35
|
end
|
28
36
|
else
|
37
|
+
@response_content << "not connected to redis" unless @redis.connected?
|
38
|
+
@response_content << "not connected to transport" unless @transport.connected?
|
29
39
|
precondition_failed!
|
30
40
|
end
|
31
41
|
end
|
@@ -82,7 +82,7 @@ module Sensu
|
|
82
82
|
:client => client,
|
83
83
|
:check => check
|
84
84
|
})
|
85
|
-
proxy_check, unmatched_tokens = object_substitute_tokens(check.dup, client)
|
85
|
+
proxy_check, unmatched_tokens = object_substitute_tokens(deep_dup(check.dup), client)
|
86
86
|
if unmatched_tokens.empty?
|
87
87
|
proxy_check[:source] ||= client[:name]
|
88
88
|
publish_check_request(proxy_check)
|
@@ -13,7 +13,14 @@ module Sensu
|
|
13
13
|
servers.each_with_index do |server_id, index|
|
14
14
|
@redis.get("server:#{server_id}") do |server_json|
|
15
15
|
unless server_json.nil?
|
16
|
-
|
16
|
+
server = Sensu::JSON.load(server_json)
|
17
|
+
if server[:timestamp] >= (Time.now.to_i - 30)
|
18
|
+
info << server
|
19
|
+
else
|
20
|
+
@redis.del("server:#{server_id}") do
|
21
|
+
@redis.srem("servers", server_id)
|
22
|
+
end
|
23
|
+
end
|
17
24
|
else
|
18
25
|
@redis.srem("servers", server_id)
|
19
26
|
end
|
data/lib/sensu/constants.rb
CHANGED
data/lib/sensu/daemon.rb
CHANGED
@@ -4,9 +4,9 @@ gem "eventmachine", "1.2.7"
|
|
4
4
|
|
5
5
|
gem "sensu-json", "2.1.1"
|
6
6
|
gem "sensu-logger", "1.2.2"
|
7
|
-
gem "sensu-settings", "10.
|
7
|
+
gem "sensu-settings", "10.15.0"
|
8
8
|
gem "sensu-extension", "1.5.2"
|
9
|
-
gem "sensu-extensions", "1.
|
9
|
+
gem "sensu-extensions", "1.11.0"
|
10
10
|
gem "sensu-transport", "8.2.0"
|
11
11
|
gem "sensu-spawn", "2.5.0"
|
12
12
|
gem "sensu-redis", "2.4.0"
|
@@ -51,6 +51,9 @@ module Sensu
|
|
51
51
|
unless EM::reactor_running?
|
52
52
|
EM::epoll
|
53
53
|
EM::set_max_timers(200000)
|
54
|
+
EM::error_handler do |error|
|
55
|
+
unexpected_error(error)
|
56
|
+
end
|
54
57
|
end
|
55
58
|
setup_logger(options)
|
56
59
|
load_settings(options)
|
@@ -61,6 +64,33 @@ module Sensu
|
|
61
64
|
setup_process(options)
|
62
65
|
end
|
63
66
|
|
67
|
+
# Handle an unexpected error. This method is used for EM global
|
68
|
+
# catch-all error handling, accepting an error object. Error
|
69
|
+
# handling is opt-in via a configuration option, e.g. `"sensu":
|
70
|
+
# {"global_error_handler": true}`. If a user does not opt-in, the
|
71
|
+
# provided error will be raised (uncaught). If a user opts-in via
|
72
|
+
# configuration, the error will be logged and ignored :itsfine:.
|
73
|
+
#
|
74
|
+
# @param error [Object]
|
75
|
+
def unexpected_error(error)
|
76
|
+
if @settings && @settings[:sensu][:global_error_handler]
|
77
|
+
backtrace = error.backtrace.join("\n")
|
78
|
+
if @logger
|
79
|
+
@logger.warn("global catch-all error handling enabled")
|
80
|
+
@logger.fatal("unexpected error - please address this immediately", {
|
81
|
+
:error => error.to_s,
|
82
|
+
:error_class => error.class,
|
83
|
+
:backtrace => backtrace
|
84
|
+
})
|
85
|
+
else
|
86
|
+
puts "global catch-all error handling enabled"
|
87
|
+
puts "unexpected error - please address this immediately: #{error.to_s}\n#{error.class}\n#{backtrace}"
|
88
|
+
end
|
89
|
+
else
|
90
|
+
raise error
|
91
|
+
end
|
92
|
+
end
|
93
|
+
|
64
94
|
# Set up the Sensu logger and its process signal traps for log
|
65
95
|
# rotation and debug log level toggling. This method creates the
|
66
96
|
# logger instance variable: `@logger`.
|
data/lib/sensu/utilities.rb
CHANGED
@@ -190,7 +190,7 @@ module Sensu
|
|
190
190
|
:replace => ""
|
191
191
|
})
|
192
192
|
substituted = encoded_tokens.gsub(/:::([^:].*?):::/) do
|
193
|
-
token, default = $1.to_s.split("|",
|
193
|
+
token, default = $1.to_s.split("|", 2)
|
194
194
|
path = token.split(".").map(&:to_sym)
|
195
195
|
matched = find_attribute_value(attributes, path, default)
|
196
196
|
if matched.nil?
|
data/sensu.gemspec
CHANGED
@@ -14,9 +14,9 @@ Gem::Specification.new do |s|
|
|
14
14
|
s.add_dependency "eventmachine", "1.2.7"
|
15
15
|
s.add_dependency "sensu-json", "2.1.1"
|
16
16
|
s.add_dependency "sensu-logger", "1.2.2"
|
17
|
-
s.add_dependency "sensu-settings", "10.
|
17
|
+
s.add_dependency "sensu-settings", "10.15.0"
|
18
18
|
s.add_dependency "sensu-extension", "1.5.2"
|
19
|
-
s.add_dependency "sensu-extensions", "1.
|
19
|
+
s.add_dependency "sensu-extensions", "1.11.0"
|
20
20
|
s.add_dependency "sensu-transport", "8.2.0"
|
21
21
|
s.add_dependency "sensu-spawn", "2.5.0"
|
22
22
|
s.add_dependency "sensu-redis", "2.4.0"
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sensu
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.7.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Sean Porter
|
@@ -31,7 +31,7 @@ cert_chain:
|
|
31
31
|
jOeGyhtQa9j4FFmsEJDg59f5v/3hECXsa3Xuml3foaFHzX3Ya/YIyd2YFxvkFKIu
|
32
32
|
GVbe7A3YdxzdkH2Es/Ym9twdxXaIDdXzj8sWhw==
|
33
33
|
-----END CERTIFICATE-----
|
34
|
-
date:
|
34
|
+
date: 2019-02-20 00:00:00.000000000 Z
|
35
35
|
dependencies:
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: eventmachine
|
@@ -81,14 +81,14 @@ dependencies:
|
|
81
81
|
requirements:
|
82
82
|
- - '='
|
83
83
|
- !ruby/object:Gem::Version
|
84
|
-
version: 10.
|
84
|
+
version: 10.15.0
|
85
85
|
type: :runtime
|
86
86
|
prerelease: false
|
87
87
|
version_requirements: !ruby/object:Gem::Requirement
|
88
88
|
requirements:
|
89
89
|
- - '='
|
90
90
|
- !ruby/object:Gem::Version
|
91
|
-
version: 10.
|
91
|
+
version: 10.15.0
|
92
92
|
- !ruby/object:Gem::Dependency
|
93
93
|
name: sensu-extension
|
94
94
|
requirement: !ruby/object:Gem::Requirement
|
@@ -109,14 +109,14 @@ dependencies:
|
|
109
109
|
requirements:
|
110
110
|
- - '='
|
111
111
|
- !ruby/object:Gem::Version
|
112
|
-
version: 1.
|
112
|
+
version: 1.11.0
|
113
113
|
type: :runtime
|
114
114
|
prerelease: false
|
115
115
|
version_requirements: !ruby/object:Gem::Requirement
|
116
116
|
requirements:
|
117
117
|
- - '='
|
118
118
|
- !ruby/object:Gem::Version
|
119
|
-
version: 1.
|
119
|
+
version: 1.11.0
|
120
120
|
- !ruby/object:Gem::Dependency
|
121
121
|
name: sensu-transport
|
122
122
|
requirement: !ruby/object:Gem::Requirement
|
metadata.gz.sig
CHANGED
Binary file
|