# Argos 🚧 This is mainly a work in progress for now. It's not working, don't try to install it ! 🚧 Argos is an HTTP monitoring service. It's meant to be simple to configure and simple to use. Features : - [x] Uses `.yaml` files for configuration ; - [x] Read the configuration file and convert it to tasks ; - [x] Store tasks in a database ; - [ ] Checks can be distributed on the network thanks to a job queue ; - [x] Multiple paths per websites can be tested ; - [ ] Handles multiple alerting backends (email, sms, gotify) ; - [ ] Exposes an HTTP API that can be consumed by other systems ; - [ ] Exposes a simple read-only website. Implemented checks : - [ ] Returned status code matches what you expect ; - [ ] Returned body matches what you expect ; - [ ] SSL certificate expires in more than X days ; ## Development notes ### On service start. 1. Read the job definitions file and populate the database. 2. From the job definition, create a list of tasks to execute. 3. From time to time (?) clean the db. ### On configuration changes : - Find and tombstone the JobDefinitions that are not useful anymore. - Cascade delete the child tasks that are planned. Tombstone them as wel. ### On worker demand : - Find the tasks for which : - last_check is not defined - OR last_check + max_timedelta > datetime.now() - AND selected_by not defined. - Mark these tasks as selected by the current worker, on the current date. ### From time to time: - Check for stalled tasks (datetime.now() - selected_at) > MAX_WORKER_TIME. Remove the lock. ### On the worker side Hey, I'm XX, give me some work. OK, this is done, here are the results for Task: response.