Met Uptime Kuma houd je eenvoudig in het oog of je servers online zijn. Je installeert de software zelf op een Raspberry of een andere Linux-server en definieert welke servers je wilt monitoren. Dat kan via http, tcp op een willekeurige poort, DNS-records, ping, enzovoort. Je krijgt de resultaten in een mooi dashboard te zien en je kunt ook een publieke statuspagina maken. Notificaties zijn mogelijk via meer dan 90 diensten, waaronder Telegram, Discord, Pushover, e-mail en webhooks.

Voor eigen gebruik

Een belangrijke keuze is op welke machine je Uptime Kuma draait. Het heeft weinig zin om het monitoringprogramma te installeren op een machine waarop de services draaien die je ermee monitort. Als die machine uitvalt, zul je dat immers niet merken: Uptime Kuma draait dan ook niet meer en kan dan geen notificaties sturen. Je draait Uptime Kuma daarom bij voorkeur op een machine die verder geen belangrijke taken heeft. Monitor daarnaast op een andere manier of Uptime Kuma op die machine actief is.

In dit artikel gaan we ervan uit dat je het programma op een Raspberry Pi of andere Linux-machine bij je thuis draait. We illustreren dit voornamelijk voor intern gebruik, bijvoorbeeld om te controleren of alle services die je in Docker-containers hebt draaien het nog doen. Je kunt Uptime Kuma ook op een VPS buitenshuis draaien en zelfs publiek toegankelijk maken, maar dan moet je zeker authenticatie toevoegen en een reverse proxy voor https gebruiken. Op de wiki van Uptime Kuma vind je daarover meer informatie.

Installatie met Docker Compose

De eenvoudigste manier om Uptime Kuma te installeren, is met Docker Compose. Maak eerst met de opdracht mkdir -p ./containers/uptime-kuma een directory aan waarin Uptime Kuma zijn configuratie en data opslaat. Maak vervolgens een bestand docker-compose.yml aan met de volgende inhoud:

services:
  uptime-kuma:
    image: louislam/uptime-kuma:2
    restart: unless-stopped
    volumes:
      - ./containers/uptime-kuma:/app/data
    ports:
      - 3001:3001

Start de container dan met docker-compose up -d. Dit downloadt het Docker-image van Uptime Kuma (wat even duurt) en start het programma, waarna het op poort 3001 een webinterface aanbiedt.

De installatie van Uptime Kuma via Docker Compose vraagt wat tijd.

Initiële configuratie

Bezoek daarna in je webbrowser http://IP:3001, met in plaats van IP het ip-adres van de machine waarop je Uptime Kuma hebt geïnstalleerd. Je krijgt nu de vraag om een taal te kiezen (Nederlands is beschikbaar) en een database. Als je geen honderden servers monitort, volstaat SQLite. Klik dan op Volgende. Uptime Kuma stelt dan de database in.

In de volgende stap maak je een beheerdersaccount aan. Kies een gebruikersnaam en wachtwoord en klik op Aanmaken. Merk op dat je wachtwoord als onversleutelde tekst over het netwerk gaat als je geen gebruikmaakt van een reverse proxy voor een TLS-verbinding. Na het aanmaken van het beheerdersaccount krijg je een leeg dashboard te zien.

Kies de database waarin Uptime Kuma de monitorgeschiedenis opslaat.

Webpagina monitoren

Klik linksboven op Nieuwe monitor toevoegen. Een monitor is in Uptime Kuma een taak die de hele tijd op de achtergrond een website of andere dienst in de gaten houdt. Bij Monitortype staat standaard HTTP(s), wat je kiest voor het eenvoudig monitoren van een website. Vul bij Vriendelijke naam de naam in waaronder je de monitor in je dashboard wilt zien, en bij URL de volledige url.

