0.0
No commit activity in last 3 years
No release in over 3 years
Make sure you get mailed when bad things happen to your server.
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
 Dependencies

Runtime

 Project Readme
= AlertMachine

Get notifications if bad things happen to your server. You can easily make sure
all processes are running, ports are open. You can also add checks for bad events
that get run once every few minutes and get error reports to your email.

== Usage
0. Install:

gem install alert_machine

1. Defining a Watcher class:

class MyWatcher < AlertMachine::Watcher

    # Example 1: Make sure port 80 is running on server1 and server2.
    watch_process(["server1.example.com", "server2.com"], :port => 80)

    # Example 2: Make sure the two thin servers are running in server1.
    # Check if the two ports are open, and check if the two pid files are present
    # and pointing to valid processes.
    watch_process("server1.example.com", :port => [3000, 3001], :pid_file =>
        ["/tmp/thin.3000.pid", "/tmp/thin.3001.pid"])

    # Example 3: We can also make sure there are no new crashes.
    watch(:retries => 0) do
        new_crashes = Crash.where(unread: false).all
        assert new_crashes.empty?, <<MAIL
        #{new_crashes.length} new crashes found.
        #{ new_crashes.collect {|c| c.print }.join("\n") }
MAIL
    # The above code asserts that new_crashes is empty. If it's not empty
    # an alert is triggerred with the message contents being the string
    # that follows the assert.
    end
end

2. Running the watcher class:

File: my_watcher_runner.rb
require 'alert_machine'

# The below line safely loads the rails environment sending out alerts
# incase things are broken.
AlertMachine::RailsEnvironment.bootup

# Require your alert files.
require "offline/alerts/my_watcher1.rb"
require "offline/alerts/my_watcher2.rb"

# Run the machine.
AlertMachine.run

== Configuration

If you want to change the default settings, you can call:

AlertMachine.config("config_file_path")

before the `AlertMachine.run`

You can also easily pass diff config files for development and production, if
you are using rails.

A list of all config options are available at AlertMachine::Watcher#watch and
AlertMachine::Watcher#watch_process