auxesis-flapjack 0.4.2 → 0.4.5
Sign up to get free protection for your applications and to get access to all the features.
- data/README.md +18 -2
- data/TODO.md +3 -0
- data/bin/flapjack-worker +3 -1
- data/bin/install-flapjack-systemwide +6 -2
- data/doc/CONFIGURING.md +38 -0
- data/doc/DEVELOPING.md +35 -0
- data/doc/INSTALL.md +64 -0
- data/etc/flapjack/flapjack-notifier.yaml.example +8 -0
- data/etc/flapjack/{recipients.yaml → recipients.yaml.example} +0 -0
- data/flapjack.gemspec +2 -2
- data/lib/flapjack/checks/http_content +15 -0
- data/lib/flapjack/cli/notifier.rb +2 -0
- data/lib/flapjack/cli/worker.rb +6 -1
- metadata +7 -2
data/README.md
CHANGED
@@ -22,7 +22,11 @@ Add GPG keys for the repos:
|
|
22
22
|
|
23
23
|
Update your package list:
|
24
24
|
|
25
|
-
sudo
|
25
|
+
sudo apt-get update
|
26
|
+
|
27
|
+
Install Ruby dependencies:
|
28
|
+
|
29
|
+
sudo apt-get install build-essential libsqlite3-dev
|
26
30
|
|
27
31
|
Install rubygems + beanstalkd:
|
28
32
|
|
@@ -70,12 +74,24 @@ Make sure beanstalkd is running.
|
|
70
74
|
You'll want to set up `/etc/flapjack/recipients.yaml` so notifications can be sent via
|
71
75
|
`flapjack-notifier`:
|
72
76
|
|
77
|
+
---
|
73
78
|
- :name: Jane Doe
|
74
79
|
:email: "jane@doe.com"
|
75
80
|
:phone: "+61 444 222 111"
|
76
81
|
:pager: "61444222111"
|
77
82
|
:jid: "jane@doe.com"
|
78
83
|
|
84
|
+
You also need to set up `/etc/flapjack/flapjack-notifier.yaml`:
|
85
|
+
|
86
|
+
---
|
87
|
+
:notifiers:
|
88
|
+
:mailer:
|
89
|
+
:from_address: notifications@my-domain.com
|
90
|
+
:xmpp:
|
91
|
+
:jid: notifications@my-domain.com
|
92
|
+
:password: foo
|
93
|
+
:database_uri: "sqlite3:///var/lib/flapjack/flapjack.db"
|
94
|
+
|
79
95
|
Start up a cluster of workers:
|
80
96
|
|
81
97
|
flapjack-worker-manager start
|
@@ -89,7 +105,7 @@ Each of the `flapjack-worker`s will output to syslog (check in /var/log/messages
|
|
89
105
|
|
90
106
|
Start up the notifier:
|
91
107
|
|
92
|
-
flapjack-notifier --recipients /etc/flapjack/recipients.yaml
|
108
|
+
flapjack-notifier-manager start --recipients /etc/flapjack/recipients.yaml
|
93
109
|
|
94
110
|
Currently there are email and XMPP notifiers.
|
95
111
|
|
data/TODO.md
CHANGED
data/bin/flapjack-worker
CHANGED
@@ -17,7 +17,9 @@ trap("INT") do
|
|
17
17
|
end
|
18
18
|
|
19
19
|
@options = Flapjack::WorkerOptions.parse(ARGV)
|
20
|
-
@worker = Flapjack::Worker.new(:host => @options.host,
|
20
|
+
@worker = Flapjack::Worker.new(:host => @options.host,
|
21
|
+
:port => @options.port,
|
22
|
+
:checks_directory => @options.check_directory)
|
21
23
|
|
22
24
|
begin
|
23
25
|
@worker.process_loop
|
@@ -39,7 +39,7 @@ end
|
|
39
39
|
system("mkdir -p /var/run/flapjack")
|
40
40
|
system("chmod a+rw /var/run/flapjack")
|
41
41
|
|
42
|
-
etc_path=`gem contents flapjack |grep etc`.split.first.gsub(/etc\/.+/, 'etc').strip
|
42
|
+
etc_path=`gem contents auxesis-flapjack |grep etc`.split.first.gsub(/etc\/.+/, 'etc').strip
|
43
43
|
system("cp -aiv #{etc_path}/* /etc")
|
44
44
|
|
45
45
|
# set sequence number to 50 so beanstalkd has a chance to boot
|
@@ -49,6 +49,10 @@ system("update-rc.d flapjack-notifier defaults 50")
|
|
49
49
|
puts
|
50
50
|
puts "Setup complete!"
|
51
51
|
puts
|
52
|
-
puts "You
|
52
|
+
puts "You will want to customise:"
|
53
|
+
puts " * /etc/flapjack/recipients.yaml"
|
54
|
+
puts " * /etc/flapjack/flapjack-notifier.yaml"
|
55
|
+
puts
|
56
|
+
puts ".examples of these files exist in /etc/flapjack/'
|
53
57
|
|
54
58
|
|
data/doc/CONFIGURING.md
ADDED
@@ -0,0 +1,38 @@
|
|
1
|
+
### Configuring ###
|
2
|
+
|
3
|
+
You can configure who receives notifications from `flapjack-notifier`
|
4
|
+
in `/etc/flapjack/recipients.yaml`:
|
5
|
+
|
6
|
+
---
|
7
|
+
- :name: Jane Doe
|
8
|
+
:email: "jane@doe.com"
|
9
|
+
:phone: "+61 444 222 111"
|
10
|
+
:pager: "61444222111"
|
11
|
+
:jid: "jane@doe.com"
|
12
|
+
|
13
|
+
Then you can configure how people are notified in `/etc/flapjack/flapjack-notifier.yaml`:
|
14
|
+
|
15
|
+
---
|
16
|
+
:notifiers:
|
17
|
+
:mailer:
|
18
|
+
:from_address: notifications@my-domain.com
|
19
|
+
:xmpp:
|
20
|
+
:jid: notifications@my-domain.com
|
21
|
+
:password: foo
|
22
|
+
:database_uri: "sqlite3:///var/lib/flapjack/flapjack.db"
|
23
|
+
|
24
|
+
Currently there are email and XMPP notifiers.
|
25
|
+
|
26
|
+
The `database_uri` setting must point to the database `flapjack-admin` backs
|
27
|
+
onto. This can be SQLite3, MySQL, or PostgreSQL:
|
28
|
+
|
29
|
+
:database_uri: "mysql://user:password@localhost/flapjack_production"
|
30
|
+
# or
|
31
|
+
:database_uri: "postgres://me:spoons@db.mydomain.com/flapjack_production"
|
32
|
+
|
33
|
+
Now you need to restart the notifier:
|
34
|
+
|
35
|
+
flapjack-notifier-manager restart --recipients /etc/flapjack/recipients.yaml \
|
36
|
+
--config /etc/flapjack/flapjack-notifier.yaml
|
37
|
+
|
38
|
+
|
data/doc/DEVELOPING.md
ADDED
@@ -0,0 +1,35 @@
|
|
1
|
+
Developing
|
2
|
+
----------
|
3
|
+
|
4
|
+
You can write your own notifiers and place them in `lib/flapjack/notifiers/`.
|
5
|
+
|
6
|
+
Your notifier just needs to implement the `notify` method, and take in a hash:
|
7
|
+
|
8
|
+
class Sms
|
9
|
+
def initialize(opts={})
|
10
|
+
# you may want to set from address here
|
11
|
+
@from = (opts[:from] || "0431 112 233")
|
12
|
+
end
|
13
|
+
|
14
|
+
def notify(opts={})
|
15
|
+
who = opts[:who]
|
16
|
+
result = opts[:result]
|
17
|
+
# sms to your hearts content
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
|
22
|
+
Testing
|
23
|
+
-------
|
24
|
+
|
25
|
+
Flapjack is, and will continue to be, well tested. Monitoring is like continuous
|
26
|
+
integration for production apps, so why shouldn't your monitoring system have tests?
|
27
|
+
|
28
|
+
Testing is done with rspec, and tests live in `spec/`.
|
29
|
+
|
30
|
+
To run the tests, check out the code and run:
|
31
|
+
|
32
|
+
$ rake spec
|
33
|
+
|
34
|
+
|
35
|
+
|
data/doc/INSTALL.md
ADDED
@@ -0,0 +1,64 @@
|
|
1
|
+
Dependencies
|
2
|
+
------------
|
3
|
+
|
4
|
+
Before installing Flapjack you will need to setup some dependencies.
|
5
|
+
|
6
|
+
### Setup dependencies (Ubuntu Hardy) ###
|
7
|
+
|
8
|
+
Add the following lines to `/etc/apt/sources.list`
|
9
|
+
|
10
|
+
deb http://ppa.launchpad.net/ubuntu-ruby-backports/ubuntu hardy main
|
11
|
+
deb http://ppa.launchpad.net/auxesis/ppa/ubuntu hardy main
|
12
|
+
|
13
|
+
Add GPG keys for the repos:
|
14
|
+
|
15
|
+
sudo apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 288BA53BCB7DA731
|
16
|
+
|
17
|
+
Update your package list:
|
18
|
+
|
19
|
+
sudo apt-get update
|
20
|
+
|
21
|
+
Install Ruby dependencies:
|
22
|
+
|
23
|
+
sudo apt-get install build-essential libsqlite3-dev
|
24
|
+
|
25
|
+
Install rubygems + beanstalkd:
|
26
|
+
|
27
|
+
sudo apt-get install rubygems beanstalkd
|
28
|
+
|
29
|
+
Set `ENABLED=1` in `/etc/default/beanstalkd`.
|
30
|
+
|
31
|
+
Start beanstalkd:
|
32
|
+
|
33
|
+
sudo /etc/init.d/beanstalkd start
|
34
|
+
|
35
|
+
|
36
|
+
### Setup dependencies (everyone else) ###
|
37
|
+
|
38
|
+
Install the following software through your package manager or from source:
|
39
|
+
|
40
|
+
- beanstalkd (from [http://xph.us/software/beanstalkd/](http://xph.us/software/beanstalkd/))
|
41
|
+
- libevent (from [http://monkey.org/~provos/libevent/](http://monkey.org/~provos/libevent/))
|
42
|
+
- latest RubyGems (from [http://rubyforge.org/projects/rubygems/](http://rubyforge.org/projects/rubygems/))
|
43
|
+
|
44
|
+
|
45
|
+
## Installation ##
|
46
|
+
|
47
|
+
Add GitHub's RubyGems server to your Gem sources:
|
48
|
+
|
49
|
+
sudo gem sources -a http://gems.github.com
|
50
|
+
|
51
|
+
Install the Flapjack gem:
|
52
|
+
|
53
|
+
sudo gem install auxesis-flapjack
|
54
|
+
|
55
|
+
Then run the magic configuration script to set up init scripts:
|
56
|
+
|
57
|
+
sudo install-flapjack-systemwide
|
58
|
+
|
59
|
+
The script will prompt you if it wants to do anything destructive.
|
60
|
+
|
61
|
+
## Packages ##
|
62
|
+
|
63
|
+
We want to provide native packages for Flapjack (`.deb`, `.rpm`, `.ebuild`). If
|
64
|
+
you'd like to contribute please let us know!
|
File without changes
|
data/flapjack.gemspec
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
Gem::Specification.new do |s|
|
2
2
|
s.name = 'flapjack'
|
3
|
-
s.version = '0.4.
|
3
|
+
s.version = '0.4.5'
|
4
4
|
s.date = '2009-06-30'
|
5
5
|
|
6
6
|
s.summary = "a scalable and distributed monitoring system"
|
@@ -25,7 +25,7 @@ Gem::Specification.new do |s|
|
|
25
25
|
|
26
26
|
s.bindir = "bin"
|
27
27
|
s.executables = ["flapjack-notifier", "flapjack-notifier-manager", "flapjack-stats", "flapjack-worker", "flapjack-worker-manager", "install-flapjack-systemwide"]
|
28
|
-
s.files = ["LICENCE", "README.md", "Rakefile", "TODO.md", "bin/flapjack-notifier", "bin/flapjack-notifier-manager", "bin/flapjack-stats", "bin/flapjack-worker", "bin/flapjack-worker-manager", "bin/install-flapjack-systemwide", "etc/default/flapjack-notifier", "etc/default/flapjack-workers", "etc/flapjack/recipients.yaml", "etc/init.d/flapjack-notifier", "etc/init.d/flapjack-workers", "flapjack.gemspec", "lib/flapjack/cli/notifier.rb", "lib/flapjack/cli/notifier_manager.rb", "lib/flapjack/cli/worker.rb", "lib/flapjack/cli/worker_manager.rb", "lib/flapjack/database.rb", "lib/flapjack/models/check.rb", "lib/flapjack/models/check_template.rb", "lib/flapjack/models/node.rb", "lib/flapjack/models/related_check.rb", "lib/flapjack/notifier.rb", "lib/flapjack/notifiers/mailer/init.rb", "lib/flapjack/notifiers/mailer/mailer.rb", "lib/flapjack/notifiers/xmpp/init.rb", "lib/flapjack/notifiers/xmpp/xmpp.rb", "lib/flapjack/patches.rb", "lib/flapjack/result.rb"]
|
28
|
+
s.files = ["LICENCE", "README.md", "Rakefile", "TODO.md", "bin/flapjack-notifier", "bin/flapjack-notifier-manager", "bin/flapjack-stats", "bin/flapjack-worker", "bin/flapjack-worker-manager", "bin/install-flapjack-systemwide", "doc/CONFIGURING.md", "doc/DEVELOPING.md", "doc/INSTALL.md", "etc/default/flapjack-notifier", "etc/default/flapjack-workers", "etc/flapjack/flapjack-notifier.yaml.example", "etc/flapjack/recipients.yaml.example", "etc/init.d/flapjack-notifier", "etc/init.d/flapjack-workers", "flapjack.gemspec", "lib/flapjack/checks/http_content", "lib/flapjack/cli/notifier.rb", "lib/flapjack/cli/notifier_manager.rb", "lib/flapjack/cli/worker.rb", "lib/flapjack/cli/worker_manager.rb", "lib/flapjack/database.rb", "lib/flapjack/models/check.rb", "lib/flapjack/models/check_template.rb", "lib/flapjack/models/node.rb", "lib/flapjack/models/related_check.rb", "lib/flapjack/notifier.rb", "lib/flapjack/notifiers/mailer/init.rb", "lib/flapjack/notifiers/mailer/mailer.rb", "lib/flapjack/notifiers/xmpp/init.rb", "lib/flapjack/notifiers/xmpp/xmpp.rb", "lib/flapjack/patches.rb", "lib/flapjack/result.rb"]
|
29
29
|
end
|
30
30
|
|
31
31
|
|
@@ -192,6 +192,7 @@ module Flapjack
|
|
192
192
|
end
|
193
193
|
end
|
194
194
|
|
195
|
+
# FIXME: we're doing a lookup twice - optimise out
|
195
196
|
def save_result(result)
|
196
197
|
if check = Check.get(result.id)
|
197
198
|
check.status = result.retval
|
@@ -201,6 +202,7 @@ module Flapjack
|
|
201
202
|
end
|
202
203
|
end
|
203
204
|
|
205
|
+
# FIXME: we're doing a lookup twice - optimise out
|
204
206
|
def any_parents_warning_or_critical?(result)
|
205
207
|
if check = Check.get(result.id)
|
206
208
|
check.worst_parent_status > 0 ? true : false
|
data/lib/flapjack/cli/worker.rb
CHANGED
@@ -21,6 +21,9 @@ module Flapjack
|
|
21
21
|
opts.on('-p', '--port PORT', 'beanstalkd port') do |port|
|
22
22
|
options.port = port.to_i
|
23
23
|
end
|
24
|
+
opts.on('-c', '--checks-directory DIR', 'sandboxed check directory') do |dir|
|
25
|
+
options.checks_directory = dir.to_s
|
26
|
+
end
|
24
27
|
opts.on_tail("-h", "--help", "Show this message") do
|
25
28
|
puts opts
|
26
29
|
exit
|
@@ -40,6 +43,7 @@ module Flapjack
|
|
40
43
|
# default the port
|
41
44
|
options.host ||= 'localhost'
|
42
45
|
options.port ||= 11300
|
46
|
+
options.checks_directory ||= File.join(File.dirname(__FILE__), '..', 'checks')
|
43
47
|
|
44
48
|
options
|
45
49
|
end
|
@@ -52,6 +56,7 @@ module Flapjack
|
|
52
56
|
def initialize(opts={})
|
53
57
|
@jobs = Beanstalk::Pool.new(["#{opts[:host]}:#{opts[:port]}"], 'jobs')
|
54
58
|
@results = Beanstalk::Pool.new(["#{opts[:host]}:#{opts[:port]}"], 'results')
|
59
|
+
@sandbox = (opts[:check_directory] || File.expand_path(File.join(File.dirname(__FILE__), '..', 'checks')))
|
55
60
|
|
56
61
|
if opts[:logger]
|
57
62
|
@log = opts[:logger]
|
@@ -84,7 +89,7 @@ module Flapjack
|
|
84
89
|
end
|
85
90
|
|
86
91
|
def perform_check(cmd)
|
87
|
-
command = "sh -c '#{cmd}'"
|
92
|
+
command = "sh -c '#{@sandbox}/#{cmd}'"
|
88
93
|
@log.debug("Executing check: \"#{command}\"")
|
89
94
|
result = `#{command}`
|
90
95
|
retval = $?.exitstatus
|
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.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Lindsay Holmwood
|
@@ -146,12 +146,17 @@ files:
|
|
146
146
|
- bin/flapjack-worker
|
147
147
|
- bin/flapjack-worker-manager
|
148
148
|
- bin/install-flapjack-systemwide
|
149
|
+
- doc/CONFIGURING.md
|
150
|
+
- doc/DEVELOPING.md
|
151
|
+
- doc/INSTALL.md
|
149
152
|
- etc/default/flapjack-notifier
|
150
153
|
- etc/default/flapjack-workers
|
151
|
-
- etc/flapjack/
|
154
|
+
- etc/flapjack/flapjack-notifier.yaml.example
|
155
|
+
- etc/flapjack/recipients.yaml.example
|
152
156
|
- etc/init.d/flapjack-notifier
|
153
157
|
- etc/init.d/flapjack-workers
|
154
158
|
- flapjack.gemspec
|
159
|
+
- lib/flapjack/checks/http_content
|
155
160
|
- lib/flapjack/cli/notifier.rb
|
156
161
|
- lib/flapjack/cli/notifier_manager.rb
|
157
162
|
- lib/flapjack/cli/worker.rb
|