Skip to content

xunleii/go-tinystatus

Repository files navigation

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.

About

tinystatus but in Go

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Languages