nagios_reporter 1.0.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (3) hide show
  1. checksums.yaml +7 -0
  2. data/lib/nagios_reporter.rb +87 -0
  3. metadata +44 -0
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 1eeb1a0f003b94a8bc9f3bde02f958c78aa3c7d8
4
+ data.tar.gz: 1a1bda22d406be35356d545f9d835e16c9811600
5
+ SHA512:
6
+ metadata.gz: dae9863bb5ef09ef5b9f05786e02645c55aea9cac9916e98052cca3c460c6dbae78ca71fe3171824226ff25108450023c3f0f249f6b9bee8a702eff4fda5e06b
7
+ data.tar.gz: cc8f005b5fe7f7eb97adae8439508f548f07f432259abcd420243c0231ef1a5a1cff884ea108d88c5d3405c4d390f469e5a555245d120ccbce0bf6cf1af21ae1
@@ -0,0 +1,87 @@
1
+ class Reporter
2
+ attr_reader :state
3
+
4
+ def initialize
5
+ # 2d array of reports implemented with a hash
6
+ @reports = Hash.new
7
+ @type = :all
8
+ @silent_exit = false
9
+ @state = -1
10
+ end
11
+ def set_type(type=:all)
12
+ if type == :all or type == :worst_only
13
+ @type = type
14
+ else
15
+ unknown!("Invalid reporter type, #{type}, use :all or :worst_only")
16
+ end
17
+ end
18
+ def silence
19
+ @silent_exit = true
20
+ end
21
+ def silence!
22
+ @silent_exit = true
23
+ final_report
24
+ end
25
+ def ok(message)
26
+ report(0,message)
27
+ end
28
+ def ok!(message)
29
+ report!(0,message)
30
+ end
31
+ def warning(message)
32
+ report(1,message)
33
+ end
34
+ def warning!(message)
35
+ report!(1,message)
36
+ end
37
+ def critical(message)
38
+ report(2,message)
39
+ end
40
+ def critical!(message)
41
+ report!(2,message)
42
+ end
43
+ def unknown(message)
44
+ report(3,message)
45
+ end
46
+ def unknown!(message)
47
+ report!(3,message)
48
+ end
49
+ def state_header(state)
50
+ message_header = {0 => "OK: ", 1 => "WARNING: ", 2 => "CRITICAL: ", 3 => "UNKNOWN: "}
51
+ message_header[state]
52
+ end
53
+ def final_report
54
+ message = ""
55
+ if @type == :all
56
+ state_spacer = ""
57
+ @reports.keys.sort.reverse.each do |state|
58
+ message << state_spacer
59
+ message << state_header(state)
60
+ message << @reports[state].join(", ")
61
+ state_spacer = ". "
62
+ end
63
+ else
64
+ message << state_header(state)
65
+ message << @reports[@state].join(", ")
66
+ end
67
+
68
+ @state = 3 if @state == -1
69
+ message = "Check gathered no information" if message == ""
70
+
71
+ exit @state if @silent_exit
72
+ report!(@state,message,true)
73
+ end
74
+ def report!(state,message,no_state_header=false)
75
+ # report with passed state and message immediately then exit
76
+ print state_header(state) unless no_state_header
77
+ puts message
78
+ exit state
79
+ end
80
+ def report(state,message)
81
+ # update global state if new state is higher
82
+ @state = @state > state ? @state : state
83
+ # add to list of reports of given state
84
+ @reports[state] ||= []
85
+ @reports[state].push(message)
86
+ end
87
+ end
metadata ADDED
@@ -0,0 +1,44 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: nagios_reporter
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.2
5
+ platform: ruby
6
+ authors:
7
+ - Dave Watson
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2018-04-23 00:00:00.000000000 Z
12
+ dependencies: []
13
+ description: A helper gem for nagios style reporting
14
+ email: dave@brightbox.co.uk
15
+ executables: []
16
+ extensions: []
17
+ extra_rdoc_files: []
18
+ files:
19
+ - lib/nagios_reporter.rb
20
+ homepage: http://rubygems.org/gems/nagios_reporter
21
+ licenses:
22
+ - GPLV3
23
+ metadata: {}
24
+ post_install_message:
25
+ rdoc_options: []
26
+ require_paths:
27
+ - lib
28
+ required_ruby_version: !ruby/object:Gem::Requirement
29
+ requirements:
30
+ - - ">="
31
+ - !ruby/object:Gem::Version
32
+ version: '0'
33
+ required_rubygems_version: !ruby/object:Gem::Requirement
34
+ requirements:
35
+ - - ">="
36
+ - !ruby/object:Gem::Version
37
+ version: '0'
38
+ requirements: []
39
+ rubyforge_project:
40
+ rubygems_version: 2.4.5.5
41
+ signing_key:
42
+ specification_version: 4
43
+ summary: nagios_reporter
44
+ test_files: []