Uptime Kuma

    Fonctionnement🔗

    Uptime Kuma est notre outil de supervision externe : hébergé sur un serveur distant de nos autres machines, il envoie régulièrement des requêtes sur nos services et vérifie si la réponse transmise correspond bien au résultat attendu. Il peut vérifier le code de statut HTTP renvoyé (en général, 200 indique que le service est fonctionnel) ou bien le contenu de la réponse en elle-même. Il envoie ses requêtes sur des URL définies en amont.

    Historique🔗

    Nous avons installé le service Uptime Kuma en août 2022 dans le but de remplacer un autre logiciel de supervision que nous utilisions auparavant : statping, qui n’est plus maintenu − nous découvrirons plus tard l’existence de son successeur statping-ng. Uptime Kuma est installé sur Sarus.

    Installation🔗

    Nous utilisons l’image officielle louislam/uptime-kuma sans modification ; voir son dossier dans le dépôt Core.

    Uptime Kuma utilise une base de données SQLite et ce format ne pose a priori pas de problème pour notre utilisation du service.

    Nous avons configuré Uptime Kuma pour vérifier le statut de chacun de nos services, parfois de certains composants de ces services si nécessaire, mais également de services tiers que nous utilisons (comme Mastodon ou PeerTube).

    Enfin, nous recevons des notifications lorsque Uptime Kuma détecte un service inaccessible :

    • sur Matrix, dans un canal dédié à la supervision ;
    • par email, sur une adresse de secours qui n’est pas hébergée sur le service Mail.

    Tests🔗

    Par prudence, nous supervisons notre supervision à l’aide d’une instance Healthchecks hébergée par un autre membre CHATONS. Cette plateforme tierce nous envoie un email lorsque l’un de nos serveurs est injoignable, y compris le serveur hébergeant Uptime Kuma.

    Pour tester le fonctionnement d’Uptime Kuma, il suffit d’ouvrir la page du service dans un navigateur.

    Consommation de ressources🔗

    Uptime Kuma consomme en moyenne 130 Mo de RAM en production et très peu de CPU, c’est un service plutôt léger.

    Son volume Docker pèse 200 Mo en production mais contient essentiellement des sauvegardes de sa base de données, que Uptime Kuma effectue automatiquement avant une mise à jour. Sa base de données kuma.db pèse 30 Mo − les copies peuvent être supprimées une fois la mise à jour réussie.

    Précautions🔗

    La fréquence des sondes paramétrées dans le logiciel peut potentiellement impacter le service sondé ou générer beaucoup de trafic pour simplement vérifier son état.

    Voici quelques conseils pour choisir correctement la route à sonder pour chaque service :

    • privilégier les routes « healthcheck » si elles existent dans le logiciel − c’est le cas de Matrix ou Nextcloud, par exemple ;
    • éviter d’utiliser des routes vers des pages entières qui nécessitent beaucoup de ressources pour être générées ;
    • éviter d’utiliser des routes vers des éléments de grande taille (images ou tout contenu de plus de 50 Ko) ;
    • éviter d’utiliser des assets statiques de la page pour vérifier si un service fonctionne (sauf s’il s’agit du surveiller l’état d’un site statique), car ces assets sont souvent servis de manière décorrélée du reste (reverse-proxy, cache côté serveur…) et ne reflètent pas nécessairement l’état réel du service, en particulier s’il dépend d’une base de données ou d’un stockage distant ;
    • de manière générale : privilégier les routes qui testent le service plutôt que le serveur HTTP qui sert ledit service.

    Bien évidemment, chaque route choisie doit faire l’objet d’un test : interrompre le service supervisé − lorsque c’est possible − devrait déclencher une alerte.

    Entretien🔗

    Pour garantir le bon fonctionnement de cet outil de supervision, quelques informations sont à vérifier de temps à autre (une fois par trimestre ?) :

    • que toutes les sondes actuellement saisies dans le logiciel pointent bien vers des services que nous utilisons ou hébergeons toujours ;
    • que les sondes permettent bien de savoir si un outil est fonctionnel ou non (à vérifier à chaque panne constatée) ;
    • que tous les services sont bien sondés (s’il y a de nouveaux services, il est nécessaire de les ajouter).

    Mise à jour🔗

    Le processus de mise à jour de Uptime Kuma consiste à lire les notes de version de l’application pour vérifier d’éventuelles incompatibilités, puis à télécharger la nouvelle image et redémarrer le conteneur.

    Une fois la mise à jour effectuée, la sauvegarde de la base de données (automatiquement réalisée par Uptime Kuma) peut être supprimée dans son volume.