2020-06-22 09:54:01 +00:00
|
|
|
const schedule = require("node-schedule");
|
|
|
|
const db = require("./db");
|
2020-09-09 12:25:00 +00:00
|
|
|
const { criticalChecks } = require("./checks/critical");
|
|
|
|
const { verboseChecks } = require("./checks/verbose");
|
2020-06-22 09:54:01 +00:00
|
|
|
|
2020-09-09 12:25:00 +00:00
|
|
|
// execute the critical health-check script every 5 minutes
|
2020-09-10 10:15:54 +00:00
|
|
|
const criticalJob = schedule.scheduleJob("*/5 * * * *", async () => {
|
2020-09-10 12:13:28 +00:00
|
|
|
const entry = {
|
|
|
|
date: new Date().toISOString(),
|
|
|
|
checks: await Promise.all(criticalChecks.map((check) => new Promise(check))),
|
|
|
|
};
|
2020-06-22 09:54:01 +00:00
|
|
|
|
2020-09-18 11:40:14 +00:00
|
|
|
db.read().get("critical").push(entry).write();
|
2020-06-22 09:54:01 +00:00
|
|
|
});
|
|
|
|
|
2020-08-26 15:17:33 +00:00
|
|
|
// execute the verbose health-check script once per hour
|
|
|
|
const verboseJob = schedule.scheduleJob("0 * * * *", async () => {
|
2020-09-10 12:13:28 +00:00
|
|
|
const entry = {
|
|
|
|
date: new Date().toISOString(),
|
|
|
|
checks: await Promise.all(verboseChecks.map((check) => new Promise(check))),
|
|
|
|
};
|
2020-08-14 15:46:38 +00:00
|
|
|
|
2020-09-18 11:40:14 +00:00
|
|
|
db.read().get("verbose").push(entry).write();
|
2020-08-14 15:46:38 +00:00
|
|
|
});
|
|
|
|
|
|
|
|
// Launch Health check jobs
|
2020-07-30 10:00:58 +00:00
|
|
|
setTimeout(() => {
|
2020-09-10 10:15:54 +00:00
|
|
|
criticalJob.invoke();
|
2020-08-14 15:46:38 +00:00
|
|
|
verboseJob.invoke();
|
2020-09-10 11:49:26 +00:00
|
|
|
}, 60 * 1000); // delay for 60s to give other services time to start up
|