flapjack 0.6.38 → 0.6.39
Sign up to get free protection for your applications and to get access to all the features.
- data/.gitmodules +3 -0
- data/.travis.yml +2 -0
- data/README.md +15 -186
- data/Rakefile +11 -7
- data/bin/flapjack +9 -17
- data/bin/flapjack-nagios-receiver +19 -32
- data/bin/flapjack-populator +7 -2
- data/etc/flapjack_config.yaml.example +20 -0
- data/flapjack.gemspec +1 -3
- data/lib/flapjack/api.rb +1 -5
- data/lib/flapjack/coordinator.rb +24 -28
- data/lib/flapjack/data/contact.rb +12 -10
- data/lib/flapjack/data/entity.rb +2 -2
- data/lib/flapjack/data/entity_check.rb +0 -9
- data/lib/flapjack/data/global.rb +25 -0
- data/lib/flapjack/executive.rb +1 -0
- data/lib/flapjack/jabber.rb +11 -19
- data/lib/flapjack/oobetet.rb +34 -32
- data/lib/flapjack/pagerduty.rb +140 -140
- data/lib/flapjack/redis_pool.rb +1 -1
- data/lib/flapjack/version.rb +1 -1
- data/lib/flapjack/web/views/check.haml +1 -1
- data/spec/lib/flapjack/coordinator_spec.rb +162 -5
- data/spec/lib/flapjack/data/contact_spec.rb +34 -2
- data/spec/lib/flapjack/data/entity_spec.rb +25 -11
- data/spec/lib/flapjack/jabber_spec.rb +2 -3
- data/spec/lib/flapjack/oobetet_spec.rb +140 -0
- data/spec/lib/flapjack/pagerduty_spec.rb +177 -0
- data/spec/lib/flapjack/redis_pool_spec.rb +24 -0
- data/spec/spec_helper.rb +3 -0
- metadata +10 -40
- data/doc/CONFIGURING.md +0 -38
- data/doc/DEBUGGING.md +0 -28
- data/doc/DEVELOPING.md +0 -35
- data/doc/GLOSSARY.md +0 -19
- data/doc/INSTALL.md +0 -64
- data/doc/PACKAGING.md +0 -25
data/spec/spec_helper.rb
CHANGED
@@ -12,6 +12,9 @@ FLAPJACK_ENV = ENV["FLAPJACK_ENV"] || 'test'
|
|
12
12
|
require 'bundler'
|
13
13
|
Bundler.require(:default, :test)
|
14
14
|
|
15
|
+
require 'webmock/rspec'
|
16
|
+
WebMock.disable_net_connect!
|
17
|
+
|
15
18
|
$:.unshift(File.dirname(__FILE__) + '/../lib')
|
16
19
|
|
17
20
|
# Requires supporting files with custom matchers and macros, etc,
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: flapjack
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.6.
|
4
|
+
version: 0.6.39
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -11,7 +11,7 @@ authors:
|
|
11
11
|
autorequire:
|
12
12
|
bindir: bin
|
13
13
|
cert_chain: []
|
14
|
-
date: 2012-10-
|
14
|
+
date: 2012-10-19 00:00:00.000000000 Z
|
15
15
|
dependencies:
|
16
16
|
- !ruby/object:Gem::Dependency
|
17
17
|
name: daemons
|
@@ -285,22 +285,6 @@ dependencies:
|
|
285
285
|
- - ! '>='
|
286
286
|
- !ruby/object:Gem::Version
|
287
287
|
version: '0'
|
288
|
-
- !ruby/object:Gem::Dependency
|
289
|
-
name: httparty
|
290
|
-
requirement: !ruby/object:Gem::Requirement
|
291
|
-
none: false
|
292
|
-
requirements:
|
293
|
-
- - ! '>='
|
294
|
-
- !ruby/object:Gem::Version
|
295
|
-
version: '0'
|
296
|
-
type: :runtime
|
297
|
-
prerelease: false
|
298
|
-
version_requirements: !ruby/object:Gem::Requirement
|
299
|
-
none: false
|
300
|
-
requirements:
|
301
|
-
- - ! '>='
|
302
|
-
- !ruby/object:Gem::Version
|
303
|
-
version: '0'
|
304
288
|
- !ruby/object:Gem::Dependency
|
305
289
|
name: rake
|
306
290
|
requirement: !ruby/object:Gem::Requirement
|
@@ -317,22 +301,6 @@ dependencies:
|
|
317
301
|
- - ! '>='
|
318
302
|
- !ruby/object:Gem::Version
|
319
303
|
version: '0'
|
320
|
-
- !ruby/object:Gem::Dependency
|
321
|
-
name: colorize
|
322
|
-
requirement: !ruby/object:Gem::Requirement
|
323
|
-
none: false
|
324
|
-
requirements:
|
325
|
-
- - ! '>='
|
326
|
-
- !ruby/object:Gem::Version
|
327
|
-
version: '0'
|
328
|
-
type: :development
|
329
|
-
prerelease: false
|
330
|
-
version_requirements: !ruby/object:Gem::Requirement
|
331
|
-
none: false
|
332
|
-
requirements:
|
333
|
-
- - ! '>='
|
334
|
-
- !ruby/object:Gem::Version
|
335
|
-
version: '0'
|
336
304
|
description: Flapjack is distributed monitoring notification system that provides
|
337
305
|
a scalable method for processing streams of events from Nagios and deciding who
|
338
306
|
should be notified
|
@@ -350,6 +318,7 @@ extensions: []
|
|
350
318
|
extra_rdoc_files: []
|
351
319
|
files:
|
352
320
|
- .gitignore
|
321
|
+
- .gitmodules
|
353
322
|
- .rbenv-version
|
354
323
|
- .rspec
|
355
324
|
- .travis.yml
|
@@ -382,12 +351,6 @@ files:
|
|
382
351
|
- dist/puppet/ruby/manifests/dev.pp
|
383
352
|
- dist/puppet/ruby/manifests/rubygems.pp
|
384
353
|
- dist/puppet/sqlite3/manifests/dev.pp
|
385
|
-
- doc/CONFIGURING.md
|
386
|
-
- doc/DEBUGGING.md
|
387
|
-
- doc/DEVELOPING.md
|
388
|
-
- doc/GLOSSARY.md
|
389
|
-
- doc/INSTALL.md
|
390
|
-
- doc/PACKAGING.md
|
391
354
|
- etc/flapjack_config.yaml.example
|
392
355
|
- features/events.feature
|
393
356
|
- features/notifications.feature
|
@@ -416,6 +379,7 @@ files:
|
|
416
379
|
- lib/flapjack/data/entity.rb
|
417
380
|
- lib/flapjack/data/entity_check.rb
|
418
381
|
- lib/flapjack/data/event.rb
|
382
|
+
- lib/flapjack/data/global.rb
|
419
383
|
- lib/flapjack/executive.rb
|
420
384
|
- lib/flapjack/filters/acknowledgement.rb
|
421
385
|
- lib/flapjack/filters/base.rb
|
@@ -513,7 +477,10 @@ files:
|
|
513
477
|
- spec/lib/flapjack/jabber_spec.rb
|
514
478
|
- spec/lib/flapjack/notification/email_spec.rb
|
515
479
|
- spec/lib/flapjack/notification/sms_spec.rb
|
480
|
+
- spec/lib/flapjack/oobetet_spec.rb
|
481
|
+
- spec/lib/flapjack/pagerduty_spec.rb
|
516
482
|
- spec/lib/flapjack/pikelet_spec.rb
|
483
|
+
- spec/lib/flapjack/redis_pool_spec.rb
|
517
484
|
- spec/lib/flapjack/web_spec.rb
|
518
485
|
- spec/spec_helper.rb
|
519
486
|
- spec/support/profile_all_formatter.rb
|
@@ -586,7 +553,10 @@ test_files:
|
|
586
553
|
- spec/lib/flapjack/jabber_spec.rb
|
587
554
|
- spec/lib/flapjack/notification/email_spec.rb
|
588
555
|
- spec/lib/flapjack/notification/sms_spec.rb
|
556
|
+
- spec/lib/flapjack/oobetet_spec.rb
|
557
|
+
- spec/lib/flapjack/pagerduty_spec.rb
|
589
558
|
- spec/lib/flapjack/pikelet_spec.rb
|
559
|
+
- spec/lib/flapjack/redis_pool_spec.rb
|
590
560
|
- spec/lib/flapjack/web_spec.rb
|
591
561
|
- spec/spec_helper.rb
|
592
562
|
- spec/support/profile_all_formatter.rb
|
data/doc/CONFIGURING.md
DELETED
@@ -1,38 +0,0 @@
|
|
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/DEBUGGING.md
DELETED
@@ -1,28 +0,0 @@
|
|
1
|
-
Here's some useful ways of debugging various things in Flapjack.
|
2
|
-
|
3
|
-
Redis Connection Leaks
|
4
|
-
|
5
|
-
The following command reports every five seconds the number of connections to redis (as reported by lsof) and the totall number of EM external protocol connections currently in place:
|
6
|
-
|
7
|
-
production paths:
|
8
|
-
|
9
|
-
while true ; do
|
10
|
-
echo -n "EM connection count: "
|
11
|
-
tail -50000 /var/log/flapjack/flapjack.log | grep -i "connection count" \
|
12
|
-
| tail -1 | awk '{ print $5 }'
|
13
|
-
echo -n "lsof redis: "
|
14
|
-
sudo lsof -p `cat /var/run/flapjack/flapjack.pid` | grep :6379 | wc -l
|
15
|
-
sleep 5
|
16
|
-
done
|
17
|
-
|
18
|
-
development paths:
|
19
|
-
|
20
|
-
while true ; do
|
21
|
-
echo -n "EM connection count: "
|
22
|
-
tail -50000 log/flapjack.log | grep -i "connection count" \
|
23
|
-
| tail -1 | awk '{ print $5 }'
|
24
|
-
echo -n "lsof redis: "
|
25
|
-
sudo lsof -p `cat tmp/pids/flapjack.pid` | grep localhost:6379 | wc -l
|
26
|
-
sleep 5
|
27
|
-
done
|
28
|
-
|
data/doc/DEVELOPING.md
DELETED
@@ -1,35 +0,0 @@
|
|
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/GLOSSARY.md
DELETED
@@ -1,19 +0,0 @@
|
|
1
|
-
|
2
|
-
As implemented for the reporting API functions, these are placeholder terms only and open for discussion.
|
3
|
-
|
4
|
-
<dl>
|
5
|
-
<dt>Entity</dt>
|
6
|
-
<dd>TODO</dd>
|
7
|
-
<dt>Check</dt>
|
8
|
-
<dd>TODO</dd>
|
9
|
-
|
10
|
-
<dt>Outage</dt>
|
11
|
-
<dd>Period of time from when a check goes into the 'CRITICAL'
|
12
|
-
state to when it comes out of that state again</dd>
|
13
|
-
<dt>Scheduled maintenance</dt>
|
14
|
-
<dd>Periods of time explicitly created by external actors to denote that maintenance is scheduled to occur at these times.</dd>
|
15
|
-
<dt>Unscheduled maintenance</dt>
|
16
|
-
<dd>Periods of time explicitly created by external actors to denote that maintenance is happening or has happened at these times</dd>
|
17
|
-
<dt>Downtime</dt>
|
18
|
-
<dd>Outages minus scheduled maintenances across any given time period</dd>
|
19
|
-
</dl>
|
data/doc/INSTALL.md
DELETED
@@ -1,64 +0,0 @@
|
|
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!
|
data/doc/PACKAGING.md
DELETED
@@ -1,25 +0,0 @@
|
|
1
|
-
Debian / Ubuntu
|
2
|
-
===============
|
3
|
-
|
4
|
-
Packaged dependencies:
|
5
|
-
|
6
|
-
* libdaemons-ruby
|
7
|
-
* liblog4r-ruby
|
8
|
-
* libxmpp4r-ruby
|
9
|
-
* libtmail-ruby
|
10
|
-
|
11
|
-
Unpackaged dependencies:
|
12
|
-
|
13
|
-
* beanstalkd-client (libbeanstalkd-ruby)
|
14
|
-
* dm-core
|
15
|
-
* dm-timestamps
|
16
|
-
* dm-types
|
17
|
-
* dm-validations
|
18
|
-
* data_objects
|
19
|
-
* do_sqlite3
|
20
|
-
* do_mysql
|
21
|
-
|
22
|
-
The unpackaged dependencies need to be packaged to make Flapjack packagable.
|
23
|
-
|
24
|
-
Current development efforts are working towards abstracting the
|
25
|
-
DataMapper/DataObjects dependency so packaging isn't a complete travesty.
|