check_from_file 0.2.0 → 0.3.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/check_from_file/check.rb +36 -12
- data/lib/check_from_file/cli.rb +10 -1
- data/lib/check_from_file/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 09dbdfbe57149fc6367bf4a9527c3414c948ffb7
|
4
|
+
data.tar.gz: 178e811e63710c613cd6f51515f1ab167f98e69b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 904cf4904dcc3f90df440ae70691b0c2d8eecf4a700f078e4bf7b4ef5bc935121e4390e9d1f29a2aa64b2265b00271768ad29672016bd26e8808c55e98f9695c
|
7
|
+
data.tar.gz: 421c7cf788e96bb5524da1f2d5863476097da35e9ebb344eff7f839da9bdea38ba6ce9f88e0d3168356c707cdb14bd7b07fc3c3b7f9962aa88a1a31587e71a35
|
@@ -1,5 +1,6 @@
|
|
1
1
|
require 'check_from_file'
|
2
2
|
require 'nagiosplugin'
|
3
|
+
require 'timeout'
|
3
4
|
|
4
5
|
module CheckFromFile
|
5
6
|
class Check < Nagios::Plugin
|
@@ -23,6 +24,41 @@ module CheckFromFile
|
|
23
24
|
end
|
24
25
|
|
25
26
|
def check
|
27
|
+
# Aquire lock before reading
|
28
|
+
if @options[:lock]
|
29
|
+
begin
|
30
|
+
File.open(@options[:lock], File::RDWR) do |lock|
|
31
|
+
Timeout::timeout(@options[:lock_timeout]) do
|
32
|
+
lock.flock(File::LOCK_EX) # Exclusive lock
|
33
|
+
end
|
34
|
+
read_files
|
35
|
+
lock.flock(File::LOCK_UN) # Unlock
|
36
|
+
end
|
37
|
+
rescue Timeout::Error
|
38
|
+
@lock_timeout = true
|
39
|
+
end
|
40
|
+
# Don't aquire lock before reading
|
41
|
+
else
|
42
|
+
read_files
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
def message
|
47
|
+
return "One or more output files are #{@age} seconds old!" if @stale
|
48
|
+
return "Timed out after #{options[:lock_timeout]} seconds while trying to "\
|
49
|
+
'get lock!' if @lock_timeout
|
50
|
+
|
51
|
+
ret = "Command: #{@options[:command]} returned "
|
52
|
+
if @critical
|
53
|
+
ret << "#{@return}, STDOUT: #{@stdout}, STDERR: #{@stderr}"
|
54
|
+
else
|
55
|
+
ret << "successfully"
|
56
|
+
end
|
57
|
+
return ret
|
58
|
+
end
|
59
|
+
|
60
|
+
private
|
61
|
+
def read_files
|
26
62
|
[:return, :stdout, :stderr].each do |file|
|
27
63
|
@age = (Time.now - File.stat(@options[file]).mtime).to_i
|
28
64
|
case
|
@@ -39,17 +75,5 @@ module CheckFromFile
|
|
39
75
|
@stdout = File.read(@options[:stdout])
|
40
76
|
@stderr = File.read(@options[:stderr])
|
41
77
|
end
|
42
|
-
|
43
|
-
def message
|
44
|
-
return "One or more output files are #{@age} seconds old!" if @stale
|
45
|
-
|
46
|
-
ret = "Command: #{@options[:command]} returned "
|
47
|
-
if @critical
|
48
|
-
ret << "#{@return}, STDOUT: #{@stdout}, STDERR: #{@stderr}"
|
49
|
-
else
|
50
|
-
ret << "successfully"
|
51
|
-
end
|
52
|
-
return ret
|
53
|
-
end
|
54
78
|
end
|
55
79
|
end
|
data/lib/check_from_file/cli.rb
CHANGED
@@ -8,9 +8,10 @@ module CheckFromFile
|
|
8
8
|
options = OpenStruct.new
|
9
9
|
options[:file_age_warning] = 150
|
10
10
|
options[:file_age_critical] = 300
|
11
|
+
options[:lock_timeout] = 30
|
11
12
|
|
12
13
|
opt_parser = OptionParser.new do |opts|
|
13
|
-
opts.banner = "Usage: #{$0} -c <command> -o <stdout> -e <stderr> -r <ret>"
|
14
|
+
opts.banner = "Usage: #{$0} -c <command> -o <stdout> -e <stderr> -r <ret> [-l <lock-file>]"
|
14
15
|
|
15
16
|
opts.on('-c', '--command COMMAND', :REQUIRED, 'Command that was run to generate this output') do |command|
|
16
17
|
options[:command] = command
|
@@ -36,6 +37,14 @@ module CheckFromFile
|
|
36
37
|
options[:file_age_critical] = ret.to_i
|
37
38
|
end
|
38
39
|
|
40
|
+
opts.on('-l', '--lock-file FILE', 'If passed, use file for exclusive lock before trying to read files') do |lock|
|
41
|
+
options[:lock] = lock
|
42
|
+
end
|
43
|
+
|
44
|
+
opts.on('-t', '--lock-timeout', 'Number of seconds to wait for lock acquisition') do |timeout|
|
45
|
+
options[:timeout] = timeout
|
46
|
+
end
|
47
|
+
|
39
48
|
opts.on_tail("-h", "--help", "Show this message") do
|
40
49
|
puts opts
|
41
50
|
exit
|
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.
|
4
|
+
version: 0.3.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: 2016-
|
11
|
+
date: 2016-02-03 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|