Ein kompakter Hub zur Überwachung von Serverressourcen mit historischen Daten, Docker-Statistiken und Warnungen.
Leicht : Kleiner und weniger ressourcenintensiv als führende Lösungen.
Einfach : Einfache Einrichtung, keine öffentliche Internetpräsenz erforderlich.
Docker-Statistiken : Verfolgt den CPU-, Speicher- und Netzwerknutzungsverlauf für jeden Container.
Warnungen : Konfigurierbare Warnungen für CPU, Speicher, Festplatte, Bandbreite, Temperatur und Systemstatus.
Mehrbenutzer : Jeder Benutzer verwaltet seine eigenen Systeme. Administratoren können Systeme für mehrere Benutzer freigeben.
OAuth / OIDC : Unterstützt mehrere OAuth2-Anbieter. Die Passwortauthentifizierung kann deaktiviert werden.
Automatische Sicherungen : Speichern und Wiederherstellen von Daten von der Festplatte oder einem S3-kompatiblen Speicher.
REST-API : Verwenden oder aktualisieren Sie Ihre Daten in Ihren eigenen Skripten und Anwendungen.
Beszel besteht aus zwei Hauptkomponenten: dem Hub und dem Agenten.
Hub: Eine Webanwendung, die ein Dashboard zum Anzeigen und Verwalten verbundener Systeme bereitstellt. Auf PocketBase aufgebaut.
Agent: Läuft auf jedem System, das Sie überwachen möchten, und erstellt einen minimalen SSH-Server, um Systemmetriken an den Hub zu übermitteln.
Wenn Sie Docker nicht verwenden, überspringen Sie die Schritte 4–5 und führen Sie den Agenten mit der Binärdatei aus.
Starten Sie den Hub (siehe Installation).
Öffnen Sie http://localhost:8090 und erstellen Sie einen Admin-Benutzer.
Klicken Sie auf „System hinzufügen“. Geben Sie den Namen und Host des Systems ein, das Sie überwachen möchten.
Klicken Sie auf „Docker Compose kopieren“, um die Datei „docker-compose.yml“ des Agenten in Ihre Zwischenablage zu kopieren.
Erstellen Sie auf dem Agentensystem die Compose-Datei und führen Sie docker compose up
aus, um den Agenten zu starten.
Zurück im Hub klicken Sie im Dialog auf die Schaltfläche „System hinzufügen“, um das Hinzufügen des Systems abzuschließen.
Wenn alles gut geht, sollte das System auf Grün umschalten. Wenn es rot wird, überprüfen Sie die Seite „Protokolle“ und lesen Sie die Tipps zur Fehlerbehebung.
Für das Tutorial auf Französisch besuchen Sie bitte https://belginux.com/installer-beszel-avec-docker/
Sie können den Hub und den Agent als einzelne Binärdateien oder mithilfe von Docker installieren.
Hub : Siehe die Beispieldatei „docker-compose.yml“.
Agent : Der Hub stellt Compose-Inhalte für den Agenten bereit, Sie können jedoch auch auf die Beispieldatei „docker-compose.yml“ verweisen.
Der Agent verwendet den Host-Netzwerkmodus, um auf Netzwerkschnittstellenstatistiken zuzugreifen, wodurch der Port automatisch verfügbar gemacht wird. Ändern Sie den Port bei Bedarf mithilfe einer Umgebungsvariablen.
Wenn Sie keine Netzwerkstatistiken benötigen, entfernen Sie diese Zeile aus der Compose-Datei und ordnen Sie den Port manuell zu.
Tipp
Wenn Sie Linux verwenden, finden Sie unter „guides/systemd.md“ ein Skript zur Installation des Hubs oder Agenten als Systemdienst. Dies ist auch in die Web-Benutzeroberfläche integriert.
Laden Sie die neuesten Binärdateien von der Release-Seite herunter und führen Sie sie aus oder verwenden Sie die folgenden Befehle.
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 beszel | tee ./beszel >/dev/null && chmod +x beszel && ls beszel
Den Hub direkt ausführen:
./beszel dienen
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
Den Agenten direkt ausführen:
PORT=45876 KEY="{PASTE_YOUR_KEY}" ./beszel-agent
Verwenden Sie ./beszel update
und ./beszel-agent update
um auf die neueste Version zu aktualisieren.
Name | Standard | Beschreibung |
---|---|---|
CSP | nicht gesetzt | Fügt einen Content-Security-Policy-Header mit diesem Wert hinzu. |
DISABLE_PASSWORD_AUTH | FALSCH | Deaktiviert die Passwortauthentifizierung. |
Name | Standard | Beschreibung |
---|---|---|
DOCKER_HOST | nicht gesetzt | Überschreibt den Docker-Host (docker.sock), wenn ein Proxy verwendet wird. 1 |
EXTRA_FILESYSTEMS | nicht gesetzt | Siehe Überwachen zusätzlicher Festplatten, Partitionen oder Remote-Mounts |
FILESYSTEM | nicht gesetzt | Gerät, Partition oder Bereitstellungspunkt zur Verwendung für Root-Festplattenstatistiken. |
KEY | nicht gesetzt | Öffentlicher SSH-Schlüssel zur Authentifizierung. Im Hub bereitgestellt. |
LOG_LEVEL | Info | Protokollierungsebene. Gültige Werte: „debug“, „info“, „warn“, „error“. |
MEM_CALC | nicht gesetzt | Überschreibt die Standardspeicherberechnung. 2 |
NICS | nicht gesetzt | Whitelist der Netzwerkschnittstellen zur Überwachung des Bandbreitendiagramms. |
PORT | 45876 | Port oder Adresse:Port zum Abhören. |
SENSORS | nicht gesetzt | Whitelist der zu überwachenden Temperatursensoren. |
SYS_SENSORS | nicht gesetzt | Überschreibt den Systempfad für Sensoren. Siehe #160. |
Beszel unterstützt OpenID Connect und viele OAuth2-Authentifizierungsanbieter (siehe Liste unten).
Besuchen Sie die Seite „Auth-Provider“, um Ihren Provider zu aktivieren. Die Weiterleitungs-/Rückruf-URL sollte
sein.
Apfel
Bitbucket
Zwietracht
Gitea
Gitee
GitHub
GitLab
Kakao
LiveChat
Mailcow
Microsoft
OpenID Connect
Patreon (v2)
Spotify
Strava
Zucken
VK
Yandex
Die Methode zum Hinzufügen zusätzlicher Festplatten unterscheidet sich je nach Ihrer Bereitstellungsmethode.
Verwenden Sie lsblk
um die Namen und Mountpunkte Ihrer Partitionen zu finden. Wenn Sie Probleme haben, überprüfen Sie die Agentenprotokolle.
Hinweis: Die Diagramme verwenden den Namen des Geräts oder der Partition, sofern verfügbar, und greifen auf den Ordnernamen zurück. Sie erhalten keine E/A-Statistiken für im Netzwerk bereitgestellte Laufwerke.
Hängen Sie einen Ordner aus dem Zieldateisystem im Verzeichnis /extra-filesystems
des Containers ein. Zum Beispiel:
Bände: - /mnt/disk1/.beszel:/extra-filesystems/sdb1:ro - /dev/mmcblk0/.beszel:/extra-filesystems/mmcblk0:ro
Legen Sie die Umgebungsvariable EXTRA_FILESYSTEMS
auf eine durch Kommas getrennte Liste der zu überwachenden Geräte, Partitionen oder Bereitstellungspunkte fest. Zum Beispiel:
EXTRA_FILESYSTEMS="sdb,sdc1,mmcblk0,/mnt/network-share"
Da Beszel auf PocketBase aufbaut, können Sie die PocketBase-Web-APIs und clientseitigen SDKs verwenden, um Daten von außerhalb von Beszel selbst zu lesen oder zu aktualisieren.
Der Hub und der Agent kommunizieren über SSH, sodass sie nicht mit dem Internet verbunden sein müssen. Selbst wenn Sie ein externes Authentifizierungs-Gateway wie Authelia vor dem Hub platzieren, wird die Verbindung zwischen Hub und Agent dadurch nicht unterbrochen oder unterbrochen.
Wenn der Hub zum ersten Mal gestartet wird, generiert er ein ED25519-Schlüsselpaar.
Der SSH-Server des Agenten ist so konfiguriert, dass er nur Verbindungen akzeptiert, die diesen Schlüssel verwenden. Es stellt kein Pseudo-Terminal bereit und akzeptiert keine Eingaben, sodass es unmöglich ist, Befehle auf dem Agenten auszuführen, selbst wenn Ihr privater Schlüssel kompromittiert ist.
Administratoren haben Zugriff auf zusätzliche Links im Hub, wie z. B. Backups, SMTP-Einstellungen usw. Der erste erstellte Benutzer ist automatisch ein Administrator und kann sich bei PocketBase anmelden.
Durch das Ändern der Rolle eines Benutzers wird kein PocketBase-Administratorkonto für ihn erstellt. Gehen Sie dazu in PocketBase zu Einstellungen > Administratoren und fügen Sie sie manuell hinzu.
Benutzer können ihre eigenen Systeme und Warnungen erstellen. Links zu PocketBase-Einstellungen werden im Hub nicht angezeigt.
Schreibgeschützte Benutzer können keine Systeme erstellen, können aber jedes System anzeigen, das ein Administrator für sie freigegeben hat, und Warnungen erstellen.
Vorausgesetzt, der Agent läuft, wird die Verbindung wahrscheinlich von einer Firewall blockiert. Sie haben zwei Möglichkeiten:
Fügen Sie den Firewalls des Agentensystems eine Eingangsregel hinzu, um TCP-Verbindungen zum Port zuzulassen. Überprüfen Sie alle aktiven Firewalls wie iptables und ggf. die Firewall-Einstellungen Ihres Cloud-Anbieters.
Alternativ können Sie Software wie Cloudflare Tunnel, WireGuard oder Tailscale verwenden, um Ihre Firewall sicher zu umgehen.
Sie können die Konnektivität testen, indem Sie telnet
ausführen.
Wenn Sie den Host-Netzwerkmodus für den Agenten, aber nicht für den Hub verwenden, fügen Sie Ihr System mit dem Hostnamen host.docker.internal
hinzu, der in die vom Host verwendete interne IP-Adresse aufgelöst wird. Siehe das Beispiel docker-compose.yml.
Wenn Sie für beide den Host-Netzwerkmodus verwenden, können Sie localhost
als Hostnamen verwenden.
Andernfalls verwenden Sie den container_name
des Agenten als Hostnamen, wenn sich beide im selben Docker-Netzwerk befinden.
Geben Sie das Dateisystem/das Gerät/die Partition für Root-Festplattenstatistiken mithilfe der Umgebungsvariablen FILESYSTEM
an.
Wenn nicht festgelegt, versucht der Agent, die auf /
gemountete Partition zu finden und diese zu verwenden. Dies funktioniert in einem Container möglicherweise nicht ordnungsgemäß. Daher wird empfohlen, diesen Wert festzulegen. Verwenden Sie eine der folgenden Methoden, um das richtige Dateisystem zu finden:
Führen Sie lsblk
aus und wählen Sie unter „NAME“ eine Option aus.
Führen Sie df -h
aus und wählen Sie eine Option unter „Dateisystem“.
Führen Sie sudo fdisk -l
aus und wählen Sie unter „Gerät“ eine Option aus.
Wenn Containerdiagramme leere Daten anzeigen oder überhaupt nicht angezeigt werden, müssen Sie möglicherweise die cgroup-Speicherabrechnung aktivieren. Führen Sie zur Überprüfung docker stats
aus. Wenn keine Speichernutzung angezeigt wird, befolgen Sie diese Anleitung, um das Problem zu beheben:
https://akashrajpurohit.com/blog/resolving-missing-memory-stats-in-docker-stats-on-raspberry-pi/
Versuchen Sie, Ihre Docker-Version auf dem Agentensystem zu aktualisieren. Dieses Problem wurde auf einem Computer mit Version 24 beobachtet und durch ein Upgrade auf Version 27 behoben.
Aufzeichnungen für längere Zeiträume werden durch Mittelung von Statistiken aus kürzeren Zeiträumen erstellt. Der Agent muss ununterbrochen ausgeführt werden, damit ein vollständiger Datensatz zum Auffüllen dieser Datensätze verfügbar ist.
Das Anhalten bzw. Aufheben der Pause des Agenten für mehr als eine Minute führt zu unvollständigen Daten und führt zu einem Zurücksetzen des Timings für das aktuelle Intervall.
Sowohl der Hub als auch der Agent sind in Go geschrieben, sodass Sie sie problemlos selbst erstellen oder für verschiedene Plattformen übergreifend kompilieren können. Bitte installieren Sie zuerst Go, falls Sie dies noch nicht getan haben.
Führen Sie make
in /beszel
. Dadurch wird ein build
-Verzeichnis erstellt, das die Binärdateien enthält.
CD-Rahmen && machen
Sie können auch für verschiedene Plattformen bauen:
Machen Sie OS=freebsd ARCH=arm64
Sehen Sie sich eine Liste der gültigen Optionen an, indem Sie go tool dist list
ausführen.
CD-Rahmen && Go Mod aufgeräumt
Gehen Sie zu beszel/cmd/agent
und führen Sie den folgenden Befehl aus, um eine Binärdatei im aktuellen Verzeichnis zu erstellen:
CGO_ENABLED=0 go build -ldflags "-w -s" .
Der Hub bettet die Web-Benutzeroberfläche in die Binärdatei ein, daher müssen Sie zuerst die Website erstellen. Ich verwende Bun, aber Sie können auch Node.js verwenden, wenn Sie möchten:
CD-Rahmen/Site Brötchen installieren Bun Run Build
Dann in beszel/cmd/hub
:
CGO_ENABLED=0 go build -ldflags "-w -s" .
Mit den Umgebungsvariablen GOOS
und GOARCH
können Sie für verschiedene Plattformen eine Cross-Kompilierung durchführen.
So erstellen Sie beispielsweise für FreeBSD ARM64:
GOOS=freebsd GOARCH=arm64 CGO_ENABLED=0 go build -ldflags "-w -s" .
Sehen Sie sich eine Liste der gültigen Optionen an, indem Sie go tool dist list
ausführen.
Beiträge sind willkommen, aber es ist eine gute Idee, zuerst bei einer Diskussion/einem Problem mit uns zu sprechen, wenn Sie vorhaben, etwas Bedeutendes zu tun.
Zur Verwaltung von Übersetzungen nutzen wir Crowdin. Neue Sprachen oder Verbesserungen bestehender Übersetzungen sind willkommen!
Wir werden in naher Zukunft weitere hilfreiche Informationen über die Mitarbeit bei Beszel haben.
Beszel ist unter der MIT-Lizenz lizenziert. Weitere Einzelheiten finden Sie in der LICENSE-Datei.
Beszel benötigt lediglich Zugriff zum Lesen von Containerinformationen. Für linuxserver/docker-socket-proxy würden Sie CONTAINERS=1
festlegen. ↩
Der Standardwert für den verwendeten Speicher basiert auf der Used-Berechnung von gopsutil, die ziemlich genau mit free
übereinstimmen sollte. Setzen Sie MEM_CALC
auf htop
um mit der Berechnung von htop übereinzustimmen. ↩