Als je thuis een of meerdere home-servers hebt draaien, waaronder Raspberry Pi’s of een NAS, en misschien ook een VPS (Virtual Private Server) op internet, wil je uiteraard dat die correct blijven werken. Zo kan de opslag of het RAM van een van je systemen langzaamaan vollopen, of kan de processorbelasting van een server plots hoog zijn. Maar hoe houd je dat voor al die systemen in de gaten? Daarvoor heb je een monitoringsysteem nodig.
Beszel
Een van zulke systemen is Beszel: een opensource-project met ondersteuning voor Windows, Linux, macOS, FreeBSD en meer besturingssystemen. Je installeert de hub met de webinterface eenvoudig op een eigen server, bijvoorbeeld in een Docker-container, en installeert op elk systeem dat je wilt monitoren een agent. De agents sturen hun data daarna continu naar de hub. Vervolgens krijg je in één oogopslag van al je systemen het geheugen-, opslag- en netwerkverbruik te zien, de processorbelasting, het aantal processen, de temperatuur van de processor en meer. Het systeem kan je zelfs waarschuwen wanneer er specifieke drempelwaarden worden overschreden.
Hub installeren
Beszel Hub installeer je op een centrale Linux-server. Het eenvoudigste is om dat met Docker Compose te doen. Creëer eerst een directory op je server waarin Beszel zijn gegevens opslaat:
$ mkdir -p containers/beszelDefinieer de container vervolgens in een bestand docker-compose.yml:
services:
beszel:
image: henrygd/beszel
container_name: beszel
restart: unless-stopped
environment:
- APP_URL=http://IP:8090
ports:
- 8090:8090
volumes:
- ./containers/beszel:/beszel_dataVervang IP in de omgevingsvariabele APP_URL door het ip-adres van je server. Als je Beszel achter een reverse proxy draait, verander dan APP_URL en verwijder de port mapping. Start daarna de container met:
docker compose up -dBezoek daarna in je webbrowser de url van Beszel Hub. Je wordt gevraagd om een gebruiker aan te maken. Vul je e-mailadres in en kies een wachtwoord om vervolgens op Create account te klikken. Dit is de beheerdersaccount waarmee je vanaf nu op Beszel Hub inlogt.

Agent toevoegen
Nu dien je op elk systeem dat je wilt monitoren een agent te installeren. Klik daarvoor eerst rechtsboven in Beszel Hub op Add System. Vul dan de naam en de hostname of het ip-adres van de server in die je wilt monitoren. Beszel heeft zelf al een unieke publieke sleutel en een token voor de agent gecreëerd. Hiermee kan een versleutelde verbinding tussen de agent en de hub worden opgezet.
Je kunt nu kiezen of je de agent via Docker of rechtstreeks op de te monitoren server wilt draaien. Klik daarvoor bovenaan op Docker of Binary. Onderaan verschijnt een knop waarmee je de benodigde installatiecode naar je klembord kopieert wanneer je erop klikt. Voor Docker is dat de optie Copy docker compose. Voor de binaire methode kun je kiezen uit installatieopdrachten voor Linux, macOS, Windows en FreeBSD.

