servicemonitor 0.0.18 → 0.0.19

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.
data/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  #ServiceMonitor
2
2
 
3
- Monitor various parts of a system
3
+ The fastest way to reliably monitor your system
4
4
 
5
5
  ##Principles
6
6
  #This is aimed at people with computer knowledge
data/bin/servicemonitor CHANGED
@@ -19,11 +19,9 @@ require "helper_functions"
19
19
  #Don't buffer stdout
20
20
  $stdout.sync = true
21
21
 
22
- if ARGV.length == 1 then
23
- dslName = ARGV[0]
24
- else
25
- abort( "Usage: monitor <path to dsl>" )
26
- end
22
+ abort( "Usage: servicemonitor <path to dsl>" ) if ARGV.length != 1
23
+
24
+ dslName = ARGV[0]
27
25
 
28
26
  #Need to remove file name extension
29
27
  ENV["APP_NAME"] = File.basename( dslName ) if ENV["APP_NAME"].nil?
@@ -2,7 +2,7 @@ require "MonitorType/Threshold"
2
2
 
3
3
  #A directory class for checking how many files are in a directory
4
4
  class MonitorType_Dir<MonitorType_Threshold
5
-
5
+
6
6
  #Extract parameters
7
7
  #
8
8
  # @param [String] path Path to directory to check
@@ -13,16 +13,16 @@ class MonitorType_Dir<MonitorType_Threshold
13
13
  raise MonitorTypeParameterMissingError.new(string)
14
14
  end
15
15
  @path = @params[:path]
16
-
16
+
17
17
  @context_sentence = "Checking number of files in, #{@path}"
18
18
  end
19
19
 
20
20
 
21
21
  def setup
22
22
  inputDir = Dir.new( @path )
23
- @path = inputDir.path
23
+ @path = inputDir.path
24
24
  @params[:dir] = inputDir
25
-
25
+
26
26
  rescue Errno::ENOENT => e
27
27
  string = "***** Directory does not exist, #{@path}.\n"
28
28
  string = "#{string}***** Create the directory, #{@path}, and try again.\n"
@@ -34,7 +34,7 @@ class MonitorType_Dir<MonitorType_Threshold
34
34
  string = "#{string}***** eg, rm #{@path} && mkdir #{@path}"
35
35
  raise MonitorTypeExceptionHandled.new(string)
36
36
  end
37
-
37
+
38
38
  def getValue
39
39
  return Dir.glob( "#{@path}/*" ).length
40
40
  end
@@ -43,4 +43,3 @@ end
43
43
  def dir( params )
44
44
  $a.add( MonitorType_Dir.new( params ) )
45
45
  end
46
-
@@ -0,0 +1,50 @@
1
+ require "MonitorType/Threshold"
2
+ require "sys/filesystem"
3
+ include Sys
4
+
5
+ class MonitorType_Drive<MonitorType_Threshold
6
+
7
+ def extractParams
8
+ if @params[:path].nil? then
9
+ string = "*** Drive parameter missing, drive\n"
10
+ string = "#{string}*** :drive => <name of the drive to be monitored>"
11
+ raise MonitorTypeParameterMissingError.new(string)
12
+ end
13
+ @path = @params[:path]
14
+
15
+ log "#{@process_name}", "result: #{(@process_name =~ /^(.*\[{1}.+\]{1}.*)$|^(\w+)$/) == 0}"
16
+
17
+ if @params[:min].nil? then
18
+ string = "*** Min parameter missing, min\n"
19
+ string = "#{string}*** :min => <the minimum amount of free space on the drive to be monitored>"
20
+ raise MonitorTypeParameterMissingError.new(string)
21
+ end
22
+
23
+ log "*** Max value will be ignored, setting to nil" unless @params[:max].nil?
24
+ @max = nil
25
+
26
+ @context_sentence = "Checking that available drive space is greater than min, #{@process_name}"
27
+ end
28
+
29
+ def setup
30
+ begin
31
+ #Check that the path exists
32
+ drive = Filesystem.stat(@path)
33
+
34
+ rescue=>e
35
+ string = "*** Unable to mount the specifed path\n"
36
+ string = "#{string}*** path: #{@path}\n"
37
+ string = "#{string}*** Please fix the error and run again\n"
38
+ raise MonitorTypeExceptionHandled.new("Unable to mount path: #{@path}")
39
+ end
40
+ end
41
+
42
+ def getValue
43
+ return ((Filesystem.stat(@path).blocks_available.to_f / Filesystem.stat(@path).blocks.to_f) * 100).round(2)
44
+ end
45
+
46
+ end
47
+
48
+ def process(params)
49
+ $a.add(MonitorType_Drive.new(params))
50
+ end
@@ -8,7 +8,7 @@ require "MonitorType/Threshold"
8
8
  # => check that the number is not greater than 2
