Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Cognizant is a process management framework inspired from God and Bluepill.
Ruby
Branch: master

Fetching latest commit…

Cannot retrieve the latest commit at this time

Failed to load latest commit information.
bin
examples
features
lib
.gitignore
.travis.yml
.yardopts
Gemfile
License.md
Rakefile
Readme.md
cognizant.gemspec

Readme.md

Cognizant

Simple and reliable process monitoring framework written in Ruby

Gem Version Dependency Status Code Climate Build Status Coverage Status

Quick start

Install Cognizant
$ gem install cognizant
Example thin server cluster configuration
$ vim thin_cluster.cz
app_root = "/apps/acmecorp.com"
servers = 5
port = 4000

Cognizant.application "acmecorp.com" do |app|
  servers.times do |n|
    app.monitor "thin-#{n}" do
      autostart!      
      group "thin"
      uid "www-data"
      gid "www-data"

      env RACK_ENV: "production"
      chdir "#{app_root}/current"

      daemonize false
      pidfile "#{app_root}/shared/tmp/pids/thin.400#{n}.pid"

      start_command   "bundle exec thin start   --only #{n} --servers #{servers} --port #{port}"
      stop_command    "bundle exec thin stop    --only #{n} --servers #{servers} --port #{port}"
      restart_command "bundle exec thin restart --only #{n} --servers #{servers} --port #{port}"

      check :flapping, times: 3, within: 1.minute, retry_after: 15.seconds, retries: 10
      check :transition, from: :running, to: :stopped do |process|
        `say a thin server has stopped` # send an email, etc.
      end

      check :cpu_usage,    above: 50.percent,    every: 5.seconds, times: 5,      do: :restart
      check :memory_usage, above: 300.megabytes, every: 5.seconds, times: [3, 5], do: :restart
    end
  end
end

YAML version of this example is available in the wiki.

Start the daemon and load the configuration
$ cognizantd
$ cognizant load thin_cluster.cz
Enter the Cognizant shell and view the status of managed processes
$ cognizant
Welcome Gurpartap! You are speaking to the Cognizant Monitoring Daemon.
Enter 'help' if you're not sure what to do.

Type 'quit' or 'exit' to quit at any time.
> use acmecorp.com
OK
(acmecorp.com)> status
+---------+-------+------------------------+-------+-------+--------+
| Process | Group | State                  | PID   | % CPU | Memory |
+---------+-------+------------------------+-------+-------+--------+
| thin-0  | thin  | running since 1 minute | 59825 | 0.0   | 47 MiB |
+---------+-------+------------------------+-------+-------+--------+
| thin-1  | thin  | running since 1 minute | 59828 | 0.0   | 47 MiB |
+---------+-------+------------------------+-------+-------+--------+
| thin-2  | thin  | running since 1 minute | 59829 | 0.0   | 47 MiB |
+---------+-------+------------------------+-------+-------+--------+
2013-03-18 10:00:29 +0530

Further information

Cognizant has an extensively documented wiki for that.

About

Cognizant is a project of Gurpartap Singh. Feel free to get in touch.

Something went wrong with that request. Please try again.