God 0.1.0 released

I’m proud to announce the initial public release of god!

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
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_not_running) do |c|
      c.interval = 5 # seconds
      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.1.0 / 2007-07-07

  • 1 major enhancement
    • Birthday!

AUTHOR

Tom Preston-Werner

Why would you pick the name “god”? Surely there are more appropriate
names for a piece of software.

Todd B. (yes, I am a Christian)

It watches over your server processes? Seems kind of fitting. I don’t
see
any sacrilege in such a name, but I can understand if it bothers some
people.

Besides, it’s a much more interesting name than “monit” (the tool god is
trying to replace) or any variation like ruby_monitor.

I do plan on giving this a try soon enough.

Jason (is also Christian)

Wayne E. Seguin wrote:

processes. Hence seems to be named very well to me.
Maybe “god” is simply an acronym, as proposed by Douglas Hofstadter:

http://www.google.com/search?hl=en&q=god+over+djinn

You can s/djinn/daemon/ if you like.

I’m basically agnostic, but I still find “god” a poor name. It just
has too much semantic weight. An ancient name for god may carry
better, like “Deus”.

My 2c.
T.

On Jul 09, 2007, at 15:05 , Todd B. wrote:

Why would you pick the name “god”? Surely there are more appropriate
names for a piece of software.

Todd B. (yes, I am a Christian)

haha! I was waiting for a comment on that!

To me the name makes much sense because that is effectively what the
“piece of software” does, it plays god with the lives of daemons and
processes. Hence seems to be named very well to me.

On Tue, 2007-07-10 at 03:24 +0900, Tom W. wrote:

[…] God is still very young […]

Indeed :wink:

Cheers,
Daniel S. (atheist)

On Jul 9, 2007, at 4:31 PM, Trans wrote:

I’m basically agnostic, but I still find “god” a poor name. It just
has too much semantic weight. An ancient name for god may carry
better, like “Deus”.

My 2c.
T.

Oh my god!

Tom W. wrote:

I’m proud to announce the initial public release of god!

http://god.rubyforge.org/

You need to add God.smite()


Travis W.

“Programming in Java is like dealing with your mom –
it’s kind, forgiving, and gently chastising.
Programming in C++ is like dealing with a disgruntled
girlfriend – it’s cold, unforgiving, and doesn’t tell
you what you’ve done wrong.”

On 7/10/07, Trans [email protected] wrote:

I’m basically agnostic, but I still find “god” a poor name. It just
has too much semantic weight. An ancient name for god may carry
better, like “Deus”.

My monitoring framework was called abyss, for it keeps my daemons :slight_smile:

^ manveru

Tom W. wrote:

Keeping your server processes and tasks running should be a simple part

  • Config file is written in Ruby

    god.watch do |w|
    end
    c.above = (150 * 1024) # 150mb
    end

  • 1 major enhancement

  • Birthday!

AUTHOR

Tom Preston-Werner

Interesting … the Gang of Four say you shouldn’t have a “god” class,
but you went and did it anyway. :slight_smile:

If RKelly (http://rubyforge.org/projects/rkelly/) can exist, then so can
g-d
:slight_smile:
– Shane

On 7/9/07, Tom W. [email protected] wrote:

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.

Doesn’t that just mean you have faith in God?

On 7/9/07, Gregory B. [email protected] wrote:

God.smite( Thread.current )

TwP

On Jul 9, 2007, at 10:21 PM, Mark G. wrote:

Hahaha, I liked that one.

Mark

Hey Apple has had a system command ‘bless’ for decades!
In the old Mac OS (pre OS X) it was a common troubleshooting activity
to ‘bless the system folder’ !
Ruby already has the method taint!
Why not some things like:
curse()
cure()
judge()
miracle
plague()
resurrect()
inspire()
create()

Travis D Warlick Jr wrote:

Tom W. wrote:

I’m proud to announce the initial public release of god!

http://god.rubyforge.org/

You need to add God.smite()

Hahaha, I liked that one.

Mark

Todd B. wrote:

Why would you pick the name “god”? Surely there are more appropriate
names for a piece of software.

Why? At least now the name refers to something.

Typo…x Hey Tom!

Regards,
Ujjwal

I’m basically agnostic, but I still find “god” a poor name. It just
has too much semantic weight. An ancient name for god may carry
better, like “Deus”.

I was imagining there would be objections when I saw the announcement.
Then I thought, look at the number of God Games out there (Populus, and
Black & White being prime examples of the genre): playing at God is
hardly uncharted in technology circles.

I think it’s a great name for the application, given it’s domain. It
also gives almost endless scope for grin / cringe jokes. All those jokes
will, with a little care, also make for a fun and memerable interface:
there’s enormous scope for use of metaphores that I’d imagine most
societies would probably appreciate (anywhere with some exposure to
monotheistic religion).

Hey - with enough 2 cents, we can buy a burger.

Cheers,
Benj - also mostly agnostic (if that’s relevent).

Hey time… Congrats…
I just loved the name… may GOD help us all! :slight_smile:

Regards,
Ujjwal