Intendant - Job Monitoring Aggregation Service
I recently came across a need for a service that aggregates the status of multiple different time-based scripts, and I had trouble finding a webhook-based platform that offered the reporting capabilities that I needed. So, I'm going to make one that solves my problem.
Similar to some other great tools like Healthchecks and cronitor.io, the main purpose of Intendant is to report on the status of various scripts and jobs that run automatically. Where Intendant will look to be different is in the aggregation of the data based on predefined groups. For example, if you have a backup script that runs on 30 different hosts and all 30 fail, you should only receive 1 email. Likewise if 25 succeed and 5 fail, you still only get 1 email.
Being a time-based script lifecycle manager Intendant will also expose all the normal statistics about elapsed duration, time duration anomalies, and cause an alert in the event of a job overlap - but the primary difference Intendant strives for is to aggregate the reported values down into single reports for each group of scripts. Due to the nature of some webhook-based events there is never an "error" condition to report - the start hook fires and the end hook is never called, which removes the immediate importance of needing "same-minute" reporting on the job's status.
Intendant will initially be a purely API-based interface for managing jobs and their groups, with web-based interfaces to follow. When Intendant is first ready for the use, the following endpoints will be available:
- Register User
Registering a user will also register that user's Company, after which a user can invite users directly into their company account. - Create Job
- Edit Job
- Archive Job
- Create Group
- Edit Group
- Delete Group
- Get Job Runs
- Invite User to Company
- Remove User from Company
- Confirm Invite
- Get Running Jobs
- Get Overlapped Jobs
- Get Recently Finished Jobs
- Start Job Run
- End Job Run
Full source will be available as it is ready, as well as various snippets and updates as they come about.