En plus d’un monitoring des machines, un monitoring des services est une bridque indispensable à n’importe quel système d’information. Ici je présente mon utilisation de Uptime Kuma.

Dans la continuité de la constuction de mon homelab j’ai choisi Uptime Kuma pour monitorer mes services et me notifier en cas de panne.

Dashboard de Uptime Kuma

Fonctionnalités

Les sondes pull

Reposant sur la logique du scraping, Kuma va effectuer une requête pour interroger si un service est disponible.

Cette requête peut par exemple être un GET HTTP qui servira à vérifier le code de retour, généralement un 2XX et considérer le service KO en l’absence de retour ou si le code est un 4XX ou 5XX. La requête peut également être plus génériquement basée TCP et vérifier si une base de données est accessible, si un broker MQTT est disponible ou n’importe quelle autre configuration «pull».

Les sondes push

Quand un service n’est pas exposé sur internet l’inverse d’un «pull» est un «push», c’est au service de notifier Kuma qu’il est toujours disponible. S’il n’envoie plus de requête après un temps défini il sera considéré KO.

Formulaire de création d’une sonde push

Une page de statut

Une feature appréciée des outils de monitoring est de pouvoir exposer l’état d’un service en particulier sur une page simple. Si vos visiteurs voient que votre n’est plus accessible, vous pouvez communiquer sur cette page et ils verront automatiquement que le problème ne vient pas d’eux.

Si une partie de vos sondes est privée, c’est mon cas vous pouvez faire des groupes et gérer une page de statut uniquement pour ce groupe.

Exemple de page de statut

Les notifications

Un dernier point important que j’ai apprécié sur Kuma c’est de pouvoir rediriger les notifications en cas d’indisponibilité sur un service tiers. J’ai choisi de centraliser les notifications sur Home Assistant pour directement les recevoir sur mobile.

Pour aller plus loin

Pour le moment j’ai réalisé toute ma configuration à travers le front web. Dans une approche homelab facilement déploiement et backup-able j’aimerais avoir un meilleur moyen de déployer, idéalement avec une configuration basée texte. En regardant rapidement, la configuration semble stockée dans une base sqlite ce qui n’est pas idéal pour versionner un déploiement automatisé.