0.0
No commit activity in last 3 years
No release in over 3 years
Send alerts based on simple monitored conditions in your app
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
 Dependencies

Development

>= 0
>= 0
 Project Readme

SimpleMonitor

Send alerts based on simple monitored conditions in your app.

It provides a basic skeleton for writing unique but consistent monitoring checks for your application. Examples of such checks are a Delayed::Job queue that is too full, too many failed logins in the last 5 minutes, or a remote service being unreachable.

Installation

install it via rubygems:

gem install simple_monitor

or put it in your Gemfile:

# Gemfile
gem 'simple_monitor'

Usage

SimpleMonitor should be mixed in to a SomeConditionMonitor class

require "simple_monitor"

class HighJobMonitor
  include SimpleMonitor

  # This is the most important method you should override
  # It returns true/false to determine if there's an alert
  def needs_alert?
    Queue.jobs.count > options[:job_count_threshold]
  end

  # Alert sending implementation of your choice.  SimpleMonitor
  # leaves this up to you
  def send_alert
    Mailer.deliver_high_job_alert(Queue.jobs.count)
  end
end

monitor = HighJobMonitor.new(:job_count_threshold => 99)
monitor.check

For a typical application, it could be desirable to define an AppMonitor class with a default send_alert method, and have your individual monitor classes inherit from that.

A monitor class can take options on initialization; this is recommended for passing in thresholds, email addresses, or other dependencies.

Logging

SimpleMonitor defaults its logger to a new Logger instance, or Rails.logger if that is defined. If you want to override this, do so in your class or via the logger= instance method.

When running a check, the logger will be warned or provided with info whether an alert was needed. Note this is in addition to sending out an alert.

Copyright

Copyright (c) (2012) Brendon Murphy. See license.txt for details.