9
9
 
10
10
  class MonitorType_FluidDb<MonitorType_Threshold
11
-
11
+
12
12
  #Extract parameters
13
13
  #
14
14
  # @param [String] uri Connection string to db
@@ -27,18 +27,18 @@ class MonitorType_FluidDb<MonitorType_Threshold
27
27
  string = "#{string}*** Please fix the uri and run again"
28
28
  raise MonitorTypeParameterMissingError.new(string)
29
29
  end
30
-
30
+
31
31
  if @params[:sql].nil? then
32
32
  string = "*** FluidDb parameter missing, sql"
33
33
  string = "#{string}*** :sql => <sql statement, producing a single column, single row which yeidls a number>"
34
34
  raise MonitorTypeParameterMissingError.new(string)
35
35
  end
36
36
  @sql = @params[:sql]
37
-
37
+
38
38
  @context_sentence = "Checking result of sql query, #{@sql}"
39
-
39
+
40
40
  end
41
-
41
+
42
42
  #Create the connection to the db, and get the value
43
43
  #This ensures that all params are correct.
44
44
  def setup
@@ -49,13 +49,13 @@ class MonitorType_FluidDb<MonitorType_Threshold
49
49
  string = "*** FluidDb encountered an error while connecting to the db\n"
50
50
  string = "#{string}*** Error: #{e.message}\n"
51
51
  string = "#{string}*** uri: #{@uri}\n"
52
- string = "#{string}*** Please 3fix the error and run again\n"
52
+ string = "#{string}*** Please fix the error and run again\n"
53
53
  raise MonitorTypeExceptionHandled.new(string)
54
54
  end
55
55
 
56
56
  @params[:fluidDb] = @fluidDb
57
57
  end
58
-
58
+
59
59
  def getValue
60
60
  begin
61
61
  return @fluidDb.queryForValue( @sql, [] )
@@ -1,48 +1,54 @@
1
1
  require "MonitorType/Threshold"
2
+ require "helper_functions"
3
+
4
+ InvalidProcessNameError = Class.new(StandardError)
2
5
 
3
6
  #A class for checking if a Process is running in Unix based systems
4
7
  class MonitorType_Process<MonitorType_Threshold
5
8
 
9
+ #Extract parameters
10
+ #
11
+ # @param [String] :process_name THe name of the process to monitor
12
+ def extractParams
13
+ if @params[:process_name].nil? then
14
+ string = "*** Process Name parameter missing, process_name\n"
15
+ string = "#{string}*** :process_name => <name of the process to be monitored>"
16
+ raise MonitorTypeParameterMissingError.new(string)
17
+ end
18
+ @process_name = @params[:process_name]
19
+
20
+ log "#{@process_name}", "result: #{(@process_name =~ /^(.*\[{1}.+\]{1}.*)$|^(\w+)$/) == 0}"
21
+
22
+ unless (@process_name =~ /^(.*\[{1}.+\]{1}.*)$|^(\w+)$/) == 0 then
23
+ string = "*** Process Name parameter doest not match the required pattern, #{@process_name}\n"
24
+ string = "#{string}*** :process_name => <plain string, or a string with one or more characters enclosed in square brackets, i.e. 'foo', '[f]oo' or '[foo]'>"
25
+ raise InvalidProcessNameError.new(string)
26
+ end
27
+
28
+ log "*** Min value will be ignored, setting to 1" unless (params[:min].nil? || params[:min] == 0)
29
+ @min = 1
30
+
31
+ log "*** Max value will be ignored, setting to nil" unless params[:max].nil?
32
+ @max = nil
33
+
34
+ @context_sentence = "Checking that process is running, #{@process_name}"
35
+ end
36
+
37
+ def setup
38
+ self.sanitise
39
+ rescue MonitorTypeExceptionHandled => e
40
+ puts e.message
41
+ abort
42
+ end
43
+
6
44
  def sanitise