Daarna stel je ook het ‘hartslaginterval’ in waarmee Uptime Kuma de website monitort (standaard elke 60 seconden) en na hoeveel pogingen de website als niet beschikbaar wordt beschouwd. Onder Geavanceerd vind je nog enkele speciale opties. Vink je bijvoorbeeld Melding over verlopen certificaat aan, dan wordt de webpagina ook bij een verlopen TLS-certificaat als offline beschouwd. Klik tot slot onderaan op Opslaan. Daarna krijg je details van de gemonitorde webpagina te zien.

Voeg een nieuwe monitor toe aan een website.

Detailpagina

Die detailpagina vult zich met groene streepjes voor elke keer dat Uptime Kuma heeft geverifieerd dat de webpagina beschikbaar is. Bij een mislukte controle verschijnt er een rood streepje. Hetzelfde overzicht van streepjes krijg je voor al je geconfigureerde monitors te zien in de linkerzijbalk.

Op de detailpagina zie je ook statistieken over de uptime van de laatste 30 dagen en 24 uur, de gemiddelde responstijd en over hoeveel dagen het TLS-certificaat van de website verloopt. Je krijgt ook een grafiek van de responstijd te zien, die je verbergt als je op de huidige responstijd onder Antwoord klikt. Een klik op het aantal resterende dagen voor het TLS-certificaat toont je extra informatie over de geldigheid van het certificaat en de bijbehorende certificaatautoriteiten. Onderaan vind je een lijst met de momenten waarop de monitor een verandering in de status registreerde.

De detailpagina van een monitor toont je onmiddellijk alle nodige informatie over de beschikbaarheid.

Uitgebreidere controles

Op deze manier kun je nu allerlei monitors toevoegen. De detailpagina van een monitor open je met een klik op de monitor in de lijst links. Klik dan op Wijzigen voor aanpassingen. Zo kun je rechts bij HTTP Opties de http-methode (standaard GET) kiezen en zelfs een body en headers invoeren om naar de website door te sturen. Wanneer toegang tot de website alleen met authenticatie mogelijk is, stel je dat hier met HTTP Basic-authenticatie, OAuth2, NTLM of mTLS in.

Wat je eigenlijk bijna altijd zou moeten doen, is niet als monitortype HTTP(s) kiezen, maar HTTP(s) – Trefwoord. Dit voegt een veld Trefwoord toe, waarin je een reeks tekens kunt invoeren die exact zo in het html- of JSON-antwoord aanwezig moeten zijn. Want de webserver kan wel bereikbaar zijn en statuscode 200 – OK teruggeven, maar wat als door een configuratiefout niet de gewenste webpagina wordt getoond? Vul daarom in dit veld Trefwoord een woord in dat altijd op de webpagina te vinden zou moeten zijn. Of vink Trefwoord omkeren aan en vul een trefwoord in dat zeker niet op de pagina aanwezig mag zijn, zoals ‘Internal Server Error’.

Vul in welk trefwoord Uptime Kuma op je website moet vinden.

DNS-records monitoren

Ook interessant is een DNS-monitor. Hiermee monitort Uptime Kuma DNS-records van je servers. Kies daarvoor als monitortype DNS, geef de te monitoren hostnaam op en het ip-adres van de DNS-resolver die Uptime Kuma voor de controles gebruikt (standaard 1.1.1.1 van Cloudflare). Kies dan ook het type DNS-record dat je wilt monitoren, vaak A (voor IPv4), AAAA (voor IPv6) of MX (voor mailrecords).

Door DNS-monitors krijg je niet alleen te zien wanneer een record niet meer naar een ip-adres verwijst, maar je kunt bij aanpassingen aan de DNS-records achteraf ook nagaan wanneer de aanpassingen door de DNS-resolver te zien waren. Dit werkt overigens ook voor je eigen interne DNS-servers als je een intern domein met hostnames gebruikt. Je hoeft alleen maar het ip-adres van je interne DNS-server in de configuratie van de DNS-monitor in te voeren.

Monitor de beschikbaarheid van DNS-records.

Ping, SMTP en meer

