Start, stop, and check the status of daemons running on any number of hosts. Daemonitor was built for programmers who need to restart services. It has some logic and auditing built in that allows programmers to do just that without making the system administrators completely nervous.

Of course, system administrators can use daemonitor as well.



  1. Python
  2. Pip
  3. A database (take your pick, anything supported by SQLAlchemy)
  4. Servers that allow SSH connections
  5. An account on those servers that has sudo privileges
  6. Services on those servers with init scripts that accept the commands start, stop and status.

The "Logic"

Services can be grouped in to clusters. Clusters can have a minimum number of active members. If a user tries to shut down too many (or all) of a cluster's members, daemonitor will not allow the shutdown request to proceed.

The Audit Logging

All operations on the daemon processes are logged in the database and optionally elsewhere. The logging is configured in the same way that regular python application loggign is configured.

Installation and Setup

Install daemonitor using the script:

$ cd daemonitor
$ python install

Create the project database for any model classes defined:

$ paster setup-app development.ini

Start the paste http server:

$ paster serve development.ini

While developing you may want the server to reload after changes in package files (or its dependencies) are saved. This can be achieved easily by adding the --reload option:

$ paster serve --reload development.ini

Then you are ready to go.