Beszel : une solution de supervision open source, légère et moderne pour vos serveurs

Supervision

Beszel : une solution de supervision open source, légère et moderne pour vos serveurs

Beszel, c’est le nom d’une solution de supervision open source qui se distingue par sa légèreté et sa simplicité de déploiement. Elle ne conviendra pas à tout le monde, mais Beszel offre une réelle alternative aux solutions de supervision historiques.

La surveillance d’une infrastructure est une brique indispensable, si ce n’est que pour suivre les performances des serveurs et évaluer le niveau de charge. Cependant, déployer une solution complète et ultra-polyvalente peut s’avérer disproportionné pour certains besoins. C’est là que la solution Beszel présente un intérêt : supervision de quelques VPS ou encore un Homelab avec peu de services (auto-hébergement). L’intérêt étant d’avoir un minimum de supervision tout en limitant la consommation de ressources par l’outil de monitoring, car elle doit rester anecdotique.

Beszel est capable de suivre les métriques essentielles : CPU, mémoire vive, stockage, bande passante réseau, load average, GPU, ou encore la température du matériel. Il est aussi capable de suivre l’état des conteneurs Docker. Vous pouvez configurer des alertes pour recevoir une notification lorsqu’une anomalie est détectée. La solution intègre d’autres fonctionnalités intéressantes, comme la prise en charge de l’authentification OIDC et la sauvegarde automatique (y compris vers du S3).

Dans ce tutoriel, nous allons découvrir comment installer le serveur Beszel (appelé Hub), et comment déployer un agent Beszel pour commencer à monitorer une première machine.

Comprendre l’architecture de Beszel

Il est important de savoir comment Beszel fonctionne. Contrairement à des outils “agentless” qui utilisent un protocole comme SNMP, Beszel repose sur une architecture client-serveur classique :

  1. Le Hub (serveur) : c’est l’interface de gestion centrale. Il stocke les métriques dans une base de données locale et présente un tableau de bord web. Il est à noter que le Hub est basé sur PocketBase, un backend open source.
  2. L’Agent (client) : c’est un composant à installer sur les machines à surveiller. Il collecte les métriques système (CPU, RAM, Disque, Réseau) et les informations spécifiques à Docker, puis les transmet au Hub.

Si vous souhaitez surveiller une seule et unique machine, vous devez donc installer le Hub et l’agent ensemble sur cette machine. Sinon, vous pouvez installer le Hub sur une machine et déployer vos agents.

L’agent Beszel est multi-OS, car au-delà des images Docker et Podman, il existe aussi des binaires pour plusieurs systèmes d’exploitation : Linux, FreeBSD, macOS (via Homebrew), et même Windows (via WinGet et Scoop).

Installation du serveur Beszel

L’installation du Hub Beszel peut être réalisée à partir d’une image Docker (ou de Podman), mais il y a aussi des binaires Go pour Linux et FreeBSD. Ces différentes possibilités pour l’installation permettent de l’exécuter sur différents OS ou une plateforme comme un NAS.

Pour ma part, l’objectif est le suivant : installer le serveur Beszel (Hub) et l’agent Beszel sur la même machine Linux pour la supervision locale. En complément, un agent Beszel sera déployé sur un NAS Synology. Le tout sera déployé à l’aide de Docker et je vais le faire volontairement en deux temps pour vous montrer l’approche de déploiement sur plusieurs hôtes.

Si vous souhaitez déployer le serveur et l’agent en même temps, sur la même machine, récupérez le Docker Compose de la documentation officielle (section “docker-compose.yml config including local agent“).


Ici, l’installation sur Linux via Docker Compose sera détaillée pour les deux composants. Ce sera fait en deux temps, car il faut déjà monter le serveur avant de déployer un agent.

Créez le répertoire suivant pour le projet du serveur, ainsi qu’un sous-répertoire pour stocker les données.


Créez ensuite le fichier sous :


