Please Note: This project has known security vulnerabilities. Use at your own risk!
cron-like jobs for back-end systems
Features of chronos
- dependent jobs
- job history tracking
- job versions
- automatic rerun with configurable max attempts
- email notifications (reports, failures, etc)
- REST api
- swagger docs
- multiple datasource support
- BSD license
What is chronos?
chronos is for running jobs that would normally be put into a crontab but would be easier to manage and track through a simple ui and some retry and emailing mechanisms.
A chronos job could be a Hive Query that needs to run every hour to populate a table that your api queries for an internal app, or just a periodic query that transforms some data for another back-end process. Another example might be a recurring report that needs to be sent to business leads every week, that queries a MySql database and sends the top 100 results. chronos makes these tasks simple to create, update, track, and rerun.
You're probably tired of ssh-ing to machines and rerunning jobs manually after hearing that they failed from someone that's not even on your tech team. So we've built a system that takes care of that and let's you rest easy on the weekend and hopefully spend more time coding during work hours.
chronos has been implemented in a way that lets you add a new back-end for storing jobs and history if needed. Currently we have a MySql implementation of the WithBackend interface. It would be trivial to add more to suit your needs. JDBC connections are currently used for jobs.
Configuration and Prerequisites
chronos uses a Java-based spring config.
- java 7 for backend
- node >= 4 and npm >= 3 for ui
mvn clean test
./build_site.sh mvn clean package install cd chronos-web/ mvn tomcat7:run
Note: This creates a small test table in H2 for running jobs against. Details of the table can be found here.
Run a job with the ui
- Navigate to http://localhost:8080
- Click New Job
- Fill out the form. A query similar to
CREATE TABLE my_table_name AS SELECT * FROM testchronos;will work.
- View log output of
mvn tomcat7:runto see that job has completed.
Pull-requests are welcome! Feel free to contact us with Github Issues.