[ANN] god 0.2.0 released

A lot of work has gone into god since the last release. Say goodbye to polling for process status--support for event based conditions via kqueue/netlink has been added (thanks Kevin Clark)! Only a few events are currently supported (most prominently process exit), but the way is now open for the addition of other events. A new, advanced syntax is available (in addition to the familiar simple syntax) that gives you full power over the new state based lifecycle of your Watches. Updated documentation is available on the website:

  http://god.rubyforge.org/

WHAT IS GOD?

God is an easy to configure, easy to extend monitoring framework written in Ruby.

Keeping your server processes and tasks running should be a simple part of your deployment process. God aims to be the simplest, most powerful monitoring application available.

DISCLAIMER

God is still very young, I'd love to get feedback and bug reports, but I do not yet recommend you use it for mission critical tasks. I personally use it in production but then I'm a daring fellow.

INSTALL

sudo gem install god

* note: currently tested only on Redhat Linux and Darwin (won't work on Windows)

FEATURES

* Config file is written in Ruby
* Easily write your own custom conditions in Ruby
* Supports both poll and event based conditions
* Different poll conditions can have different intervals

EXAMPLE

The easiest way to understand how god will make your life better is by looking at a sample config file. The following configuration file is what I use at gravatar.com to keep the mongrels running:

# file: gravatar.god
# run with: god start -c /path/to/gravatar.god

···

#
# This is the actual config file used to keep the mongrels of
# gravatar.com running.

RAILS_ROOT = "/var/www/gravatar2/current"

God.meddle do |god|
  %w{8200 8201 8202}.each do |port|
    god.watch do |w|
      w.name = "gravatar2-mongrel-#{port}"
      w.interval = 30 # seconds default
      w.start = "mongrel_rails cluster::start --only #{port} \
        -C #{RAILS_ROOT}/config/mongrel_cluster.yml"
      w.stop = "mongrel_rails cluster::stop --only #{port} \
        -C #{RAILS_ROOT}/config/mongrel_cluster.yml"
      w.grace = 10 # seconds
            pid_file = File.join(RAILS_ROOT, "log/mongrel.#{port}.pid")
            w.behavior(:clean_pid_file) do |b|
        b.pid_file = pid_file
      end

      w.start_if do |start|
        start.condition(:process_running) do |c|
          c.interval = 5 # seconds
          c.running = false
          c.pid_file = pid_file
        end
      end
            w.restart_if do |restart|
        restart.condition(:memory_usage) do |c|
          c.pid_file = pid_file
          c.above = (150 * 1024) # 150mb
          c.times = [3, 5] # 3 out of 5 intervals
        end
              restart.condition(:cpu_usage) do |c|
          c.pid_file = pid_file
          c.above = 50 # percent
          c.times = 5
        end
      end
    end
  end
end

DOCS

Detailed documentation is available at http://god.rubyforge.org/

CHANGES

== 0.2.0 / 2007-07-18

* Rewrote innards to use a state and event based lifecycle
* Basic support for events via kqueue (bsd/darwin) and netlink/pec (linux) [kevinclark]
* Added advanced syntax (simple syntax calls advanced api underneath)
* Condition returns have changed meaning. With simple syntax, a true return activates block
* Updated http://god.rubygorge.org with updated simple config and new advanced config

AUTHORS

Tom Preston-Werner
Kevin Clark

RubyGorge?

bet you meant:
http://god.rubyforge.org

···

On 7/19/07, Tom Werner <pubsub@rubyisawesome.com> wrote:

* Updated http://god.rubygorge.org with updated simple config and new
advanced config

It's where the bad projects go when they die.

Regards,

Dan

···

On Jul 19, 12:29 pm, "Gregory Brown" <gregory.t.br...@gmail.com> wrote:

On 7/19/07, Tom Werner <pub...@rubyisawesome.com> wrote:

> * Updatedhttp://god.rubygorge.orgwith updated simple config and new
> advanced config

RubyGorge?

Daniel Berger wrote:

* Updatedhttp://god.rubygorge.orgwith updated simple config and new
advanced config

RubyGorge?

It's where the bad projects go when they die.

Regards,

Dan

<facetious>

No, that would be RubyGehenna. We just don't say so because we
wouldn't want to be insensitive to our superstitiously-correct
friends, now would we?

</facetious>

Glen

···

On Jul 19, 12:29 pm, "Gregory Brown" <gregory.t.br...@gmail.com> > wrote:

On 7/19/07, Tom Werner <pub...@rubyisawesome.com> wrote:

Man . . . I want to register rubygorge.org now. I just don't know what
I'd do with it.

···

On Fri, Jul 20, 2007 at 03:46:32AM +0900, Daniel Berger wrote:

On Jul 19, 12:29 pm, "Gregory Brown" <gregory.t.br...@gmail.com> > wrote:
> On 7/19/07, Tom Werner <pub...@rubyisawesome.com> wrote:
>
> > * Updatedhttp://god.rubygorge.orgwith updated simple config and new
> > advanced config
>
> RubyGorge?

It's where the bad projects go when they die.

--
CCD CopyWrite Chad Perrin [ http://ccd.apotheon.org ]
Paul Graham: "Real ugliness is not harsh-looking syntax, but having to
build programs out of the wrong concepts."

Chad Perrin <perrin@apotheon.com> writes:

Man . . . I want to register rubygorge.org now. I just don't know what
I'd do with it.

Too late - it's registered to a typo squatter.

sherm--

···

--
Web Hosting by West Virginians, for West Virginians: http://wv-www.net
Cocoa programming in Perl: http://camelbones.sourceforge.net

Sherm Pendley wrote:

Chad Perrin <perrin@apotheon.com> writes:

Man . . . I want to register rubygorge.org now. I just don't know what
I'd do with it.

Too late - it's registered to a typo squatter.

That makes my forge rise.

Hal

rubygehenna.org looks like it's still available.

-mental

···

On Fri, 2007-07-20 at 08:25 +0900, Sherm Pendley wrote:

Chad Perrin <perrin@apotheon.com> writes:

> Man . . . I want to register rubygorge.org now. I just don't know what
> I'd do with it.

Too late - it's registered to a typo squatter.

That's not as funny . . . but I'd like to see what someone does with it,
if it gets registered and used.

···

On Fri, Jul 20, 2007 at 09:21:37AM +0900, MenTaLguY wrote:

On Fri, 2007-07-20 at 08:25 +0900, Sherm Pendley wrote:
> Chad Perrin <perrin@apotheon.com> writes:
>
> > Man . . . I want to register rubygorge.org now. I just don't know what
> > I'd do with it.
>
> Too late - it's registered to a typo squatter.

rubygehenna.org looks like it's still available.

--
CCD CopyWrite Chad Perrin [ http://ccd.apotheon.org ]
John W. Russell: "People point. Sometimes that's just easier. They also use
words. Sometimes that's just easier. For the same reasons that pointing has
not made words obsolete, there will always be command lines."

To hell with that.

m.

···

On 7/20/07, MenTaLguY <mental@rydia.net> wrote:

On Fri, 2007-07-20 at 08:25 +0900, Sherm Pendley wrote:
> Chad Perrin <perrin@apotheon.com> writes:
>
> > Man . . . I want to register rubygorge.org now. I just don't know what
> > I'd do with it.
>
> Too late - it's registered to a typo squatter.

rubygehenna.org looks like it's still available.