Je hebt ook een monitortype Ping, waarbij je alleen maar een hostnaam hoeft op te geven en Uptime Kuma dan die machine via een ICMP-echoverzoek probeert te bereiken. Dit is soms handig om bijvoorbeeld van een clientapparaat waarop geen serverproces draait te controleren of dat altijd online is.

Voor een server wil je meestal meer weten dan dat deze op pings reageert. We zagen de http-monitor al voor webservers, maar Uptime Kuma heeft ook een SMTP-monitor voor mailservers. Vul hierin de hostnaam en het poortnummer van de SMTP-server in en kies de beveiligingsmethode. Geen van deze methoden verstuurt overigens daadwerkelijk een e-mail: ze controleren eenvoudigweg of een verbinding met de mailserver lukt.

Uptime Kuma ondersteunt ook nog enkele specifieke monitortypes voor bijvoorbeeld databases en MQTT. Voor een service die niet expliciet is ondersteund, kun je altijd de tcp-poort van de service monitoren met het monitortype TCP Port, waarbij je dan de hostnaam en poort invult. Let op: dit controleert niet of de server een geldig antwoord geeft, want Uptime Kuma kent al deze protocollen niet. Maar het is een goede basiscontrole.

Monitor de beschikbaarheid van je mailserver.

Andere richting

Tot nu toe gingen we ervan uit dat Uptime Kuma alle machines die je wilde monitoren kon bereiken. Maar dat is niet altijd zo. Misschien zijn er strikt ingestelde firewalls of bevinden te monitoren machines zich in afgescheiden netwerken, of draai je Uptime Kuma op internet en wil je machines thuis achter NAT monitoren. Als Uptime Kuma een machine niet kan bereiken maar er in de andere richting wel connectiviteit is, kies dan het passief monitortype Push. Uptime Kuma toont je dan in de configuratie van de monitor een Push URL.

Je moet nu zelf op de te monitoren machine die url elke 60 seconden (of het ingestelde hartslaginterval) bezoeken. Als Uptime Kuma elke minuut die aanroep ontvangt, wordt de machine als online beschouwd. Als er na een minuut niets van de machine te horen is, wordt ze als offline geregistreerd.

Stel dat de push-url voor je machine http://uptime-kuma.home:3001/api/push/qkkPiRSW8b8A9TEZtui7jpJi1mMNc7ns?status=up&msg=OK&ping= is en het om een Linux-machine gaat. Dan open je in de Linux-shell een crontab met crontab -e. Hierin voeg je de volgende regel toe:

* * * * * /usr/bin/curl "http://uptime-kuma.home:3001/api/push/qkkPiRSW8b8A9TEZtui7jpJi1mMNc7ns?status=up&msg=OK&ping="

Sla het bestand op; daarna zal je machine elke minuut Uptime Kuma ervan op de hoogte brengen dat hij nog online is.

Docker-containers monitoren

Een andere interessante toepassing van Uptime Kuma is het monitoren van je Docker-containers. Maar als Uptime Kuma zelf in een Docker-container draait, moet je die eerst toegang geven tot de Docker-socket. Dat kan door aan de volumes in docker-compose.yml de regel - /var/run/docker.sock:/var/run/docker.sock toe te voegen. Herstart de container daarna met docker-compose down en docker-compose up -d.

Klik dan in Uptime Kuma op het pictogram rechtsbovenaan, kies Instellingen en vervolgens Docker Hosts. Klik op Stel Docker Host in en geef de host een naam. Het verbindingstype mag op Socket blijven staan en de Docker Daemon op /var/run/docker.sock. Klik op Opslaan. Als je daarna een nieuwe monitor toevoegt en als monitortype Docker Container kiest, kies dan de ingestelde Docker-host uit de lijst en vul de naam in van de container die je wilt monitoren. Let op: hiermee monitor je louter of de container draait of ‘healthy’ is (als er een healthcheck is ingebouwd), niet of ze van buitenaf bereikbaar is.

Monitor Docker-containers met Uptime Kuma.

Labels

