auxesis-flapjack 0.4.5 → 0.4.6
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/TODO.md +10 -0
- data/flapjack.gemspec +2 -2
- data/lib/flapjack/cli/notifier.rb +5 -2
- data/lib/flapjack/notifiers/mailer/mailer.rb +11 -4
- data/lib/flapjack/result.rb +32 -30
- metadata +2 -2
data/TODO.md
CHANGED
@@ -7,12 +7,22 @@
|
|
7
7
|
* update status of checks - DONE
|
8
8
|
* relationships + cascading notifications - DONE
|
9
9
|
* simple graphs
|
10
|
+
* event/result history
|
11
|
+
* build option to specify notifier(s) directory
|
10
12
|
* documentation!
|
11
13
|
* user
|
12
14
|
* developer
|
15
|
+
* step-by-step install guide
|
16
|
+
* scaling guide
|
17
|
+
* integrating with collectd guide
|
18
|
+
* writing custom populators guide
|
19
|
+
* write puppet manifests
|
20
|
+
* write chef cookbooks
|
13
21
|
* package with pallet
|
14
22
|
* generate .deb/.rpms
|
15
23
|
* build packages for gem dependencies
|
24
|
+
* sandbox flapjack-worker
|
25
|
+
* provide config option for specifying sandbox dir
|
16
26
|
* provide common interface for loading checks into beanstalk
|
17
27
|
* write check generator
|
18
28
|
* include a collection of common functions
|
data/flapjack.gemspec
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
Gem::Specification.new do |s|
|
2
2
|
s.name = 'flapjack'
|
3
|
-
s.version = '0.4.
|
4
|
-
s.date = '2009-
|
3
|
+
s.version = '0.4.6'
|
4
|
+
s.date = '2009-07-14'
|
5
5
|
|
6
6
|
s.summary = "a scalable and distributed monitoring system"
|
7
7
|
s.description = "Flapjack is highly scalable and distributed monitoring system. It understands the Nagios plugin format, and can easily be scaled from 1 server to 1000."
|
@@ -6,6 +6,8 @@ require 'optparse'
|
|
6
6
|
require 'log4r'
|
7
7
|
require 'log4r/outputter/syslogoutputter'
|
8
8
|
require File.join(File.dirname(__FILE__), '..', 'database')
|
9
|
+
require File.join(File.dirname(__FILE__), '..', 'notifier')
|
10
|
+
require File.join(File.dirname(__FILE__), '..', 'result')
|
9
11
|
|
10
12
|
module Flapjack
|
11
13
|
class NotifierOptions
|
@@ -152,12 +154,13 @@ module Flapjack
|
|
152
154
|
raise ArgumentError, "notifiers directory doesn't exist!" unless File.exists?(notifiers_directory)
|
153
155
|
|
154
156
|
@notifiers = []
|
155
|
-
|
157
|
+
|
156
158
|
@config.notifiers.each_pair do |notifier, config|
|
157
159
|
filename = File.join(notifiers_directory, notifier.to_s, 'init')
|
158
160
|
if File.exists?(filename + '.rb')
|
159
161
|
@log.debug("Loading the #{notifier.to_s.capitalize} notifier")
|
160
162
|
require filename
|
163
|
+
config.merge!(:logger => @log, :website_uri => @config.website_uri)
|
161
164
|
@notifiers << Flapjack::Notifiers.const_get("#{notifier.to_s.capitalize}").new(config)
|
162
165
|
else
|
163
166
|
@log.warning("Flapjack::Notifiers::#{notifier.to_s.capitalize} doesn't exist!")
|
@@ -214,7 +217,7 @@ module Flapjack
|
|
214
217
|
def process_result
|
215
218
|
@log.debug("Waiting for new result...")
|
216
219
|
result_job = @results_queue.reserve # blocks until a job is reserved
|
217
|
-
result = Result.new(YAML::load(result_job.body))
|
220
|
+
result = Flapjack::Result.new(YAML::load(result_job.body))
|
218
221
|
|
219
222
|
@log.info("Processing result for check '#{result.id}'")
|
220
223
|
if result.warning? || result.critical?
|
@@ -11,6 +11,9 @@ module Flapjack
|
|
11
11
|
|
12
12
|
def initialize(opts={})
|
13
13
|
@from_address = opts[:from_address]
|
14
|
+
@website_uri = opts[:website_uri].gsub(/\/$/, '')
|
15
|
+
@log = opts[:logger]
|
16
|
+
@log ||= Log4r::Logger.new("notifier")
|
14
17
|
end
|
15
18
|
|
16
19
|
def notify(opts={})
|
@@ -27,11 +30,15 @@ module Flapjack
|
|
27
30
|
#{opts[:result].output}
|
28
31
|
|
29
32
|
You can respond to this issue at:
|
30
|
-
|
33
|
+
#{@website_uri}/issue/#{opts[:result].id}
|
31
34
|
DESC
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
+
|
36
|
+
begin
|
37
|
+
Net::SMTP.start('localhost') do |smtp|
|
38
|
+
smtp.sendmail(mail.to_s, mail.from, mail.to)
|
39
|
+
end
|
40
|
+
rescue Errno::ECONNREFUSED
|
41
|
+
@log.error("Couldn't establish connection to mail server!")
|
35
42
|
end
|
36
43
|
end
|
37
44
|
|
data/lib/flapjack/result.rb
CHANGED
@@ -9,37 +9,39 @@ require 'ostruct'
|
|
9
9
|
#
|
10
10
|
# Convenience methods are used by the Notifier to determine whether a
|
11
11
|
# notification needs to be sent out.
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
# Whether a check has a warning status.
|
20
|
-
def warning?
|
21
|
-
self.retval == 1
|
22
|
-
end
|
23
|
-
|
24
|
-
# Whether a check has a critical status.
|
25
|
-
def critical?
|
26
|
-
self.retval == 2
|
27
|
-
end
|
28
|
-
|
29
|
-
# Human readable representation of the check's return value.
|
30
|
-
def status
|
31
|
-
case self.retval
|
32
|
-
when 0 ; "ok"
|
33
|
-
when 1 ; "warning"
|
34
|
-
when 2 ; "critical"
|
12
|
+
module Flapjack
|
13
|
+
class Result < OpenStruct
|
14
|
+
|
15
|
+
# Whether a check returns an ok status.
|
16
|
+
def ok?
|
17
|
+
self.retval == 0
|
35
18
|
end
|
19
|
+
|
20
|
+
# Whether a check has a warning status.
|
21
|
+
def warning?
|
22
|
+
self.retval == 1
|
23
|
+
end
|
24
|
+
|
25
|
+
# Whether a check has a critical status.
|
26
|
+
def critical?
|
27
|
+
self.retval == 2
|
28
|
+
end
|
29
|
+
|
30
|
+
# Human readable representation of the check's return value.
|
31
|
+
def status
|
32
|
+
case self.retval
|
33
|
+
when 0 ; "ok"
|
34
|
+
when 1 ; "warning"
|
35
|
+
when 2 ; "critical"
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
# The id of a check result.
|
40
|
+
def id
|
41
|
+
# openstruct won't respond, so we have to manually define it
|
42
|
+
@table[:id]
|
43
|
+
end
|
44
|
+
|
36
45
|
end
|
37
|
-
|
38
|
-
# The id of a check result.
|
39
|
-
def id
|
40
|
-
# openstruct won't respond, so we have to manually define it
|
41
|
-
@table[:id]
|
42
|
-
end
|
43
|
-
|
44
46
|
end
|
45
47
|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: auxesis-flapjack
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.4.
|
4
|
+
version: 0.4.6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Lindsay Holmwood
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2009-
|
12
|
+
date: 2009-07-14 00:00:00 -07:00
|
13
13
|
default_executable:
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|