check_from_file 0.1.0 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: f293f57edf92f801a512ca185d9e89c23957d787
4
- data.tar.gz: d820c40f7aa3ea3f593de1f6e1ae2f2a2a36cce6
3
+ metadata.gz: 901a66f425cf19a6cef69a5c840af0aa9807dee4
4
+ data.tar.gz: f6bfd14981015a516b098d126808a9d7ebe7b4cd
5
5
  SHA512:
6
- metadata.gz: 05d9703942355056398063df1e8eaf23260a6840d9a2bde2f531bbdd2ec236b276e8148bf81f47ef08a5b0e2b34a1f7c7d7810344256f23abb0dcea43328fa55
7
- data.tar.gz: 1997da238f979e4c9a833472cd3b5e891bc9f2476795c8b2e2b5bbac3d3aae0db516145ffa3f321b96e87ebac3b2dc07ee8697582ef433ca2d1755b1ba3041b0
6
+ metadata.gz: ab967cd5745ccaee048213d96f55d9a76198dc70ce7eb4e7a7f214823c05eeb034a553726798b829ec52dfdc977aedad84376af00326ca4cd5e962c946b3c970
7
+ data.tar.gz: 4c3a84eb78718991b9d7414da073b24f130aa6bff3de2ecb74ff43424e2908a876d80bfac681f27e05b55d526fd4938e31b7b770efe9135df94d908c75a7f74d
@@ -5,17 +5,17 @@ module CheckFromFile
5
5
  class Check < Nagios::Plugin
6
6
  def initialize(options)
7
7
  @options = options
8
+ @warning = false
9
+ @critical = false
8
10
  end
9
11
 
10
12
  def critical?
11
- unless @return == 0
12
- @error = true
13
- return false
14
- end
13
+ @critical = true unless @return == 0
14
+ return @critical
15
15
  end
16
16
 
17
17
  def warning?
18
- false # We don't support a warning state, just critical or ok
18
+ return @warning
19
19
  end
20
20
 
21
21
  def ok?
@@ -23,19 +23,33 @@ module CheckFromFile
23
23
  end
24
24
 
25
25
  def check
26
+ [:return, :stdout, :stderr].each do |file|
27
+ @age = (Time.now - File.stat(@options[file]).mtime).to_i
28
+ case
29
+ when @age >= @options[:file_age_critical]
30
+ @stale = @critical = true
31
+ break
32
+ when @age >= @options[:file_age_warning]
33
+ @stale = @warning = true
34
+ break
35
+ end
36
+ end
37
+
26
38
  @return = File.read(@options[:return]).to_i
27
39
  @stdout = File.read(@options[:stdout])
28
40
  @stderr = File.read(@options[:stderr])
29
41
  end
30
42
 
31
43
  def message
44
+ return "One or more output files are #{@age} seconds old!" if @stale
45
+
32
46
  ret = "Command: #{@options[:command]} returned "
33
- if @error
47
+ if @critical
34
48
  ret << "#{@return}, STDOUT: #{@stdout}, STDERR: #{@stderr}"
35
49
  else
36
50
  ret << "successfully"
37
51
  end
38
- ret
52
+ return ret
39
53
  end
40
54
  end
41
55
  end
@@ -6,6 +6,8 @@ module CheckFromFile
6
6
  class CLI
7
7
  def self.parse(args)
8
8
  options = OpenStruct.new
9
+ options[:file_age_warning] = 150
10
+ options[:file_age_critical] = 300
9
11
 
10
12
  opt_parser = OptionParser.new do |opts|
11
13
  opts.banner = "Usage: #{$0} -c <command> -o <stdout> -e <stderr> -r <ret>"
@@ -26,6 +28,14 @@ module CheckFromFile
26
28
  options[:return] = ret
27
29
  end
28
30
 
31
+ opts.on('-W', '--file-age-warn SECONDS', 'WARN when file is older than SECONDS. Default: 150') do |ret|
32
+ options[:file_age_warning] = ret.to_i
33
+ end
34
+
35
+ opts.on('-C', '--file-age-crit SECONDS', 'CRIT when file is older than SECONDS. Default: 300') do |ret|
36
+ options[:file_age_critical] = ret.to_i
37
+ end
38
+
29
39
  opts.on_tail("-h", "--help", "Show this message") do
30
40
  puts opts
31
41
  exit
@@ -1,3 +1,3 @@
1
1
  module CheckFromFile
2
- VERSION = "0.1.0"
2
+ VERSION = "0.2.0"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: check_from_file
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Travis Thompson
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2015-12-22 00:00:00.000000000 Z
11
+ date: 2016-01-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler