Skip to content
This repository

Monitoring notification routing + event processing system

Octocat-spinner-32 bin simulate-failed-check - give -t a default of 45 seconds April 02, 2014
Octocat-spinner-32 dist start flapjack-nagios-receiver daemonized from init script November 20, 2013
Octocat-spinner-32 doc @ 0bebe01 fix formatting of jabber help text July 10, 2013
Octocat-spinner-32 etc Merge pull request #443 from jswoods/allow_site_specific_erb_template… March 06, 2014
Octocat-spinner-32 features remove debugging from notification_rules.feature March 21, 2014
Octocat-spinner-32 lib Update jabber.rb April 15, 2014
Octocat-spinner-32 log add /log October 09, 2013
Octocat-spinner-32 spec [UPDATE] allow email messages to have custom from address April 09, 2014
Octocat-spinner-32 tasks fix exit_on_queue_empty for benchmark task January 13, 2014
Octocat-spinner-32 tmp fix Oj syntax March 28, 2014
Octocat-spinner-32 .gitignore Merge from flpjck/flapjack December 04, 2013
Octocat-spinner-32 .gitmodules trying to fix travis-ci submodule problems (again) October 11, 2012
Octocat-spinner-32 .rspec use custom formatters during normal rspec run August 29, 2012
Octocat-spinner-32 .travis.yml remove benchmark run from travis build March 20, 2014
Octocat-spinner-32 prepare 0.8.10 release March 28, 2014
Octocat-spinner-32 Gemfile bump gem to fix 2.1.1 build with perftools March 11, 2014
Octocat-spinner-32 Gemfile.lock prepare 0.8.10 release March 28, 2014
Octocat-spinner-32 Guardfile cleanup outdated gems December 16, 2013
Octocat-spinner-32 LICENCE added licence for the project June 30, 2009
Octocat-spinner-32 Tighten up the introductory text. Minor capitalisation + whitespace f… January 04, 2014
Octocat-spinner-32 Rakefile cleanup outdated gems December 16, 2013
Octocat-spinner-32 flapjack.gemspec [UPDATE] require thin gem version less than 2.0.0.pre which introduce… February 11, 2014

Flapjack Flapjack

Build Status

Flapjack is a flexible monitoring notification routing system that handles:

  • Alert routing (determining who should receive alerts based on interest, time of day, scheduled maintenance, etc)
  • Alert summarisation (with per-user, per media summary thresholds)
  • Your standard operational tasks (setting scheduled maintenance, acknowledgements, etc)

Flapjack will be immediately useful to you if:

  • You want to identify failures faster by rolling up your alerts across multiple monitoring systems.
  • You monitor infrastructures that have multiple teams responsible for keeping them up.
  • Your monitoring infrastructure is multitenant, and each customer has a bespoke alerting strategy.
  • You want to dip your toe in the water and try alternative check execution engines like Sensu, Icinga, or cron in parallel to Nagios.

The technical low-down

Flapjack provides a scalable method for dealing with events representing changes in system state (OK -> WARNING -> CRITICAL transitions) and alerting appropriate people as necessary.

At its core, Flapjack processes events received from external check execution engines, such as Nagios. Nagios provides a 'perfdata' event output channel, which writes to a named pipe. flapjack-nagios-receiver then reads from this named pipe, converts each line to JSON and adds them to the events queue.

Flapjack sits downstream of check execution engines (like Nagios, Sensu, Icinga, or cron), processing events to determine:

  • if a problem has been detected
  • who should know about the problem
  • how they should be told

Additional check engines can be supported by adding additional receiver processes similar to the nagios receiver.


Ubuntu Precise 64 (12.04):

Add the Flapjack Debian repository to your Apt sources:

echo 'deb precise main' > /tmp/flapjack.list
sudo cp /tmp/flapjack.list /etc/apt/sources.list.d/flapjack.list
sudo apt-get update

Install the latest Flapjack package:

sudo apt-get install flapjack

Alternatively, download the deb and install using sudo dpkg -i <filename>

The Flapjack package is an Omnibus package and as such contains most dependencies under /opt/flapjack, including Redis.

Installing the package will start Redis and Flapjack. You should now be able to access the Flapjack Web UI at:


And consume the REST API at:


N.B. The Redis installed by Flapjack runs on a non-standard port, so it doesn't conflict with other Redis instances you may already have installed.

Other OSes:

Currently we only make a package for Ubuntu Precise (amd64). If you feel comfortable getting a ruby 1.9 or 2.0 environment going on your preferred OS, then you can also just install Flapjack from

gem install flapjack

Using a tool like rbenv or rvm is recommended to keep your Ruby applications from intefering with one another.

Alternatively, you can add support for your OS of choice to omnibus-flapjack and build a native package. Pull requests welcome, and we'll help you make this happen!


Have a look at the default config file and modify things as required. See the Configuring Components section on the wiki for more details.

# hack the config
sudo vi /etc/flapjack/flapjack_config.yaml

# reload the config
sudo /etc/init.d/flapjack reload


Ubuntu Precise 64:

After installing the Flapjack package, Redis and Flapjack should be automatically started.

First up, start Redis if it's not already started:

# status:
sudo /etc/init.d/redis status

# start:
sudo /etc/init.d/redis start

Operating Flapjack:

# status:
sudo /etc/init.d/flapjack status

# reload:
sudo /etc/init.d/flapjack reload

# restart:
sudo /etc/init.d/flapjack restart

# stop:
sudo /etc/init.d/flapjack stop

# start:
sudo /etc/init.d/flapjack start

Using - Details

For more information, including full specification of the configuration file and the data import formats, please refer to the USING section of the Flapjack wiki

Developing Flapjack

Information on developing more Flapjack components or contributing to core Flapjack development can be found in the DEVELOPING section of the Flapjack wiki

Documentation Submodule

We have the documentation for this project on a github wiki and also referenced as a submodule at /doc in this project. Run the following commands to populate the local doc/ directory:

git submodule init
git submodule update

If you make changes to the documentation locally, here's how to publish them:

  • Checkout master within the doc subdir, otherwise you'll be commiting to no branch, a.k.a. no man's land.
  • git add, commit and push from inside the doc subdir
  • Add, commit and push the doc dir from the root (this updates the pointer in the main git repo to the correct ref in the doc repo, we think...)

More on the wiki

The Flapjack wiki has even more goodies:

Something went wrong with that request. Please try again.