14.2. Uptime Kuma¶
We use https://github.com/louislam/uptime-kuma to monitor public server and service availability. We run two servers:
https://uptimekuma.anastasis.lu/ monitors almost everything, and is our production monitor hosted by Anastasis SARL.
https://uptimekuma.taler.net/ is our secondary monitor, which monitors the production monitor.
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