Agent installeren
Als je eerder op Copy docker compose hebt geklikt, maak dan op de te monitoren server een bestand docker-compose.yml aan en plak hierin de gekopieerde code. Je ziet dat hierin omgevingsvariabelen zijn gedefinieerd voor de sleutel, het token, de poort en de url van Beszel Hub. De container gebruikt als netwerkmodus host omdat dat nodig is om de netwerkstatistieken te kunnen lezen. In de volumes bevindt zich de regel:
./beszel_agent_data:/var/lib/beszel-agent.
Creëer deze directory beszel_agent_data, zodat de agent hierin data kan opslaan.
Start daarna de agent met:
docker compose up -dNadat dit is gebeurd, klik je in het geopende venster in de Beszel Hub op Add system om de agent aan de hub toe te voegen. Na enige tijd zou de status (het bolletje voor de naam in de eerste kolom) naar groen moeten veranderen en krijg je de statistieken in de andere kolommen te zien. Voeg andere systemen op dezelfde manier toe. De ondersteuning van FreeBSD werkt ook voor FreeBSD-gebaseerde routerbesturingssystemen zoals OPNsense (downloaden via https://opnsense.org). Overigens kun je ook het systeem waarop Beszel Hub zelf draait, monitoren. Voeg de containerdefinitie van beszel-agent dan gewoon aan het Docker Compose-bestand van de hub toe.
Je kunt perfect Beszel Hub op je lokale netwerk draaien en hiermee agents monitoren op een publiek netwerk, bijvoorbeeld op een VPS, zonder dat die agents toegang tot je lokale netwerk nodig hebben. Elke agent start immers een SSH-server op de geconfigureerde poort op, en Beszel Hub verbindt met deze SSH-server. Je hoeft alleen op die VPS de geconfigureerde poort toe te laten in de firewall.
Overzicht
Beszel Hub biedt nu inzicht in de toestand van al je gemonitorde systemen in een tabel met nuttige statistieken. Standaard worden je systemen alfabetisch gerangschikt op hun naam (de eerste kolom), maar door op een andere kolomkop te klikken, sorteer je ze eenvoudig op een van de statistieken. Zo zie je bijvoorbeeld meteen welke systemen het hoogste geheugenverbruik hebben.
Klik rechtsboven in de tabel op View om kolommen naar wens in en uit te schakelen. Ben je bijvoorbeeld niet geïnteresseerd in de belasting van gpu’s, vink dat veld dan gewoon uit. Beszel toont overigens boven bepaalde drempelwaarden de status in het geel of rood, zodat je ook onmiddellijk ziet welke systemen je aandacht vereisen omdat bijvoorbeeld de processorbelasting of het geheugen- of schijfverbruik hoog ligt. De percentages van die drempelwaarden kun je aanpassen door op het pictogram van het tandwiel bovenaan te klikken. Je vindt ze onder Warning thresholds in de algemene instellingen.
Systeem onderzoeken
Wil je meer van een systeem weten, klik dan op de betreffende rij in de tabel. Je ziet dan de overzichtspagina van het systeem, met grafieken van alle gemeten statistieken. Als het systeem Docker draait, toont Beszel hier ook het processor- en geheugengebruik en de schijf- en netwerkdoorvoer voor elke container. Zo zie je meteen welke containers het meeste van je systeem vragen. Houd je muiscursor boven de grafiek om de namen van de containers en hun exacte statistieken te zien.
Ook systemd-services worden onderaan in een tabel getoond, die je op allerlei statistieken kunt sorteren. Afhankelijk van je systeem krijg je nog andere informatie te zien. Bij een laptop toont de overzichtspagina bijvoorbeeld ook de batterijlading, de belasting en het vermogensverbruik van je gpu en het gebruik van je VRAM. Standaard tonen de grafieken hun waardes voor het laatste uur, maar dat kun je bovenaan aanpassen.
Systemd-services monitoren
Als je de Beszel-agent als Linux-binary hebt geïnstalleerd, heeft deze voldoende rechten om de status van de systemd-services op het systeem op te vragen. Er is dan geen extra configuratie nodig om je systemd-services te monitoren. Draai je de agent in een container op het systeem, dan heeft die standaard geen toegang tot de systemd-services.
Voeg daarom het volgende volume toe aan het Docker Compose-bestand van de agent:
- /var/run/dbus/system_bus_socket:/var/run/dbus/system_bus_socket:roHiermee geef je de agent read-only toegang tot de D-Bus-socket van systemd. Herstart daarna de container met:
docker compose up -dJe krijgt nu in de kolom Services het aantal systemd-services te zien en op de pagina van het systeem onderaan een tabel met de services.
Extra schijven toevoegen
De container van de Beszel-agent heeft toegang tot statistieken van elke partitie waarop deze een volume heeft. Voor het standaard gedefinieerde volume ./beszel_agent_data:/var/lib/beszel-agent betekent dit dus dat de agent de partitie monitort waarop ./beszel_agent_data staat. Dit beschouwt de agent standaard als het rootbestandssysteem.
Wil je extra partities op het systeem monitoren, creëer daarin dan een lege directory en koppel die in de container aan een subdirectory van /extra-filesystems. Read-only rechten zijn hiervoor voldoende. Dat kan bijvoorbeeld met een volume zoals:
- /mnt/disk1/.beszel:/extra-filesystems/sdb1:roSchijfgezondheid monitoren
De Beszel-agent kan ook SMART-data van aangesloten schijven uitlezen, zodat je de gezondheid van je schijven kunt monitoren. Daarvoor maakt de agent gebruik van de opdracht smartctl op het gemonitorde systeem. Installeer dit dus eerst op het systeem. Op een Debian- of Ubuntu-systeem kan dat met:
sudo apt install smartmontoolsBekijk dan welke schijven herkend worden met het commando:
smartctl –-scanOp een laptop met een NVMe-schijf is de uitvoer bijvoorbeeld:
/dev/nvme0 -d nvme # /dev/nvme0, NVMe deviceDraait je agent in een container, dan moet je het image in je Docker Compose-bestand wijzigen naar:
henrygd/beszel-agent:alpineDaarna voeg je de volgende regels toe aan je containerdefinitie:
devices:
- /dev/nvme0:/dev/nvme0
cap_add:
- SYS_RAWIO
- SYS_ADMINPas het apparaat aan op basis van wat je met smartctl --scan hebt gevonden. Herstart daarna de container met:
docker compose up -dSchijfgezondheid met systemd-service
Gebruik je daarentegen een systemd-service voor de agent, ken dan dezelfde capabilities toe. Open daarvoor /etc/systemd/system/beszel-agent.service.
Voeg onder [Service] de volgende regels toe:
AmbientCapabilities=CAP_SYS_RAWIO CAP_SYS_ADMIN
CapabilityBoundingSet=CAP_SYS_RAWIO CAP_SYS_ADMINAls er ergens in het service-bestand een regel voorkomt die begint met DeviceAllow (bijvoorbeeld voor Nvidia-gpu’s), voeg dan voor elke schijf een vergelijkbare regel toe:
DeviceAllow=/dev/nvme0 rVoeg de gebruiker beszel ook aan de groep disk toe:
sudo usermod -aG disk beszelHerstart daarna de service met:
sudo systemctl daemon-reload
sudo systemctl restart beszel-agentJe vindt de SMART-data van de schijven nu op de pagina van het systeem. Klik bovenaan op het pictogram van de schijf om een overzicht van de SMART-data van al je gemonitorde systemen te zien.
Toegang tot NVMe-schijven
Om SMART-data van NVMe-schijven te lezen, is er vaak nog wat extra configuratie nodig. Het probleem zie je in de uitvoer van:
ls -l /dev/sda /dev/nvme0Als je daar als permissies crw------- root root /dev/nvme0 ziet, betekent dit dat alleen de root-gebruiker rechtstreekse toegang tot de schijf heeft. Maak daarom een udev-regel aan die NVMe-apparaten aan de groep disk toekent:
sudo tee /etc/udev/rules.d/99-smartctl-disk-group.rules > /dev/null << 'EOF'
# Change NVMe devices to disk group ownership for S.M.A.R.T. monitoring
KERNEL=="nvme[0-9]*", GROUP="disk", MODE="0660"
EOFHerlaad vervolgens de udev-regels en herstart de Beszel-agent:
sudo udevadm control --reload-rules
sudo udevadm trigger
sudo systemctl restart beszel-agentAls alles goed is, kan de agent nu wel de SMART-data van je NVMe-schijf lezen en krijg je die in Beszel Hub te zien.
Notificaties via e-mail
Beszel Hub geeft je nu een duidelijk overzicht van de toestand van al je servers, maar je moet eraan denken om regelmatig de webinterface te bekijken als je tijdig problemen wilt ontdekken. Daarom is het aan te bevelen om notificaties in te stellen. Beszel Hub waarschuwt je dan proactief als op een van je systemen een specifieke drempelwaarde wordt overschreden.
We tonen je hoe je notificaties via e-mail instelt. Klik in de webinterface bovenaan op het pictogram van het tandwiel om de instellingen van Beszel Hub te openen. Kies dan links Notifications en klik onder Email notifications op configure an SMTP server. Vul de naam en het e-mailadres van de afzender van de notificatiemails in. Let op: je SMTP-server moet deze gegevens aanvaarden.
Schakel dan Use SMTP mail server in. Vul dan de hostname, het poortnummer en je gebruikersnaam en wachtwoord voor de SMTP-server in. Klik op Show more options voor extra opties die je misschien moet instellen, zoals de tls-encryptie en authenticatiemethode. Raadpleeg hiervoor de documentatie van je mailprovider. Een interessante mailprovider voor dit soort e-mails is Mailjet. Het is een Frans bedrijf, voldoet aan de GDPR en met het gratis plan kun je 200 e-mails per dag sturen. Klik tot slot op Save changes. Klik op Send test email, vul een e-mailadres in en klik dan op Send.
Notificaties instellen
Vanaf nu kun je notificaties instellen. Op de hoofdpagina van Beszel Hub klik je daarvoor op het pictogram van de bel naast een systeem. Kies eerst of je een notificatie wilt instellen voor alleen dit systeem of voor alle systemen. Klik dan op een eigenschap, zoals Disk Usage. Kies vervolgens welk percentage hoelang gemiddeld moet worden overschreden voordat je een notificatie ontvangt.
Zodra dit percentage wordt overschreden, krijg je een e-mail met een waarschuwing, inclusief een link. Klik je op die link, dan kom je meteen op de pagina van het geplaagde systeem terecht, waar je het probleem kunt onderzoeken. Wanneer de waarde weer onder de drempel ligt, ontvang je ook een e-mail. De hoofdpagina van Beszel Hub toont overigens ook alle actieve waarschuwingen boven de lijst van systemen.

Pushnotificaties
Beszel kan ook pushnotificaties sturen via allerlei andere diensten, zoals ntfy. Dat gebeurt via Shoutrrr. Klik in de instellingen op Notifications en dan onder Webhook / Push notifications op Add URL. Vul daar de Shoutrrr-url voor de notificatiedienst in. Bekijk de documentatie van Beszel voor de specifieke url die je daarvoor moet instellen. Klik daarna op Test URL om te testen of de notificaties werken en vervolgens op Save Settings.
Voor pushnotificaties is het belangrijk dat je daaronder in de instellingen Quiet Hours instelt. Dat zijn periodes waarin er geen notificaties worden verzonden. Als je bijvoorbeeld hebt ingesteld dat je een pushnotificatie ontvangt wanneer een systeem offline is, maar je systeem automatisch na updates midden in de nacht herstart, wil je op dat moment misschien niet wakker worden van een pushnotificatie op je telefoon. Vul hier dan een tijdvenster in.
En verder
In de documentatie van Beszel vind je extra informatie over geavanceerde functies zoals meerdere gebruikers, authenticatie via OAuth2-providers, automatische back-ups van je statistieken en meer. Er bestaan ook enkele onofficiële mobiele apps voor Android en iOS om je systemen met Beszel wat gebruiksvriendelijker te monitoren vanaf je telefoon. De links daarvoor vind je ook in de documentatie. De webinterface past zich op een mobiele telefoon overigens ook perfect aan, onder andere door een lay-out in de vorm van een raster in plaats van een tabel.
Beszel gebruikt 1 centrale hub en agents om meerdere servers, Raspberry Pi’s, NAS-systemen en VPS’en te monitoren. De webinterface toont onder meer cpu-belasting, geheugen, opslag, netwerkverkeer, Docker-containers, systemd-services en SMART-data van schijven. Beszel kan waarschuwingen sturen via e-mail of pushnotificaties wanneer ingestelde drempelwaarden worden overschreden. De software ondersteunt onder meer Windows, Linux, macOS en FreeBSD.

















