Project

cognizant

0.0
No commit activity in last 3 years
No release in over 3 years
Cognizant is a process management framework inspired from God and Bluepill. It supervises your processes, ensuring their state based on a flexible criteria.
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
 Dependencies
 Project Readme

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.