Als je veel webpagina’s of andere diensten monitort, maak je het best gebruik van labels. Hiermee kun je de te monitoren resources groeperen, bijvoorbeeld per machine of per type. Klik daarvoor wanneer je een monitor wijzigt onderaan bij Labels op Toevoegen. Je kunt nu een nieuw label toevoegen of een bestaand label selecteren. Aan elk label kun je ook een kleur toekennen voor een duidelijker overzicht en optioneel een waarde. Zo kun je bijvoorbeeld een label location aanmaken met als waarde home of remote, afhankelijk van of je een service op je LAN of op internet monitort.

Een monitor kan meerdere labels hebben, en die worden niet alleen op de detailpagina maar ook in de lijst van al je monitors links getoond. In het zoekveld daarboven kun je nu niet alleen filteren op de namen van je monitors, maar ook op je labels. Dat is dus een handige manier om wat meer overzicht in je monitors te brengen.

Het dashboard van Uptime Kuma laat ook toe om diensten op basis van labels te filteren.

Statuspagina’s

Een andere manier om meer overzicht te brengen, zijn de statuspagina’s. Klik bovenaan op Status Pagina en dan op Nieuwe Status Pagina. Geef je statuspagina een naam en een slug. Dit is het deel van de url dat achter http://IP:3001/status/ komt. Klik daarna op Volgende.

Je kunt je statuspagina nu links een titel, beschrijving en footertekst geven, en je kunt zelfs aangepaste css-code invoeren voor een lay-out op maat. Maar het belangrijkste zijn de diensten die je wilt monitoren. Klik op Voeg groep toe om een groep aan te maken en selecteer in het veld onder Voeg monitor toe: de monitors die je daaraan wilt toevoegen. Maak je geen groepen aan, dan creëert Uptime Kuma zelf een groep met de naam Diensten. Klik tot slot linksonder op Opslaan.

Die statuspagina is nu voor iedereen publiek toegankelijk op de gekozen url, zonder dat ze zich hoeven aan te melden. Dit is dus een snelle manier om specifieke statusinformatie beschikbaar te maken. En als beheerder kun je op die pagina altijd op Wijzig status pagina klikken. Dan kun je ook met een klik op Creëer Incident een tekstje uitleg toevoegen aan de pagina, bijvoorbeeld als je onderhoudstaken gepland hebt waardoor een van je servers even offline moet.

Met een publieke statuspagina toon je de beschikbaarheid van je diensten aan je gebruikers.

Meldingen sturen

Tot nu toe kon je de status van al je monitors in het dashboard of op statuspagina’s bekijken, maar dan moet je zelf wel de hele tijd de webinterface van Uptime Kuma in het oog houden. Gelukkig ondersteunt het programma ook meldingen met behulp van meer dan 90 notificatiediensten. Ga daarvoor naar de instellingen van Uptime Kuma en klik op het tabblad Meldingen. Klik dan op de knop Melding instellen om een nieuwe notificatiedienst toe te voegen.

We tonen als voorbeeld hoe dit met e-mail werkt. Kies bij Melding type voor Email (SMTP) en geef je meldingconfiguratie een naam. Vul de hostnaam, poort en beveiliging in, evenals de gebruikersnaam en het wachtwoord. Raadpleeg hiervoor de documentatie van je mailprovider. Vul dan ook het e-mailadres van de zender en ontvanger in. Let op: afhankelijk van je e-mailprovider liggen er beperkingen op het e-mailadres van de zender, dus je kunt hier niet zomaar iets kunt invullen. Verder kun je het onderwerp en de inhoud nog aanpassen, maar de standaardwaarden zijn doorgaans voldoende.

Klik onderaan op Testen en controleer of de e-mail in je mailbox verschijnt. Werkt het, sla deze meldingsconfiguratie dan op. Voor je dat doet, kun je ze ook nog als standaard inschakelen voor elke nieuwe monitor, en ze zelfs toepassen op alle bestaande monitors. Overigens kun je meldingen altijd nog handmatig afzonderlijk in- en uitschakelen voor elke monitor.

Laat Uptime Kuma meldingen over onbereikbare servers via e-mail sturen.