go-tinystatus
go-tinystatus reimplements tinystatus - a shell script generating a html
status page - in Golang.
Why ? I really love the concept on tinystatus; generates the smallest HTTP page as possible with minimal
dependencies. But, because it still requires some dependencies (nc, curl, coreutils and ... an HTTP server), I
wanted to remove all remaining dependencies.
Features
tinystatus Parallel checks
go-tinystatus Group several checks by category
tinystatus HTTP, ping, port checks
tinystatus HTTP expected status code (401, ...)
tinystatus Minimal dependencies (curl, nc and coreutils)
tinystatus Easy configuration and customisation
tinystatus Tiny (~1kb) optimized result page
tinystatus Incident history (manual)
go-tinystatus Self-embedded web server
go-tinystatus Automatic update of checks and incidents
Unavailable features
go-tinystatus cannot handle ping6 checks
- But it is possible to use
ping with an IPv6 target (cannot force IPv6).
go-tinystatus cannot be setup using environment variable
- But it uses flags instead. See
--help for more information.
Demo
Because go-tinystatus use the same HTML code that tinystatus, you can see a demo on
its README.md : tinystatus
Setup
To install go-tinystatus:
- Clone the repository and go to the created directory
- Build the project with
go build .
- Edit the checks file
checks.csv
- To add incidents or maintenance, edit
incidents.txt
- Generate status page
./go-tinystatus > index.html and serve the page with your favorite web server
- Or run the embedded web server with
./go-tinystatus --daemon
Configuration file
The syntax of checks.csv file is:
Command, Expected Code, Status Text, Host to check, Category
Command can be:
http - Check http status
ping - Check ping status
port or tcp - Check open port status
There are also http4, http6, ping4, ping6, port4, port6 for IPv4 or IPv6 only check.
Note: ping6 is not available on go-tinystatus, but you can use ping with an IPv6 target.