Insérez la configuration suivante. Notez que nous utilisons l’image officielle fournie par le développeur. Le conteneur sera en écoute sur le port .


Dans le cas où vous souhaitez le publier avec le reverse proxy Traefik, voici un exemple de configuration :


Enregistrez et fermez le fichier.

Lancez la stack Docker Compose avec la commande habituelle :


Vérifiez que le conteneur est actif avec . Si c’est bon, vous pouvez passer à la configuration initiale.

Ouvrez un navigateur puis accédez à l’adresse suivante : . Si vous utilisez un reverse proxy, précisez l’adresse correspondante.

Vous devez commencer par créer un compte administrateur de la plateforme Beszel.

Une fois connecté, vous arrivez sur une interface épurée : pour l’instant, c’est vide. Le tableau de bord est conçu pour afficher une vue d’ensemble de tous vos systèmes, mais il faut pour cela déployer un agent.

Déployer un agent Beszel avec Docker

Depuis la page d’accueil de Beszel, vous devez cliquer sur le bouton “Ajouter un système” pour connecter un premier agent à votre serveur Hub. Ce qui est pratique, c’est que le Hub génère la commande d’installation pour vous. Vous avez le choix entre l’installation par Docker ou via un binaire (donc une commande à lancer et une installer sur l’OS directement).

Ici, l’agent Beszel sera également déployé via Docker. Il convient de préciser :

  • Nom : le nom d’affichage du serveur, par exemple SRV-DOCKER-DEMO
  • Host / IP : l’adresse IP ou le nom de domaine de la machine cible, ici c’est en local donc . Si l’agent n’est pas sur la même machine que le Hub, indiquez l’adresse IP ou le nom permettant de contacter le serveur Hub.
  • Port : laissez par défaut (45876).

Il y a également deux informations importantes : la clé publique et le jeton (token). Ces informations sont uniques pour chaque agent et elles jouent un rôle clé : le serveur Hub se connecte à l’agent via SSH (authentification par clé publique) et l’agent peut se connecter au Hub via WebSocket sécurisé.

Vous devez cliquer sur le bouton “Copier docker compose” pour obtenir le code prêt à l’emploi permettant de déployer l’agent. Cliquez sur “Ajouter un système“, la suite se passe côté client.

Ici, ce sera sur le même serveur. Je décide donc de créer un autre répertoire dédié à l’agent, ainsi qu’un sous-répertoire pour la persistance des données de l’agent.


Créez un fichier nommé sous . Ajoutez ce contenu :


Ici, nous pouvons constater que les variables d’environnement sont préconfigurées avec les valeurs obtenues depuis le serveur.

J’attire votre attention sur la section de ce Docker Compose. Au-delà de définir le dossier pour la persistance des données, elle sert aussi à deux choses :

  • Effectuer la surveillance de Docker en connectant l’agent Beszel au socket Docker,
  • Ajouter la surveillance de disques supplémentaires en les mappant dans le conteneur.

Si vous avez besoin de surveiller l’état d’un GPU Nvidia ou Intel, il y a des étapes de configuration supplémentaires, voire même une image spécifique pour Intel. Référez-vous à la documentation à ce sujet.

Enregistrez et fermez le fichier.

Lancez la construction du projet :


Votre agent doit remonter sur l’interface de Beszel et la collecte des métriques doit débuter. Si vous cliquez sur l’hôte, vous pourrez visualiser les graphes.

Au fur et à mesure que le temps passe, la supervision va prendre forme. Vous n’avez rien à configurer, Beszel va de lui-même suivre la consommation de RAM, CPU, réseau, etc… sur votre machine.

Par défaut, Beszel affiche les informations de la dernière heure. Néanmoins, c’est personnalisable grâce au bouton situé en haut à droite. Vous pouvez afficher l’état de la machine selon différents intervalles de temps : 1 minute (ce qui correspond à l’affichage temps réel), 1 heure, 12 heures, 24 heures, 1 semaine, ou 30 jours.

