Commit Briefs

5393330f4e mischa

change code location from code to got (main)


649a19f677 mischa

change code location from code to got


4b134b0049 mischa

change link in LICENSE


9ce8d96b3b mischa

add logic to move pastincidents to seperate page



21c7f4b729 mischa

trim example pastincidents.txt


93d6435b63 mischa

add example incident


bcdd495e45 mischa

replaced some static rss.xml for RSSFILE var


acea22e3a8 mischa

change 1 ping to 3


2282d1fffb mischa

change release #


Branches

Tags

This repository contains no tags

Tree

.gitignorecommits | blame
LICENSEcommits | blame
README.mdcommits | blame
checks.csvcommits | blame
favicon.icocommits | blame
incidents.txtcommits | blame
pastincidents.txtcommits | blame
status/
uptimeatomic*commits | blame
uptimeatomic.conf-examplecommits | blame

README.md

# 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
```