Cron Jobs - Task Scheduling
Cron jobs / task scheduling is handled by Laravel's task scheduler. As such, you just need a single cron job entry such as:
* * * * * www-data cd /path-to-your-ixp-manager && php artisan schedule:run >> /dev/null 2>&1
You can see the full schedule in code here (look for the function protected function schedule(Schedule $schedule)).
Tasks Referenced Elsewhere
We use a jitter function to randomise the minute at which tasks run to avoid stampeding remote services. This jitter is static for each installation.
The following tasks are run via this mechanism and are referenced elsewhere in the documentation:
- Uploading MRTG traffic data to the database - documented in the Grapher MRTG backend page - and runs nightly at 02:00. NB: there are email reports that can be added to cron that are not part of the scheduler - see the same page for details on this.
- IRRDB prefix and ASN database for generating route server filters - this is all documented on the IRRDB page. NB: the scheduler will not run unless you have configured the location of BGPQ3 as per the instructions. This runs every 6 hours.
- Telescope is a debugging / error tracking tool within IXP Manager. In production, it is limited to recording exceptions and other errors. It puts data into a database table of which anything over three days is expunged via the Artisan command
telescope:prunedaily. - The OUI database is updated weekly (Mondays at 09:15).
- Polling / updating switch and switch port details (see documentation here) happens every five minutes.
- Update the record of which customers have / have not PeeringDB records.
- Update the record of which customers are / are not participating in MANRS.
Other Tasks
Expunging Logs
Some data should not be retained indefinitely for user privacy / GDPR / housekeeping reasons. The utils:expunge-logs command runs daily at 03:04 and currently:
- removes user login history older than 6 months;
- removes user API keys that expired >3 months ago;
- removes expired user remember tokens.