nagios 0.0.2 → 0.0.3

Sign up to get free protection for your applications and to get access to all the features.
data/README.md CHANGED
@@ -14,6 +14,14 @@ Subclass `Nagios::Plugin`, and define three methods:
14
14
 
15
15
  * **warning** - for any given *n*, returns whether in warning state.
16
16
 
17
+ Optional methods:
18
+
19
+ * **critical_msg** - Message to be used during a critical state.
20
+
21
+ * **warning_msg** - Message to be used during a warning state.
22
+
23
+ * **ok_msg** - Message to be used during an OK state.
24
+
17
25
  Example Plugin
18
26
  ==============
19
27
 
@@ -23,7 +31,6 @@ In this trivial example, the plugin always measures 2, which is below both the w
23
31
  require 'nagios'
24
32
 
25
33
  class FooPlugin < Nagios::Plugin
26
-
27
34
  def critical(n)
28
35
  n > 5
29
36
  end
@@ -0,0 +1,83 @@
1
+ module Nagios
2
+ class Plugin
3
+
4
+ class << self
5
+ # Syntactic sugar for creating a new instance automagically
6
+ def run!
7
+ new.run!
8
+ end
9
+ end
10
+
11
+ # Constructor
12
+ def initialize
13
+ @config = Nagios::Config.new
14
+ @status_used = nil
15
+ end
16
+
17
+ # Run the plugin
18
+ # Parse the config, take a measurement and pass to critical/warning
19
+ # If all else fails, exit with an unknown
20
+ def run!
21
+ @config.parse!
22
+ begin
23
+ @value = measure
24
+ if critical(@value)
25
+ exit_with :critical, get_msg(:critical, @value)
26
+ elsif warning(@value)
27
+ exit_with :warning, get_msg(:warning, @value)
28
+ else
29
+ exit_with :ok, get_msg(:ok, @value)
30
+ end
31
+ rescue => e
32
+ exit_unknown e
33
+ end
34
+ end
35
+
36
+ #
37
+ def threshold(level)
38
+ if level == :warning
39
+ @config[:warning] || -1
40
+ elsif level == :critical
41
+ @config[:critical] || -1
42
+ else
43
+ -1
44
+ end
45
+ end
46
+
47
+ def to_s(value)
48
+ "#{value}"
49
+ end
50
+
51
+ def status
52
+ @status_used = true
53
+ @status
54
+ end
55
+
56
+ private
57
+ def get_msg(level, value)
58
+ msg_method = "#{level}_msg".to_sym
59
+ if self.respond_to?(msg_method)
60
+ self.send(msg_method, value)
61
+ else
62
+ value
63
+ end
64
+ end
65
+
66
+ def exit_with(level, value)
67
+ @status = level.to_s.upcase
68
+ msg = to_s(value)
69
+ if @status_used
70
+ puts msg
71
+ else
72
+ puts "#{@status}: #{msg}"
73
+ end
74
+ exit Nagios.const_get("EXIT_#{@status}")
75
+ end
76
+
77
+ def exit_unknown(exc_info)
78
+ puts "UNKNOWN (Exception): #{exc_info}"
79
+ exit Nagios::EXIT_UNKNOWN
80
+ end
81
+
82
+ end
83
+ end
@@ -1,6 +1,13 @@
1
1
  module Nagios
2
2
  class Plugin
3
3
 
4
+ class << self
5
+ # Syntactic sugar for creating a new instance automagically
6
+ def run!
7
+ new.run!
8
+ end
9
+ end
10
+
4
11
  def initialize
5
12
  @config = Nagios::Config.new
6
13
  @status_used = nil
@@ -0,0 +1,82 @@
1
+ module Nagios
2
+ class Plugin
3
+
4
+ class << self
5
+ # Syntactic sugar for creating a new instance automagically
6
+ def run!
7
+ new.run!
8
+ end
9
+ end
10
+
11
+ # Constructor
12
+ def initialize
13
+ @config = Nagios::Config.new
14
+ @status_used = nil
15
+ end
16
+
17
+ # Run the plugin
18
+ # Parse the config, take a measurement and pass to critical/warning
19
+ # If all else fails, exit with an unknown
20
+ def run!
21
+ @config.parse!
22
+ begin
23
+ @value = measure
24
+ if critical(@value)
25
+ exit_with :critical, get_msg(:critical, @value)
26
+ elsif warning(@value)
27
+ exit_with :warning, get_msg(:warning, @value)
28
+ else
29
+ exit_with :ok, get_msg(:ok, @value)
30
+ end
31
+ rescue => e
32
+ exit_unknown e
33
+ end
34
+ end
35
+
36
+ def threshold(level)
37
+ if level == :warning
38
+ @config[:warning] || -1
39
+ elsif level == :critical
40
+ @config[:critical] || -1
41
+ else
42
+ -1
43
+ end
44
+ end
45
+
46
+ def to_s(value)
47
+ "#{value}"
48
+ end
49
+
50
+ def status
51
+ @status_used = true
52
+ @status
53
+ end
54
+
55
+ private
56
+ def get_msg(level, value)
57
+ msg_method = "#{level}_msg".to_sym
58
+ if self.respond_to?(msg_method)
59
+ self.send(msg_method, value)
60
+ else
61
+ value
62
+ end
63
+ end
64
+
65
+ def exit_with(level, value)
66
+ @status = level.to_s.upcase
67
+ msg = to_s(value)
68
+ if @status_used
69
+ puts msg
70
+ else
71
+ puts "#{@status}: #{msg}"
72
+ end
73
+ exit Nagios.const_get("EXIT_#{@status}")
74
+ end
75
+
76
+ def exit_unknown(exc_info)
77
+ puts "UNKNOWN (Exception): #{exc_info}"
78
+ exit Nagios::EXIT_UNKNOWN
79
+ end
80
+
81
+ end
82
+ end
@@ -1,3 +1,3 @@
1
1
  module Nagios
2
- Version = VERSION = '0.0.2'
2
+ Version = VERSION = '0.0.3'
3
3
  end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: nagios
3
3
  version: !ruby/object:Gem::Version
4
- hash: 27
4
+ hash: 25
5
5
  prerelease:
6
6
  segments:
7
7
  - 0
8
8
  - 0
9
- - 2
10
- version: 0.0.2
9
+ - 3
10
+ version: 0.0.3
11
11
  platform: ruby
12
12
  authors:
13
13
  - Jerry Chen
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2011-05-24 00:00:00 Z
18
+ date: 2011-06-01 00:00:00 Z
19
19
  dependencies: []
20
20
 
21
21
  description: " Nagios-rb is a compact framework for writing Nagios plugins.\n"
@@ -29,9 +29,11 @@ extra_rdoc_files:
29
29
  - README.md
30
30
  files:
31
31
  - README.md
32
+ - lib/nagios/#plugin.rb#
32
33
  - lib/nagios/config.rb
33
34
  - lib/nagios/exit_codes.rb
34
35
  - lib/nagios/plugin.rb
36
+ - lib/nagios/plugin.rb.x
35
37
  - lib/nagios/version.rb
36
38
  - lib/nagios.rb
37
39
  - LICENSE