# Uptime Atomic uptimeatomic alerts when downtime happens and generates an html status page via shell script. ## Features * Parallel checks * HTTP, ping, port checks * HTTP expected status code (401, ...) * Minimal dependencies (curl, nc and coreutils) * Easy configuration and customisation * Tiny (~1kb) optimized result page * Incident and maintenance history (manual) * RSS feed for incidents and maintenance messages * Crontab friendly ## Demo An example site is available [here](https://ops.lowfive.nl/) ## Setup To install uptimeatomic: * Clone the repository and go to the created directory * Edit `uptimeatomic.conf` variables to your liking * Edit the checks file `checks.csv` * To add incidents or maintenance, edit `incidents.txt` * To add past incidents or maintenance, edit `pastincidents.txt` * Generate status page `./uptimeatomic` * Serve the page with your favorite web server ## Configuration file The syntax of `checks.csv` file is: ``` Command, Expected Code, Status Text, Host to check, Timeout (sec) http, 200, Google Website, https://google.com,20 maint, 200, Google Drive Maintenance, https://drive.google.com ping, 0, Google ping, 8.8.8.8 port, 0, Google DNS, 8.8.8.8 53 ``` Command can be: * `http` - Check http status * `ping` - Check ping status * `port` - Check open port status * `maint` - Host is in maintance There are also `http4`, `http6`, `ping4`, `ping6`, `port4`, `port6` for IPv4 or IPv6 only check. Note: `port4` and `port6` require OpenBSD `nc` binary. The default timeout is set in `uptimeatomic` but can be set in `checks.csv` per host. ## Incidents / Maintenance The syntax of the `incidents.txt` and `pastincidents.txt` files is: ``` Datetime, Type, Description 202305231230, Incident, There was a service disruption on 2023-05-23 at 12:23 UTC 202306031700, Maintenance, Server maintenance is scheduled on 2023-07-13 at 00:00 UTC ``` ## Parameters ``` ./uptimeatomic -c CHECKFILE -i INCIDENTSFILE -p PASTINCENTSFILE -o HTMLFILE -r RSSFILE Default: -c = checks.csv (default) -i = incidents.txt (default) -p = pastincidents.txt (default) -o = index.html (default) -r = rss file (no default, optional) ``` For example: ``` ./uptimeatomic -c services.csv -o status.html -r rss.xml ```