7
45
  #Ensure that the process name contains a single character surrounded by square brackets
8
46
  @process_name = @process_name.insert(0,'[').insert(2,']') unless @process_name =~ /^.*\[.+\].*/
9
47
  end
10
48
 
11
- def initialize(params)
12
- super(params)
13
-
14
- if params[:process_name].nil? then
15
- puts "*** Process Name parameter missing, process_name"
16
- puts "*** :process_name => <name of the process to be monitored>"
17
- abort
18
- end
19
- @process_name = params[:process_name]
20
-
21
- puts "#{@process_name}", "result: #{(@process_name =~ /^(.*\[{1}.+\]{1}.*)$|^(\w+)$/) == 0}"
22
-
23
- unless (@process_name =~ /^(.*\[{1}.+\]{1}.*)$|^(\w+)$/) == 0 then
24
- puts "*** Process Name parameter doest not match the required pattern, #{@process_name}"
25
- puts "*** :process_name => <plain string, or a string with one or more characters enclosed in square brackets, i.e. 'foo', '[f]oo' or '[foo]'>"
26
- abort
27
- end
28
-
29
- puts "*** Min value will be ignored, setting to 1" unless (params[:min].nil? || params[:min] == 0)
30
- @min = 1
31
-
32
- puts "*** Max value will be ignored, setting to nil" unless params[:max].nil?
33
- @max = nil
34
-
35
- @context_sentence = "Checking that process is running, #{@process_name}"
36
-
37
- self.sanitise
38
- rescue MonitorTypeExceptionHandled => e
39
- puts e.message
40
- abort
41
- end
42
-
43
- def getValue
44
- return `ps aux | grep #{@process_name}`.length
45
- end
49
+ def getValue
50
+ return `ps aux | grep #{@process_name}`.length
51
+ end
46
52
 
47
53
  end
48
54
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: servicemonitor
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.18
4
+ version: 0.0.19
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,8 +9,41 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-12-30 00:00:00.000000000 Z
13
- dependencies: []
12
+ date: 2014-07-31 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: parse-cron
16
+ requirement: &70139175033600 !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: '0'
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: *70139175033600
25
+ - !ruby/object:Gem::Dependency
26
+ name: beanstalk-client
27
+ requirement: &70139175033160 !ruby/object:Gem::Requirement
28
+ none: false
29
+ requirements:
30
+ - - ! '>='
31
+ - !ruby/object:Gem::Version
32
+ version: '0'
33
+ type: :runtime
34
+ prerelease: false
35
+ version_requirements: *70139175033160
36
+ - !ruby/object:Gem::Dependency
37
+ name: fluiddb
38
+ requirement: &70139175032720 !ruby/object:Gem::Requirement
39
+ none: false
40
+ requirements:
41
+ - - ! '>='
42
+ - !ruby/object:Gem::Version
43
+ version: '0'
44
+ type: :runtime
45
+ prerelease: false
46
+ version_requirements: *70139175032720
14
47
  description: The fastest way to reliably monitor your system.
15
48
  email: guy@guyirvine.com
16
49
  executables:
@@ -24,6 +57,7 @@ files:
24
57
  - lib/MonitorManager.rb
25
58
  - lib/MonitorType/Beanstalk.rb
26
59
  - lib/MonitorType/Dir.rb
60
+ - lib/MonitorType/Drive.rb
27
61
  - lib/MonitorType/FluidDb.rb
28
62
  - lib/MonitorType/Process.rb
29
63
  - lib/MonitorType/Threshold.rb