Voilà, votre agent Beszel est prêt ! Vous pouvez en déployer d’autres sur le même principe (sur un NAS Synology, cela fonctionne très bien) !

Déployer un agent Beszel sur Windows

Pour déployer un agent sur Windows, de façon native, c’est-à-dire sans utiliser Docker, vous devez choisir le mode “Binaire“. C’est d’ailleurs une méthode applicable aussi à Linux et Mac pour se passer de Docker. Vous n’avez qu’à ajouter un système et à copier la commande correspondante à votre système. Au niveau du champ “Hôte / IP“, veillez à indiquer l’adresse à laquelle est joignable le serveur Beszel.

Par exemple, pour Windows, cela donne une commande comme celle-ci :


Une fois l’agent déployé, la machine Windows (ou Windows Server) commence à être supervisée par Beszel.

Configuration de Beszel

Je vous encourage à parcourir la section des paramètres de l’application. Ce sera l’occasion de personnaliser la plateforme Beszel, que ce soit pour modifier la période par défaut des graphes, changer la langue, ou encore ajuster les unités.

C’est également ici que vous pouvez configurer comment recevoir des notifications, bien que la configuration ne s’effectue pas directement ici, mais dans PocketBase. Vous pouvez définir des plages horaires pendant lesquelles vous ne souhaitez pas recevoir de notifications. Les notifications sont simples, elles contiennent le nom de l’hôte, le type d’alerte et un texte comme “CPU averaged 94.93% for the previous 5 minutes.“. Mais, au moins, vous avez l’information.

Si vous cliquez sur le lien “configurer un serveur SMTP“, vous serez redirigé vers l’interface PocketBase. Connectez-vous avec votre compte Beszel, puis configurez les paramètres SMTP. Attention, pour Gmail, utilisez “LOGIN” comme “Auth method“.

La section “Tokens et empreintes” permet d’afficher la liste de vos agents ainsi que les informations d’authentification associées. Vous pouvez même déclencher la rotation d’un secret ou effectuer la suppression côté serveur.

Sans oublier l’historique des alertes accessible directement depuis le Web.

Pour les autres paramètres de configuration, comme l’activation des sauvegardes locales ou vers un S3, ou la création d’utilisateurs supplémentaires, vous devez aussi passer par PocketBase. Quand vous cliquez sur votre avatar en haut à droite, le menu qui apparaît vous redirigera justement vers les bonnes sections dans PocketBase.

Configuration des alertes

Superviser c’est bien, être prévenu en cas de problème c’est mieux. Beszel intègre un système d’alerting simple mais efficace. Il se configure au niveau de chaque système (ou au niveau global), c’est-à-dire chaque agent, mais via l’interface du serveur.

Depuis la page d’accueil, cliquez sur la cloche en bout de ligne sur l’un des systèmes. Un panneau latéral s’affiche. Il permet de configurer les alertes pour le système sélectionné ou pour tous les systèmes. Le système est basique mais suffisant pour être alerté en cas de problème sur le serveur supervisé.

Par exemple, si le serveur est injoignable pendant 1 minute, vous pouvez recevoir une alerte. Autre exemple : recevoir une alerte si le processeur dépasse 80% pendant 5 minutes. À vous de configurer les différents seuils, selon vos besoins.

Conclusion

Beszel réussit le pari de proposer une solution de supervision facile à installer et à utiliser. Quelques minutes suffisent pour déployer la solution ! Ce logiciel est open source et entièrement gratuit.

Bien qu’il ne remplace pas des solutions d’entreprise granulaires pour des infrastructures critiques complexes nécessitant des corrélations de logs poussées, il excelle dans son domaine : fournir des métriques claires, rapides et historiques avec un effort minimal. En complément, vous pourriez lui associer Uptime Kuma pour le monitoring des services web : c’est un duo complémentaire.

Pour explorer toutes les fonctionnalités et options, suivez ces liens :

SOURCE