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 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,9 @@
1
+ module SensuPluginsEsc
2
+ module Version
3
+ MAJOR = 1
4
+ MINOR = 0
5
+ PATCH = 6
6
+
7
+ VER_STRING = [MAJOR, MINOR, PATCH].compact.join('.')
8
+ end
9
+ 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: []