uptimeatomic/README.md

2.2 KiB

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

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