taler-docs

Documentation for GNU Taler components, APIs and protocols
Log | Files | Refs | README | LICENSE

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).