uptime-kuma.rst (3842B)
1 .. 2 This file is part of GNU TALER. 3 Copyright (C) 2024 Taler Systems SA 4 5 TALER is free software; you can redistribute it and/or modify it under the 6 terms of the GNU Affero General Public License as published by the Free Software 7 Foundation; either version 2.1, or (at your option) any later version. 8 9 TALER is distributed in the hope that it will be useful, but WITHOUT ANY 10 WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR 11 A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details. 12 13 You should have received a copy of the GNU Affero General Public License along with 14 TALER; see the file COPYING. If not, see <http://www.gnu.org/licenses/> 15 16 @author Christian Grothoff 17 18 Uptime Kuma 19 ########### 20 21 We use https://github.com/louislam/uptime-kuma to monitor public server and service 22 availability. We run two servers: 23 24 - https://uptimekuma.anastasis.lu/ monitors almost everything, and is our production 25 monitor hosted by Anastasis SARL. 26 27 - https://uptimekuma.taler.net/ is our secondary monitor, which monitors the 28 production monitor. 29 30 31 Monitoring servers 32 ================== 33 34 We monitor server availability using "PING": 35 36 - gv.taler.net 37 - firefly.gnunet.org 38 - pixel.anastasis.lu 39 40 Monitoring websites 41 =================== 42 43 For most websites, we simply use the HTTP(s) monitor. Make sure to enable advance 44 notice for TLS certificate expiration. Sites to monitor include: 45 46 - anastasis.lu 47 - docs.anastasis.lu 48 - webui.anastasis.lu 49 - gnunet.org 50 - bib.gnunet.org 51 - bugs.gnunet.org 52 - docs.gnunet.org 53 - gana.gnunet.org 54 - git.gnunet.org 55 - grafana.gnunet.org 56 - lsd.gnunet.org 57 - taler.net 58 - bugs.taler.net 59 - demo.taler.net 60 - docs.taler.net 61 - git.taler.net 62 - mattermost.taler.net 63 - sandstorm.taler.net 64 - test.taler.net 65 - tutorials.taler.net 66 - weblate.taler.net 67 - taler-ops.ch 68 - taler-systems.com 69 - schanzen.eu 70 71 Monitoring REST APIs 72 ==================== 73 74 For simple REST APIs, we simply use the HTTP(s) monitor on the /config endpoint. 75 Make sure to enable advance notice for TLS certificate expiration. APIs to monitor include: 76 77 - v1.anastasis.lu 78 - backend.demo.taler.net 79 - backend.head.taler.net 80 - backend.test.taler.net 81 82 83 Monitoring services 84 =================== 85 86 We also monitor the following services using the HTTP(s) monitor on the "/" endpoint: 87 88 - davical.taler.net 89 - fcfs.gnunet.org 90 91 92 Monitoring exchanges 93 ==================== 94 95 To monitor an exchange, we want to not merely monitor that the REST API is operational, 96 but also check that the ``/keys`` response is not outdated. This can be done by computing 97 the minimum expiration time over all of the maxima of the different keys in the response. 98 The HTTP(S) - JSON Query method can be 99 used using the following query written in https://jsonata.org/: 100 101 .. code-block:: text 102 103 $min($append( 104 [$max($map(signkeys, function($f) { $f.stamp_expire.t_s}))], 105 [$max($map(denominations, 106 function ($a){ 107 $max($map($a.denoms, 108 function ($d){ 109 $d.stamp_expire_withdraw.t_s 110 } 111 )) 112 } 113 ))])) > $millis()/1000 114 115 We setup a separate monitor to check that wire fees are working 116 (sure, they can be combined, but this way we can get a more precise alert): 117 118 .. code-block:: test 119 120 $max(wire_fees[*].[*].end_date.t_s) > $millis()/1000 121 122 To separate-out global fees monitoring (which is not present on all systems), 123 we also use (except on GLS, which doesn't support P2P): 124 125 .. code-block:: test 126 127 $max(global_fees[*].end_date.t_s) > $millis()/1000 128 129 Exchanges to monitor include: 130 131 - exchange.taler-ops.ch 132 - exchange.e.netzbon-basel.ch 133 - exchange.demo.taler.net 134 - exchange.head.taler.net 135 - exchange.test.taler.net 136 137 138 Tagging monitors 139 ================ 140 141 We tag each monitor with the host that the service 142 is running on (e.g. firefly.gnunet.org).