sensu-check-esc 1.0.6
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 +0 -0
- data/LICENSE +0 -0
- data/README.md +0 -0
- data/bin/sensu-check-esc-api-alerts.rb +64 -0
- data/bin/sensu-check-esc-critical-errors.rb +44 -0
- data/bin/sensu-check-esc-general-errors.rb +68 -0
- data/bin/sensu-check-esc-stuck-cron.rb +42 -0
- data/bin/sensu-check-esc-system-errors.rb +37 -0
- data/lib/sensu-plugins-esc/version.rb +9 -0
- data/lib/sensu-plugins-esc.rb +1 -0
- metadata +177 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 2c320fb828b6c463bb0c6c8c518589c0b3324e8d
|
4
|
+
data.tar.gz: 56d48f060fa571e5ddecd977b6bc3c159f255ad7
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 0ba62eb73c617a8e6e44d835bbf4eaba25b6dc2fab790fa22619b5fe3caf7a03e2cec56a3a986ab34a849863615645cc4036d66a1ebb4900792c614d4bbe7931
|
7
|
+
data.tar.gz: ce6fbc9d7920cda7c188d84b005229d5231d02dab261ee56ad8801f98309b8ff0f4ed3cbab820abca1eae809487792ef4781da6881cec775dccba1ea586f2df3
|
data/CHANGELOG.md
ADDED
File without changes
|
data/LICENSE
ADDED
File without changes
|
data/README.md
ADDED
File without changes
|
@@ -0,0 +1,64 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require 'sensu-plugin/check/cli'
|
4
|
+
require 'restclient'
|
5
|
+
require 'json'
|
6
|
+
|
7
|
+
class SensuPluginsEscApiAlerts < Sensu::Plugin::Check::CLI
|
8
|
+
|
9
|
+
# These messages are unactionable, so we don't report them
|
10
|
+
@@supressed_messages = [
|
11
|
+
"api.security.exception::Security Validation Failed: token is expired",
|
12
|
+
"api.users.parammissing::userID is missing/empty",
|
13
|
+
"api.controller.tokentenantmissing::token missing / tenant identifier missing",
|
14
|
+
"api.controller.serviceenpointbindingnotfound::Could not find a binding for the request [users]"
|
15
|
+
]
|
16
|
+
|
17
|
+
option :server,
|
18
|
+
short: '-s https://api.local',
|
19
|
+
description: 'Service Api Server DNS endpoint',
|
20
|
+
default: 'https://api.local'
|
21
|
+
|
22
|
+
option :interval,
|
23
|
+
description: 'Check Interval',
|
24
|
+
short: '-i',
|
25
|
+
default: '60'
|
26
|
+
|
27
|
+
option :esc_stoken,
|
28
|
+
description: 'Security Token',
|
29
|
+
short: '-t SETME',
|
30
|
+
default: 'SETME'
|
31
|
+
|
32
|
+
def run
|
33
|
+
supressed_message_count=0
|
34
|
+
messages_list = []
|
35
|
+
|
36
|
+
begin
|
37
|
+
url = "#{config[:server]}/api/statistics/errors/#{config[:interval]}?token=#{config[:esc_stoken]}"
|
38
|
+
result = RestClient.get url
|
39
|
+
rescue Exception => e
|
40
|
+
critical( "Help, i cant talk to #{url}: #{e.message}")
|
41
|
+
end
|
42
|
+
critical("no result returned") if result.body.length <= 0
|
43
|
+
result = JSON.parse(result)
|
44
|
+
ok("No Alerts Found") if result.length == 0
|
45
|
+
error("Endpoint did not return an array!!") if !result.is_a? Array
|
46
|
+
|
47
|
+
# Ok, Lets process the result and determine if there is any errors to report!
|
48
|
+
result.each do |message|
|
49
|
+
error_list = []
|
50
|
+
# Each message can have a list of errors, lets examine them.
|
51
|
+
message["error_messages"].each do |message_errors|
|
52
|
+
if @@supressed_messages.include? "#{message_errors["descriptor"]}::#{message_errors["message"]}"
|
53
|
+
supressed_message_count+=1
|
54
|
+
else
|
55
|
+
error_list.push "#{message_errors["descriptor"]}::#{message_errors["message"]}"
|
56
|
+
end
|
57
|
+
end
|
58
|
+
messages_list.push "tenant: #{message["tenant"]}, logid: #{message["logid"]}, errors: [ #{error_list.join(',')} ]" if error_list.length >= 1
|
59
|
+
end
|
60
|
+
ok("ESC API ok, supressed_message_count: #{supressed_message_count.to_s}") if messages_list.length == 0
|
61
|
+
warning("ESC API Error Count: #{messages_list.length}, supressed_message_count: #{supressed_message_count.to_s},\n#{messages_list.join(",\n")} ")
|
62
|
+
end
|
63
|
+
|
64
|
+
end
|
@@ -0,0 +1,44 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require 'sensu-plugin/check/cli'
|
4
|
+
require 'restclient'
|
5
|
+
require 'json'
|
6
|
+
|
7
|
+
class SensuPluginsEscCriticalErrors < Sensu::Plugin::Check::CLI
|
8
|
+
|
9
|
+
option :server,
|
10
|
+
short: '-s https://api.local',
|
11
|
+
description: 'Service Api Server DNS endpoint',
|
12
|
+
default: 'https://api.local'
|
13
|
+
|
14
|
+
option :esc_stoken,
|
15
|
+
description: 'Security Token',
|
16
|
+
short: '-t SETME',
|
17
|
+
default: 'SETME'
|
18
|
+
|
19
|
+
def run
|
20
|
+
begin
|
21
|
+
url = "#{config[:server]}/api/monitoring/errors/critical?token=#{config[:esc_stoken]}"
|
22
|
+
result = RestClient.get url
|
23
|
+
rescue Exception => e
|
24
|
+
critical( "Help, i cant talk to #{url}: #{e.message}")
|
25
|
+
end
|
26
|
+
critical("no result returned") if result.body.length <= 0
|
27
|
+
result = JSON.parse(result)
|
28
|
+
|
29
|
+
if result["response"] == "No Critical Errors Found"
|
30
|
+
ok(result["response"])
|
31
|
+
elsif result.to_s.include? "does not exist on eventlog.eventstore"
|
32
|
+
critical("ESC ENDPOINT ISSUES: #{result["response"]}")
|
33
|
+
else
|
34
|
+
messages_list = []
|
35
|
+
result.each do |message|
|
36
|
+
messages_list.push "#{message["logid"]}: #{message["error"]["Message"]}"
|
37
|
+
end
|
38
|
+
critical("ESC Critical Error Count: #{result.length}, #{messages_list.join(', ')} ")
|
39
|
+
end
|
40
|
+
|
41
|
+
|
42
|
+
end
|
43
|
+
|
44
|
+
end
|
@@ -0,0 +1,68 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require 'sensu-plugin/check/cli'
|
4
|
+
require 'restclient'
|
5
|
+
require 'json'
|
6
|
+
|
7
|
+
# Example Error Message:
|
8
|
+
# {"error"=>{"Message"=>"no archive found for assignmentID: 27018"},
|
9
|
+
# "descriptor"=>"api.assignments.assignmentarchivenotfound",
|
10
|
+
# "logid"=>"959E84B5-9645-4A63-AE7E-9B9FE62AD3B2",
|
11
|
+
# "url"=>"http://api.example.com/api/assignments/27018/download",
|
12
|
+
# "time_stamp"=>"2013-01-08T12:37:26-0800",
|
13
|
+
# "error_link"=>
|
14
|
+
# "http://api.example.com/api/eventlog?logid=959E84B5-9645-4A63-AE7E-9B9FE62AD3B2"}
|
15
|
+
|
16
|
+
|
17
|
+
class SensuPluginsEscGeneralErrors < Sensu::Plugin::Check::CLI
|
18
|
+
|
19
|
+
option :server,
|
20
|
+
short: '-s https://api.local',
|
21
|
+
description: 'Service Api Server DNS endpoint',
|
22
|
+
default: 'https://api.local'
|
23
|
+
|
24
|
+
option :esc_stoken,
|
25
|
+
description: 'Security Token',
|
26
|
+
short: '-t SETME',
|
27
|
+
default: 'SETME'
|
28
|
+
|
29
|
+
@@supressed_messages = [
|
30
|
+
"Could not find a binding for the request [users]",
|
31
|
+
"userID is missing/empty",
|
32
|
+
"token missing / tenant identifier missing",
|
33
|
+
"User cannot be found using: deleted",
|
34
|
+
"Record not found for Email='deleted'",
|
35
|
+
"iPad event",
|
36
|
+
"Security Validation Failed: token is expired",
|
37
|
+
"discussionID must be set"
|
38
|
+
]
|
39
|
+
|
40
|
+
def run
|
41
|
+
supressed_message_count=0
|
42
|
+
begin
|
43
|
+
url = "#{config[:server]}/api/monitoring/errors/general?token=#{config[:esc_stoken]}"
|
44
|
+
result = RestClient.get url
|
45
|
+
rescue Exception => e
|
46
|
+
critical( "Help, i cant talk to #{url}: #{e.message}")
|
47
|
+
end
|
48
|
+
critical("no result returned") if result.body.length <= 0
|
49
|
+
ok(result.body.to_s) if result.body.to_s.include? "No Errors Found"
|
50
|
+
critical("ESC ENDPOINT ISSUES: #{result.body.to_s}") if result.body.to_s.include? "Index for (system_errors) does not exist on eventlog.eventstore"
|
51
|
+
result = JSON.parse(result)
|
52
|
+
errors_list=[]
|
53
|
+
result.each do |message|
|
54
|
+
if @@supressed_messages.include? message["error"]["Message"]
|
55
|
+
supressed_message_count+=1
|
56
|
+
else
|
57
|
+
errors_list.push "#{message["error"]["Message"]}:#{message["error"]["error_link"]}"
|
58
|
+
end
|
59
|
+
end
|
60
|
+
|
61
|
+
if errors_list.length > 0
|
62
|
+
warning("ESC General Error Count: #{result.length}, suppressed messages: #{supressed_message_count.to_s}, #{errors_list.join(', ')} ")
|
63
|
+
else
|
64
|
+
ok("suppressed messages: #{supressed_message_count.to_s}")
|
65
|
+
end
|
66
|
+
end
|
67
|
+
|
68
|
+
end
|
@@ -0,0 +1,42 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require 'sensu-plugin/check/cli'
|
4
|
+
require 'restclient'
|
5
|
+
require 'json'
|
6
|
+
|
7
|
+
class SensuPluginsEscStuckCron < Sensu::Plugin::Check::CLI
|
8
|
+
|
9
|
+
option :server,
|
10
|
+
short: '-s https://api.local',
|
11
|
+
description: 'Service Api Server DNS endpoint',
|
12
|
+
default: 'https://api.local'
|
13
|
+
|
14
|
+
option :esc_stoken,
|
15
|
+
description: 'Security Token',
|
16
|
+
short: '-t SETME',
|
17
|
+
default: 'SETME'
|
18
|
+
|
19
|
+
def run
|
20
|
+
begin
|
21
|
+
url = "#{config[:server]}/api/statistics/cron?token=#{config[:esc_stoken]}"
|
22
|
+
result = RestClient.get url
|
23
|
+
rescue Exception => e
|
24
|
+
critical( "Help, i cant talk to #{url}: #{e.message}")
|
25
|
+
end
|
26
|
+
critical("no result returned") if result.body.length <= 0
|
27
|
+
result = JSON.parse(result)
|
28
|
+
ok("No Stuck Cron's Found") if result.length == 0
|
29
|
+
error("Endpoint did not return an array!!") if !result.is_a? Array
|
30
|
+
|
31
|
+
# Ok, Lets process the result and determine if there is any errors to report!
|
32
|
+
stuck_crons = []
|
33
|
+
result.each do |cron|
|
34
|
+
if cron["enabled"] == true && cron["cron_stuck"] == true
|
35
|
+
stuck_crons.push cron["name"]
|
36
|
+
end
|
37
|
+
end
|
38
|
+
ok("ESC no stuck crons") if stuck_crons.length == 0
|
39
|
+
warning("ESC Stuck Crons: #{stuck_crons.length},\n#{stuck_crons.join(",\n")} ")
|
40
|
+
end
|
41
|
+
|
42
|
+
end
|
@@ -0,0 +1,37 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require 'sensu-plugin/check/cli'
|
4
|
+
require 'restclient'
|
5
|
+
require 'json'
|
6
|
+
|
7
|
+
|
8
|
+
class SensuPluginsEscSystemErrors < Sensu::Plugin::Check::CLI
|
9
|
+
|
10
|
+
option :server,
|
11
|
+
short: '-s https://api.local',
|
12
|
+
description: 'Service Api Server DNS endpoint',
|
13
|
+
default: 'https://api.local'
|
14
|
+
|
15
|
+
option :esc_stoken,
|
16
|
+
description: 'Security Token',
|
17
|
+
short: '-t SETME',
|
18
|
+
default: 'SETME'
|
19
|
+
|
20
|
+
def run
|
21
|
+
begin
|
22
|
+
url = "https://#{config[:server]}/api/monitoring/errors/system?token=#{config[:esc_stoken]}"
|
23
|
+
result = RestClient.get url
|
24
|
+
rescue Exception => e
|
25
|
+
critical( "Help, i cant talk to #{url}: #{e.message}")
|
26
|
+
end
|
27
|
+
critical("no result returned") if result.body.length <= 0
|
28
|
+
result = JSON.parse(result)
|
29
|
+
ok(result["response"]) if result["response"] == "No System Errors Found"
|
30
|
+
messages_list = []
|
31
|
+
result.each do |message|
|
32
|
+
messages_list.push "#{message["logid"]}:#{message["error"]["Message"]}"
|
33
|
+
end
|
34
|
+
critical("ESC System Error Count: #{result.length}, #{messages_list.join(', ')} ")
|
35
|
+
end
|
36
|
+
|
37
|
+
end
|
@@ -0,0 +1 @@
|
|
1
|
+
require 'sensu-plugins-esc/version'
|
metadata
ADDED
@@ -0,0 +1,177 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: sensu-check-esc
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 1.0.6
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- One University Network
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2016-10-19 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: sensu-plugin
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '1.2'
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '1.2'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: rest-client
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '2.0'
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '2.0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: redcarpet
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - "~>"
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '3.3'
|
48
|
+
- - ">="
|
49
|
+
- !ruby/object:Gem::Version
|
50
|
+
version: 3.3.4
|
51
|
+
type: :development
|
52
|
+
prerelease: false
|
53
|
+
version_requirements: !ruby/object:Gem::Requirement
|
54
|
+
requirements:
|
55
|
+
- - "~>"
|
56
|
+
- !ruby/object:Gem::Version
|
57
|
+
version: '3.3'
|
58
|
+
- - ">="
|
59
|
+
- !ruby/object:Gem::Version
|
60
|
+
version: 3.3.4
|
61
|
+
- !ruby/object:Gem::Dependency
|
62
|
+
name: bundler
|
63
|
+
requirement: !ruby/object:Gem::Requirement
|
64
|
+
requirements:
|
65
|
+
- - "~>"
|
66
|
+
- !ruby/object:Gem::Version
|
67
|
+
version: '1.7'
|
68
|
+
type: :development
|
69
|
+
prerelease: false
|
70
|
+
version_requirements: !ruby/object:Gem::Requirement
|
71
|
+
requirements:
|
72
|
+
- - "~>"
|
73
|
+
- !ruby/object:Gem::Version
|
74
|
+
version: '1.7'
|
75
|
+
- !ruby/object:Gem::Dependency
|
76
|
+
name: github-markup
|
77
|
+
requirement: !ruby/object:Gem::Requirement
|
78
|
+
requirements:
|
79
|
+
- - "~>"
|
80
|
+
- !ruby/object:Gem::Version
|
81
|
+
version: '1.3'
|
82
|
+
type: :development
|
83
|
+
prerelease: false
|
84
|
+
version_requirements: !ruby/object:Gem::Requirement
|
85
|
+
requirements:
|
86
|
+
- - "~>"
|
87
|
+
- !ruby/object:Gem::Version
|
88
|
+
version: '1.3'
|
89
|
+
- !ruby/object:Gem::Dependency
|
90
|
+
name: pry
|
91
|
+
requirement: !ruby/object:Gem::Requirement
|
92
|
+
requirements:
|
93
|
+
- - "~>"
|
94
|
+
- !ruby/object:Gem::Version
|
95
|
+
version: '0.10'
|
96
|
+
type: :development
|
97
|
+
prerelease: false
|
98
|
+
version_requirements: !ruby/object:Gem::Requirement
|
99
|
+
requirements:
|
100
|
+
- - "~>"
|
101
|
+
- !ruby/object:Gem::Version
|
102
|
+
version: '0.10'
|
103
|
+
- !ruby/object:Gem::Dependency
|
104
|
+
name: rake
|
105
|
+
requirement: !ruby/object:Gem::Requirement
|
106
|
+
requirements:
|
107
|
+
- - "~>"
|
108
|
+
- !ruby/object:Gem::Version
|
109
|
+
version: '10.0'
|
110
|
+
type: :development
|
111
|
+
prerelease: false
|
112
|
+
version_requirements: !ruby/object:Gem::Requirement
|
113
|
+
requirements:
|
114
|
+
- - "~>"
|
115
|
+
- !ruby/object:Gem::Version
|
116
|
+
version: '10.0'
|
117
|
+
- !ruby/object:Gem::Dependency
|
118
|
+
name: yard
|
119
|
+
requirement: !ruby/object:Gem::Requirement
|
120
|
+
requirements:
|
121
|
+
- - "~>"
|
122
|
+
- !ruby/object:Gem::Version
|
123
|
+
version: '0.8'
|
124
|
+
type: :development
|
125
|
+
prerelease: false
|
126
|
+
version_requirements: !ruby/object:Gem::Requirement
|
127
|
+
requirements:
|
128
|
+
- - "~>"
|
129
|
+
- !ruby/object:Gem::Version
|
130
|
+
version: '0.8'
|
131
|
+
description: A simple plugin to check esc
|
132
|
+
email: "<noemail@oneuni.net>"
|
133
|
+
executables:
|
134
|
+
- sensu-check-esc-api-alerts.rb
|
135
|
+
- sensu-check-esc-critical-errors.rb
|
136
|
+
- sensu-check-esc-general-errors.rb
|
137
|
+
- sensu-check-esc-stuck-cron.rb
|
138
|
+
- sensu-check-esc-system-errors.rb
|
139
|
+
extensions: []
|
140
|
+
extra_rdoc_files: []
|
141
|
+
files:
|
142
|
+
- CHANGELOG.md
|
143
|
+
- LICENSE
|
144
|
+
- README.md
|
145
|
+
- bin/sensu-check-esc-api-alerts.rb
|
146
|
+
- bin/sensu-check-esc-critical-errors.rb
|
147
|
+
- bin/sensu-check-esc-general-errors.rb
|
148
|
+
- bin/sensu-check-esc-stuck-cron.rb
|
149
|
+
- bin/sensu-check-esc-system-errors.rb
|
150
|
+
- lib/sensu-plugins-esc.rb
|
151
|
+
- lib/sensu-plugins-esc/version.rb
|
152
|
+
homepage: https://oneuni.net
|
153
|
+
licenses:
|
154
|
+
- NONSTANDARD
|
155
|
+
metadata: {}
|
156
|
+
post_install_message: You can use the embedded Ruby by setting EMBEDDED_RUBY=true
|
157
|
+
in /etc/default/sensu
|
158
|
+
rdoc_options: []
|
159
|
+
require_paths:
|
160
|
+
- lib
|
161
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
162
|
+
requirements:
|
163
|
+
- - ">="
|
164
|
+
- !ruby/object:Gem::Version
|
165
|
+
version: 1.9.3
|
166
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
167
|
+
requirements:
|
168
|
+
- - ">="
|
169
|
+
- !ruby/object:Gem::Version
|
170
|
+
version: '0'
|
171
|
+
requirements: []
|
172
|
+
rubyforge_project:
|
173
|
+
rubygems_version: 2.5.1
|
174
|
+
signing_key:
|
175
|
+
specification_version: 4
|
176
|
+
summary: A simple plugin to check eec status
|
177
|
+
test_files: []
|