Das perfekte Monitoring-System! | Beszel

Übersicht
Es ist passiert, ich habe durch einen riesen Zufall das perfekte Monitoring System für das Homelab entdeckt. Wir haben in der Vergangenheit bereits Uptime Kuma eingesetzt um simple Uptimes und co. zu Überwachen. Aber leider haben wir nach wie vor keine richtige Übersicht über die Auslastung unserer ganzen Systeme. Tools wie CheckMK, Zabbix oder auch PRTG sind viel zu Umfangreich für das Homelab und meist schwer zu verstehen, außerdem benötigen einige davon eine menge Ressourcen.
Mit der Suche ist jetzt Schluss! Ich bin auf das super simpel gehaltene Monitoring Tool Beszel gestoßen und begeistert. Beszel besitzt meiner Meinung nach genau die Menge an Umfang, die es für das Homelab benötigt.
Das Video zum Beitrag findet ihr hier: https://youtu.be/uQBhg90YPCY
Hub Installation
Das Hub kann genauso wie der Agent ebenfalls direkt auf eine VM per Binary installiert werden. Genauso können wir dies aber auch in einem Docker Container auf unserem bereits vorhandenen Docker Host laufen lassen und das Dashboard per Nginx Proxy Manager direkt mit einem Zertifikat versehen und über unsere Homelab-Domain erreichbar machen.
Docker Compose File
Für den Hub Container benötigen wir nicht viel Konfiguration. Wir fügen zum Template lediglich unser Reverse-Proxy Netzwerk hinzu und entfernen die Port Sektion um später nur über den Nginx Proxy auf das Dashboard zugreifen zu können.
services:
beszel:
image: henrygd/beszel
container_name: beszel
restart: unless-stopped
volumes:
- ./beszel_data:/beszel_data
networks:
- reverse-proxy
networks:
reverse-proxy:
external: true
Nginx Proxy Manager
Um das Dashboard über unsere Domain erreichen zu können, erstellen wir einen neuen Nginx Proxy Manager Eintrag. Wichtig dabei sind der Port 8090
und der Hostname muss der Container-Name aus der Compose sein.

Erster Login
Nun können wir zu der Domain navigieren werden von Beszel begrüßt. Als erstes erstellen wir uns nun eine Neuen Account.

Benachrichtigungen
Damit wir auch mitbekommen, wenn etwas mit einem Server nicht inordnung ist, können wir uns für verschiedene Arten von Benachrichtigungen entscheiden. Wir haben die Möglichkeit einen SMTP Server zu hinterlegen um Mails zu erhalten oder verschiedenste Push-Benachrichtigungen aktivieren.

Benachrichtigungen können nach hinzufügen von Hosts über die Glocke aktiviert werden und werden dann automatisch an alle konfigurierten Notifications geschickt. Ihr habt dann die Wahl, die Benachrichtigungseinstellungen für alle Hosts zu übernehmen oder eine bestimmte Einstellung nur für einen Host zu aktivieren.

Agent Installation
Als nöchstes möchten wir natürlich unsere Systeme in Beszel aufnehmen. Dafür müssen wir garnicht viel tun und die meiste Arbeit wird und schon abgenommen. Wenn wir auf den Button System Hinzufügen Klicken, haben wir die Wahl zwischen einem Docker Agent und einem Binary Agent, den wir direkt auf das System installieren.

Je nachdem was wir wählen ändert sich der Knopf unten neben System hinzufügen. Denn alles was wir nun tun müssen, ist das auswählen eines Namens für den Host, das Eingeben der IP-Adresse und anschließend können wir auf Linux-Befehl kopieren klicken und den Befehl auf unserem Host einfügen und ausführen.

Nachdem das Script durch ist sehen wir alle Daten zu unserem System auch schon in Beszel.

Docker Container
Da auf dem hinzugefügten Host Docker-Container laufen, erkennt beszel das und erstellt extra Monitoring Reiter für die Docker-Container. So erhält man auch hier eine tolle Übersicht.

Weitere Festplatten
Wenn wir den Agent ohne weitere Anpassungen starten, überwacht Beszel nur den Festplattenspeicher der Hauptplatte. Um nun ggf. weitere vorhandene Festplatten hinzuzufügen, können wir dies in einer extra Environment Variable angeben. Die Variable passen wir direkt in unserem Service an.
lsbk # Alle Festplatten Anzeigen
sudo nano /etc/systemd/system/beszel-agent.service #Service File bearbeiten
In dem File können wir Kommagetrennt alle zusätzlichen Festplatten die wir überwachen wollen mit hinzufügen.

Nachdem wir die Änderungen gespeichert haben, Starten wir den Dienst einmal neu.
sudo systemctl daemon-reload
sudo systemctl restart beszel-agent.service
Nach kurzem warten werden die Festplatten jetzt ebenfalls im Dashboard angezeigt.

Windows Agent
Solltet ihr Windows Geräte haben, die ihr ebenfalls überwachen wollt ist das auch kein Problem. Es besteht die Möglichkeit den Agent ebenfalls für Windows zu kompilieren und dann bspw. mithilfe von NSSM als Dienst einzurichten der dauerhaft läuft.
Go & Make
Um den Agent kompilieren zu können benötigt ihr die Tools make und go auf eurem Windows Host. Die Tools könnt ihr am einfachsten über Chocolatey Installieren. Falls ihr das noch nicht habt, kann dies ebenfalls mit einem simplen Command nachinstalliert werden.
Um Chocolatey zu installieren, öffnet ihr das Terminal als Admin und kopiert euch den Installationsbefehl von der Offiziellen Seite.
Anschließend solltet ihr den Befehl choco
ohne Fehler ausführen können.

mit diesem Befehl installieren wir nun make & Go
choco install make
...
choco install go
Kompilieren
Als nächstes Klonen wir uns die Repository um an die benötigten Files zu kommen. Detailiert findet ihr den Vorgang auch nochmal im offiziellen Guide.
Wir navigieren nach beszel\beszel\cmd\agent
und führen folgenden Befehl aus um den Agent zu einer binary zu kompilieren.
go mod tidy
go build -buildvcs=false -ldflags "-w -s" .
Starten
Wie eingangs erwähnt könnt ihr aus dem Agent mit Tools wie NSSM einen Windows-Dienst erstellen. Zum Testen führen wir den Agent direkt im Terminal aus.
