14.2. Uptime Kuma

We use https://github.com/louislam/uptime-kuma to monitor public server and service availability. We run two servers:

14.2.1. Monitoring servers

We monitor server availability using “PING”:

  • gv.taler.net

  • firefly.gnunet.org

  • pixel.anastasis.lu

14.2.2. Monitoring websites

For most websites, we simply use the HTTP(s) monitor. Make sure to enable advance notice for TLS certificate expiration. Sites to monitor include:

  • anastasis.lu

  • docs.anastasis.lu

  • webui.anastasis.lu

  • gnunet.org

  • bib.gnunet.org

  • bugs.gnunet.org

  • docs.gnunet.org

  • gana.gnunet.org

  • git.gnunet.org

  • grafana.gnunet.org

  • lsd.gnunet.org

  • taler.net

  • bugs.taler.net

  • demo.taler.net

  • docs.taler.net

  • git.taler.net

  • mattermost.taler.net

  • sandstorm.taler.net

  • test.taler.net

  • tutorials.taler.net

  • weblate.taler.net

  • taler-ops.ch

  • taler-systems.com

  • schanzen.eu

14.2.3. Monitoring REST APIs

For simple REST APIs, we simply use the HTTP(s) monitor on the /config endpoint. Make sure to enable advance notice for TLS certificate expiration. APIs to monitor include:

  • v1.anastasis.lu

  • backend.demo.taler.net

  • backend.head.taler.net

  • backend.test.taler.net

14.2.4. Monitoring services

We also monitor the following services using the HTTP(s) monitor on the “/” endpoint:

  • davical.taler.net

  • fcfs.gnunet.org

14.2.5. Monitoring exchanges

To monitor an exchange, we want to not merely monitor that the REST API is operational, but also check that the /keys response is not outdated. This can be done by computing the minimum expiration time over all of the maxima of the different keys in the response. For an exchange with P2P payments enabled, the HTTP(S) - JSON Query method can be used using the following query written in https://jsonata.org/:

$min($append($append(
    [$max($map(global_fees, function($f) { $f.end_date.t_s}))],
    [$max($map(signkeys, function($f) { $f.stamp_expire.t_s}))]),
    [$max($map(denominations,
        function ($a){
          $max($map($a.denoms,
               function ($d){
                   $d.stamp_expire_withdraw.t_s
               }
          ))
        }
  ))])) > $millis()/1000

Exchanges to monitor include:

  • exchange.taler-ops.ch

  • exchange.e.netzbon-basel.ch

  • exchange.demo.taler.net

  • exchange.head.taler.net

  • exchange.test.taler.net