DEV Community

Cover image for Downtime, a simple uptime/response time monitor using GitHub actions
lowlighter πŸ¦‘
lowlighter πŸ¦‘

Posted on • Updated on

Downtime, a simple uptime/response time monitor using GitHub actions

Hi there πŸ‘‹,

This is a small presentation of one of my recent projects : Downtime, an uptime/response time monitor.

It generates SVG badges that you can use anywhere to display whether your server is up or not :

Alt Text

The real badges are actually transparents, rendering nice on both light/dark mode

πŸ“¦ How to setup (< 2min) ?

It is based on the Keep It Simple Stupid philosophy, so it's super-straightforward :

0: Fork the repository
1: Edit the config.yml to add your hosts

The config.yml is just a list of domain/server/ip/port you want to monitor :

  # Check if is up
  - name:
    title: Google

  # Check if a given url is up
  - name:
    title: Downtime repository

  # Test an ip/domain with port using ncat (any protocol)
  - name: ""
    title: Google DNS
    port: 53
    use: ncat
Enter fullscreen mode Exit fullscreen mode

2: (optional) You can also enable GitHub pages and get a webpage with all your servers status !

βš™οΈ How does it works ?

A GitHub action workflow is ran each 5 minutes, testing connections with the hosts you specified in config.yml. It can either use curl (for HTTP/HTTPS) or ncat/telnet (any protocol). It records if target is reachable and its response time.

Since it use the default GITHUB_TOKEN to update connection results, there is no need to create an additional personal token, keeping your account safe.

You can also set the repository private, keeping only the GitHub pages and the badges to embed elsewhere.

✨ Inspiration

This has been inspired a lot by upptime, but I didn't liked the fact you needed a token with a lot of permissions (especially since the workflow update itself so you need to put a lot of trust in maintainers) and that you couldn't get a status badge to tell whether your server is up or not.

Thanks for reading !
If you like generated SVG images, you may also checkout GitHub metrics !

Top comments (0)