Un hub léger de surveillance des ressources du serveur avec des données historiques, des statistiques Docker et des alertes.
Léger : Plus petit et moins gourmand en ressources que les solutions leaders.
Simple : configuration facile, pas besoin d’exposition publique sur Internet.
Statistiques Docker : suit l'historique d'utilisation du processeur, de la mémoire et du réseau pour chaque conteneur.
Alertes : alertes configurables pour le processeur, la mémoire, le disque, la bande passante, la température et l'état du système.
Multi-utilisateur : Chaque utilisateur gère ses propres systèmes. Les administrateurs peuvent partager des systèmes entre utilisateurs.
OAuth / OIDC : prend en charge plusieurs fournisseurs OAuth2. L'authentification par mot de passe peut être désactivée.
Sauvegardes automatiques : enregistrez et restaurez les données à partir d'un disque ou d'un stockage compatible S3.
API REST : Utilisez ou mettez à jour vos données dans vos propres scripts et applications.
Beszel se compose de deux composants principaux : le hub et l'agent.
Hub : application Web qui fournit un tableau de bord pour visualiser et gérer les systèmes connectés. Construit sur PocketBase.
Agent : s'exécute sur chaque système que vous souhaitez surveiller, créant un serveur SSH minimal pour communiquer les métriques du système au hub.
Si vous n'utilisez pas Docker, ignorez les étapes 4 à 5 et exécutez l'agent à l'aide du binaire.
Démarrez le hub (voir installation).
Ouvrez http://localhost:8090 et créez un utilisateur administrateur.
Cliquez sur "Ajouter un système". Entrez le nom et l'hôte du système que vous souhaitez surveiller.
Cliquez sur « Copier docker compose » pour copier le fichier docker-compose.yml de l'agent dans votre presse-papiers.
Sur le système d'agent, créez le fichier de composition et exécutez docker compose up
pour démarrer l'agent.
De retour dans le hub, cliquez sur le bouton « Ajouter un système » dans la boîte de dialogue pour terminer l'ajout du système.
Si tout se passe bien, le système devrait passer au vert. S'il devient rouge, consultez la page Journaux et reportez-vous aux conseils de dépannage.
Pour le tutoriel en français, consultez https://belginux.com/installer-beszel-avec-docker/
Vous pouvez installer le hub et l'agent sous forme de binaires uniques ou à l'aide de Docker.
Hub : Voir l'exemple de fichier docker-compose.yml.
Agent : Le hub fournit du contenu de composition pour l'agent, mais vous pouvez également référencer l'exemple de fichier docker-compose.yml.
L'agent utilise le mode réseau hôte pour accéder aux statistiques de l'interface réseau, ce qui expose automatiquement le port. Modifiez le port à l'aide d'une variable d'environnement si nécessaire.
Si vous n'avez pas besoin de statistiques réseau, supprimez cette ligne du fichier de composition et mappez le port manuellement.
Conseil
Si vous utilisez Linux, consultez guides/systemd.md pour un script permettant d'installer le hub ou l'agent en tant que service système. Ceci est également intégré à l’interface utilisateur Web.
Téléchargez et exécutez les derniers binaires à partir de la page des versions ou utilisez les commandes ci-dessous.
curl -sL "https://github.com/henrygd/beszel/releases/latest/download/beszel_$(uname -s)_$(uname -m | sed 's/x86_64/amd64/' | sed 's/ armv7l/arm/' | sed 's/aarch64/arm64/').tar.gz" | tar -xz -O bezel | tee ./beszel >/dev/null && chmod +x beszel && ls beszel
Exécuter le hub directement :
./beszel servir
curl -sL "https://github.com/henrygd/beszel/releases/latest/download/beszel-agent_$(uname -s)_$(uname -m | sed 's/x86_64/amd64/' | sed ' s/armv7l/arm/' | sed 's/aarch64/arm64/').tar.gz" | tar -xz -O beszel-agent | tee ./beszel-agent >/dev/null && chmod +x beszel-agent && ls beszel-agent
Exécuter l'agent directement :
PORT=45876 KEY="{PASTE_YOUR_KEY}" ./beszel-agent
Utilisez ./beszel update
et ./beszel-agent update
pour mettre à jour vers la dernière version.
Nom | Défaut | Description |
---|---|---|
CSP | désarmé | Ajoute un en-tête Content-Security-Policy avec cette valeur. |
DISABLE_PASSWORD_AUTH | FAUX | Désactive l'authentification par mot de passe. |
Nom | Défaut | Description |
---|---|---|
DOCKER_HOST | désarmé | Remplace l'hôte Docker (docker.sock) si vous utilisez un proxy. 1 |
EXTRA_FILESYSTEMS | désarmé | Se reporter à Surveillance de disques, partitions ou montages à distance supplémentaires |
FILESYSTEM | désarmé | Périphérique, partition ou point de montage à utiliser pour les statistiques du disque racine. |
KEY | désarmé | Clé SSH publique à utiliser pour l'authentification. Fourni dans le hub. |
LOG_LEVEL | infos | Niveau de journalisation. Valeurs valides : "debug", "info", "warn", "error". |
MEM_CALC | désarmé | Remplace le calcul de mémoire par défaut. 2 |
NICS | désarmé | Liste blanche des interfaces réseau à surveiller pour le graphique de bande passante. |
PORT | 45876 | Port ou adresse :port sur lequel écouter. |
SENSORS | désarmé | Liste blanche des capteurs de température à surveiller. |
SYS_SENSORS | désarmé | Remplace le chemin système pour les capteurs. Voir #160. |
Beszel prend en charge OpenID Connect et de nombreux fournisseurs d'authentification OAuth2 (voir liste ci-dessous).
Visitez la page « Fournisseurs d'authentification » pour activer votre fournisseur. L'URL de redirection/rappel doit être
.
Pomme
Bitbucket
Discorde
Gitéa
Gîte
GitHub
GitLab
Kakao
Chat en direct
vache postale
Microsoft
Connexion OpenID
Patreon (v2)
Spotify
Strava
Tic
Gazouillement
VK
Yandex
La méthode d'ajout de disques supplémentaires diffère selon votre méthode de déploiement.
Utilisez lsblk
pour trouver les noms et les points de montage de vos partitions. Si vous rencontrez des problèmes, vérifiez les journaux de l'agent.
Remarque : Les graphiques utiliseront le nom du périphérique ou de la partition s'il est disponible et reviendront au nom du dossier. Vous n'obtiendrez pas de statistiques d'E/S pour les lecteurs montés en réseau.
Montez un dossier du système de fichiers cible dans le répertoire /extra-filesystems
du conteneur. Par exemple:
tomes : - /mnt/disk1/.beszel:/extra-filesystems/sdb1:ro - /dev/mmcblk0/.beszel:/extra-filesystems/mmcblk0:ro
Définissez la variable d'environnement EXTRA_FILESYSTEMS
sur une liste de périphériques, de partitions ou de points de montage séparés par des virgules à surveiller. Par exemple:
EXTRA_FILESYSTEMS="sdb,sdc1,mmcblk0,/mnt/network-share"
Étant donné que Beszel est construit sur PocketBase, vous pouvez utiliser les API Web PocketBase et les SDK côté client pour lire ou mettre à jour des données depuis l'extérieur de Beszel lui-même.
Le hub et l'agent communiquent via SSH, ils n'ont donc pas besoin d'être exposés à Internet. Même si vous placez une passerelle d'authentification externe, telle qu'Authelia, devant le hub, elle ne perturbera ni n'interrompra la connexion entre le hub et l'agent.
Lorsque le hub est démarré pour la première fois, il génère une paire de clés ED25519.
Le serveur SSH de l'agent est configuré pour accepter les connexions utilisant uniquement cette clé. Il ne fournit pas de pseudo-terminal et n'accepte pas d'entrée, il est donc impossible d'exécuter des commandes sur l'agent même si votre clé privée est compromise.
Les administrateurs ont accès à des liens supplémentaires dans le hub, tels que les sauvegardes, les paramètres SMTP, etc. Le premier utilisateur créé est automatiquement un administrateur et peut se connecter à PocketBase.
La modification du rôle d'un utilisateur ne crée pas de compte administrateur PocketBase pour lui. Pour ce faire, accédez à Paramètres > Administrateurs dans PocketBase et ajoutez-les manuellement.
Les utilisateurs peuvent créer leurs propres systèmes et alertes. Les liens vers les paramètres PocketBase ne sont pas affichés dans le hub.
Les utilisateurs en lecture seule ne peuvent pas créer de systèmes, mais peuvent afficher n'importe quel système partagé avec eux par un administrateur et créer des alertes.
En supposant que l'agent est en cours d'exécution, la connexion est probablement bloquée par un pare-feu. Vous avez deux options :
Ajoutez une règle entrante au(x) pare-feu du système agent pour autoriser les connexions TCP au port. Vérifiez tous les pare-feu actifs, comme iptables, et les paramètres de pare-feu de votre fournisseur de cloud, le cas échéant.
Vous pouvez également utiliser un logiciel tel que Cloudflare Tunnel, WireGuard ou Tailscale pour contourner en toute sécurité votre pare-feu.
Vous pouvez tester la connectivité en exécutant telnet
.
Si vous utilisez le mode réseau hôte pour l'agent mais pas pour le hub, ajoutez votre système à l'aide du nom d'hôte host.docker.internal
, qui correspond à l'adresse IP interne utilisée par l'hôte. Voir l'exemple docker-compose.yml.
Si vous utilisez le mode réseau hôte pour les deux, vous pouvez utiliser localhost
comme nom d'hôte.
Sinon, utilisez le container_name
de l'agent comme nom d'hôte si les deux se trouvent sur le même réseau Docker.
Spécifiez le système de fichiers/périphérique/partition pour les statistiques du disque racine à l'aide de la variable d'environnement FILESYSTEM
.
S'il n'est pas défini, l'agent essaiera de trouver la partition montée sur /
et de l'utiliser. Cela peut ne pas fonctionner correctement dans un conteneur, il est donc recommandé de définir cette valeur. Utilisez l'une des méthodes suivantes pour trouver le système de fichiers correct :
Exécutez lsblk
et choisissez une option sous "NOM".
Exécutez df -h
et choisissez une option sous "Système de fichiers".
Exécutez sudo fdisk -l
et choisissez une option sous « Périphérique ».
Si les graphiques conteneurs affichent des données vides ou n'apparaissent pas du tout, vous devrez peut-être activer la comptabilité de la mémoire du groupe de contrôle. Pour vérifier, exécutez docker stats
. Si cela indique une utilisation nulle de la mémoire, suivez ce guide pour résoudre le problème :
https://akashrajpurohit.com/blog/resolving-missing-memory-stats-in-docker-stats-on-raspberry-pi/
Essayez de mettre à niveau votre version de Docker sur le système d'agent. Ce problème a été observé sur une machine exécutant la version 24 et a été résolu par une mise à niveau vers la version 27.
Les enregistrements pour des périodes plus longues sont créés en faisant la moyenne des statistiques de périodes plus courtes. L'agent doit fonctionner sans interruption pour un ensemble complet de données afin de remplir ces enregistrements.
La mise en pause/reprise de l'agent pendant plus d'une minute entraînera des données incomplètes, réinitialisant ainsi le timing de l'intervalle en cours.
Le hub et l'agent sont écrits en Go, vous pouvez donc facilement les créer vous-même ou les compiler de manière croisée pour différentes plates-formes. Veuillez d'abord installer Go si vous ne l'avez pas déjà fait.
Exécutez make
dans /beszel
. Cela crée un répertoire build
contenant les binaires.
cd beszel && faire
Vous pouvez également créer pour différentes plates-formes :
faire OS=freebsd ARCH=arm64
Consultez une liste des options valides en exécutant go tool dist list
.
cd beszel && go mod bien rangé
Accédez à beszel/cmd/agent
et exécutez la commande suivante pour créer un binaire dans le répertoire actuel :
CGO_ENABLED=0 allez build -ldflags "-w -s" .
Le hub intègre l'interface utilisateur Web dans le binaire, vous devez donc d'abord créer le site Web. J'utilise Bun, mais vous pouvez utiliser Node.js si vous préférez :
cd lunette/site installation de chignon construction de chignon
Puis dans beszel/cmd/hub
:
CGO_ENABLED=0 allez build -ldflags "-w -s" .
Vous pouvez effectuer une compilation croisée pour différentes plates-formes à l'aide des variables d'environnement GOOS
et GOARCH
.
Par exemple, pour compiler pour FreeBSD ARM64 :
GOOS=freebsd GOARCH=arm64 CGO_ENABLED=0 allez build -ldflags "-w -s" .
Consultez une liste des options valides en exécutant go tool dist list
.
Les contributions sont les bienvenues, mais c'est une bonne idée de vérifier d'abord avec nous lors d'une discussion/d'un problème si vous envisagez de faire quelque chose d'important.
Nous utilisons Crowdin pour gérer les traductions. Les nouvelles langues ou les améliorations des traductions existantes sont appréciées !
Nous aurons prochainement des informations plus utiles sur la contribution à Beszel.
Beszel est sous licence MIT. Voir le fichier LICENSE pour plus de détails.
Beszel n'a besoin d'un accès que pour lire les informations du conteneur. Pour linuxserver/docker-socket-proxy, vous définiriez CONTAINERS=1
. ↩
La valeur par défaut de la mémoire utilisée est basée sur le calcul Used de gopsutil, qui devrait s'aligner assez étroitement sur free
. Définissez MEM_CALC
sur htop
pour l'aligner sur le calcul de htop. ↩