DS Scheduler

A centralized 'cron' type scheduling system for UNIX/Linux. It has a web interface for managing, monitoring and scheduling jobs and commands in a multi-host environment.


Download:

Download ds-scheduler via GIT:

 git clone git://solar1.net/scheduler



Features:


  • Can be used as a drop-in replacement for cron.
  • Can execute jobs based on event triggers.
  • Secure communications between master servers and clients.
  • Cluster-able: Master can automatically fail over so any number of secondary masters. 
  • Ajax web interface for better monitoring and execution feedback.
  • Graphing/Reporting: Visualize the running duration and timing of your jobs.
  • Run Jobs based on File Triggers




Installation:

Point your web server to the 'web' directory that is under scheduler/.  If you installed in /opt/scheduler, then an example apache entry would be:

Alias /scheduler/ /opt/scheduler/web/
<Directory /opt/scheduler/web/>
   AuthType Basic
   AuthName "DS_SChed"
   AuthUserFile /opt/scheduler/.htpasswd
   require valid-user
</Directory>

Secure your site by using SSL and htpasswd. You can run root processes with the scheduler to restricting access is highly recommended.  

Creating an htpasswd file:

htpasswd -c /opt/scheduler/.htpasswd <user>



Screenshots:




Graphs:





TO DO:


  • Not every feature on the web interface works yet. Anyone who knows web development could probably do better. Patches are welcome.
  • Need to add ON_NEWFILE trigger.  Done
  • Need to add ON_FILECHANGE trigger.
  • Need better reporting/graphing flexibility.
  • Need Translations





Database:


For those who want to contribute to the development, Here is an outline of the database:

Table:  Jobs

int(11)
AUTO_INCREMENT unique job ID
varchar(255)

Human readable job name

varchar(30)

Host that job will run on
varchar(10)

user that job will run as
datetime

The last time the job started
datetime

The last tim the job ended
int(11)

Does this job depend on another?
int(11)

See the dep_mode table
varchar(30)

'cron' type notation

int(11)

The running status
int(11)

The exit code of the job
varchar(300)

The actual command to run

tinyint(1)

Trigger the scheduler to re-read the job
text

Human readable comments



Table:  dep_mode
For managing dependant modes 


int(11)
Unique ID
varchar(25)
Description of mode (i.e. ON_FAILURE)


Table: Results

For storing output and times for reporting


int(11)
Unique ID

datetime
Time the job started

datetime
Time the job exited

text
Command/Job output text

varchar(32)
Unique identifier for each job instance