Servermonitoring met Grafana: logs, metrieken en alerts instellen
Uw server draait, uw applicatie is live, en alles lijkt in orde. Tot het moment dat een klant u belt omdat de site al twintig minuten plat ligt — en u het als laatste weet. Herkenbaar? Dan is het tijd om serieus werk te maken van server monitoring. Met de juiste tooling ziet u problemen aankomen voordat ze uitgroeien tot incidenten, en weet u precies wat er speelt op uw infrastructuur.
In dit artikel duiken we in een praktische monitoring-stack met Grafana als hart van uw dashboards en alerting, aangevuld met de juiste log-aggregatie en real-time metrics. Of u nu één VPS beheert of een cluster van tientallen servers runt — de principes zijn dezelfde.
Waarom server monitoring niet optioneel is
Veel ontwikkelaars en systeembeheerders monitoren reactief: pas als iets kapot is, gaan ze zoeken. Dat is begrijpelijk als u druk bent, maar het is ook onnodig duur. Downtime kost geld, reputatie en zenuwen. Goede server monitoring draait om drie pijlers:
- Metrics: cijfermatige data over CPU, geheugen, schijfgebruik, netwerk en applicatieprestaties
- Logs: tekstuele gebeurtenissen uit uw systeem, applicatie en services
- Alerts: automatische notificaties wanneer iets buiten de verwachte parameters valt
Zonder metrics weet u niet hoe gezond uw server is. Zonder logs weet u niet waarom iets misging. Zonder alerts weet u niet wanneer het misging. De drie werken samen, en Grafana is het platform dat ze samenvoegt tot een coherent geheel.
De monitoring-stack: Grafana, Prometheus en Loki
Grafana is op zichzelf een visualisatietool en alerting-platform — het heeft een databron nodig. De meest gebruikte combinatie voor server monitoring ziet er als volgt uit:
- Prometheus — scrapt metrics van uw servers en applicaties en slaat ze op als tijdreeksen
- Node Exporter — draait op elke server en exporteert systeemmetrics naar Prometheus
- Loki — log-aggregatiesysteem van Grafana Labs, geoptimaliseerd voor gebruik met Grafana
- Promtail — verzamelt logs van uw systeem en stuurt ze naar Loki
- Grafana — visualiseert alles en verstuurt alerts
Deze stack is volledig open source, lichtgewicht en goed gedocumenteerd. U kunt het draaien via Docker Compose, wat de installatie aanzienlijk vereenvoudigt.
Snelle installatie met Docker Compose
Maak een bestand aan genaamd docker-compose.yml met de volgende basisstructuur:
version: '3.8'
services:
prometheus:
image: prom/prometheus:latest
volumes:
- ./prometheus.yml:/etc/prometheus/prometheus.yml
ports:
- "9090:9090" node-exporter:
image: prom/node-exporter:latest
ports:
- "9100:9100"
loki:
image: grafana/loki:latest
ports:
- "3100:3100"
promtail:
image: grafana/promtail:latest
volumes:
- /var/log:/var/log
- ./promtail-config.yml:/etc/promtail/config.yml
grafana:
image: grafana/grafana:latest
ports:
- "3000:3000"
environment:
- GF_SECURITY_ADMIN_PASSWORD=uwadminwachtwoord
Start de stack met docker compose up -d en open Grafana op poort 3000. Voeg Prometheus en Loki toe als databronnen via Configuration → Data Sources, en u bent klaar om uw eerste dashboard te bouwen.
Metrics visualiseren in Grafana
Als de stack draait, is het tijd voor het leuke werk: dashboards bouwen. Grafana heeft een uitgebreide bibliotheek van kant-en-klare dashboards op grafana.com/grafana/dashboards. Voor Node Exporter is dashboard ID 1860 de standaard — importeer het met één klik en u heeft direct inzicht in CPU-gebruik, load average, geheugen, schijf-I/O en netwerkverkeer.
Wilt u eigen panels toevoegen, dan schrijft u een PromQL-query. Een paar handige voorbeelden:
- CPU-gebruik in procenten:
100 - (avg by(instance) (rate(node_cpu_seconds_total{mode="idle"}[5m])) * 100) - Vrij geheugen:
node_memory_MemAvailable_bytes / node_memory_MemTotal_bytes * 100 - Schijfgebruik:
(node_filesystem_size_bytes - node_filesystem_free_bytes) / node_filesystem_size_bytes * 100
PromQL is krachtig maar heeft een leercurve. Begin eenvoudig, gebruik de autocomplete in de Grafana query-editor, en bouw van daaruit verder.
Alternatief: Netdata voor real-time monitoring
Wilt u direct iets werkends zonder de volledige stack op te zetten? Dan is Netdata een uitstekend alternatief. Netdata installeert met één commando:
bash <(curl -Ss https://my-netdata.io/kickstart.sh)
U krijgt direct een rijk dashboard met duizenden metrics, automatische anomaliedetectie en ingebouwde alerts. Netdata is ideaal voor snelle inzichten of als aanvulling op uw Grafana-stack. Het kan ook als databron dienen voor Grafana via de Netdata Cloud-integratie.
Logs verzamelen en doorzoekbaar maken
Metrics vertellen u dat er iets mis is. Logs vertellen u wat en waarom. Een goede server monitoring-setup zonder log-aggregatie is als een auto zonder achteruitkijkspiegel: u ziet alleen wat voor u ligt.
Met Loki en Promtail verzamelt u logs van /var/log/syslog, uw Nginx- of Apache-access logs, applicatielogs en systeemservices. Promtail labelt de logs automatisch op basis van de bronlocatie, zodat u ze in Grafana kunt filteren per server, service of logniveau.
In Grafana gebruikt u LogQL om logs te doorzoeken. Voorbeelden:
- Alle fouten van Nginx:
{job="nginx"} |= "error" - SSH-inlogpogingen:
{job="syslog"} |= "Failed password" - Logs van de laatste vijf minuten met een specifieke string:
{job="app"} |~ "timeout" [5m]
Koppel een logpaneel aan uw metrics-dashboard, zodat u bij een CPU-piek onmiddellijk ook de bijbehorende applicatielogs ziet. Daarin komt de kracht van Grafana echt tot uiting: correlatie tussen metrics en logs in één interface.
Alerts instellen: verwittigingen voordat het te laat is
De meest onderschatte functie van servermonitoring is een goed geconfigureerd alertingsysteem. Grafana beschikt over een ingebouwde alerting-engine die queries evalueert volgens een tijdschema en bij afwijkingen notificaties verstuurt.
Stel alerts in via Alerting → Alert Rules. Een typische regel ziet er als volgt uit:
- Condition: CPU-gebruik hoger dan 85% gedurende 5 minuten
- Pending period: 2 minuten (voorkomt valse meldingen bij korte pieken)
- Notificatiekanaal: Slack, e-mail, PagerDuty of webhook
Configureer notificatiekanalen via Alerting → Contact Points. Grafana ondersteunt tientallen integraties. Voor een Vlaamse hostingomgeving volstaan Slack of e-mail meestal; grotere teams kiezen voor PagerDuty of OpsGenie voor on-callrotaties.
Praktische alertdrempels voor servers
Gebruik deze drempelwaarden als startpunt en pas ze aan op uw workload:
- CPU: waarschuwing bij >75%, kritiek bij >90% gedurende 5 minuten
- Geheugen: waarschuwing bij >80%, kritiek bij >95%
- Schijf: waarschuwing bij >75%, kritiek bij >90%
- Load average: kritiek wanneer de aanhoudende load meer dan 2× het aantal CPU-cores bedraagt
- Service down: onmiddellijk kritiek — gebruik een blackbox-exporter of uptimecheck
Vermijd alertmoeheid: als u te veel alerts instelt die te snel afgaan, gaat u ze negeren. Begin conservatief en verscherp de drempels op basis van uw basislijngegevens na een week of twee.
Praktische tips voor een solide monitoringsetup
Tot slot een aantal concrete aanbevelingen uit de praktijk:
- Monitor de monitoring zelf. Stel een alert in wanneer Prometheus of Grafana niet meer bereikbaar is. Een monitoringsysteem dat zwijgt tijdens een storing, is waardeloos.
- Gebruik een retentiebeleid voor metrics. Prometheus slaat standaard 15 dagen aan data op. Overweeg een langere retentie met Thanos of Cortex voor trendanalyse.
- Sluit uw dashboards niet af voor het team. Maak Grafana toegankelijk voor ontwikkelaars — zichtbaarheid in productie verhoogt de kwaliteit van releases.
- Documenteer uw alerts. Voeg aan elke alertregel een runbook-link toe. Zo weet de dienstdoende beheerder om drie uur 's nachts precies wat te doen.
- Test uw alerts periodiek. Een alert die nooit afgaat, kan defect zijn. Simuleer bewust een situatie die de alert zou moeten activeren.
Conclusie
Servermonitoring met Grafana, Prometheus, Loki en Node Exporter geeft u volledige observeerbaarheid over uw infrastructuur: van realtime systeemmetrics tot doorzoekbare logs en proactieve alerts. De stack is opensource, schaalbaar en goed geïntegreerd.
Begin klein: installeer de stack op één server, importeer een bestaand dashboard en stel drie alerts in. Bouw van daaruit verder. De investering van een middag setup-werk betaalt zich terug in de vorm van nachten die u wél doorslaapt — omdat u weet dat Grafana u wakker maakt wanneer dat nodig is.
De sleutel is niet de perfecte stack, maar een werkende stack die u daadwerkelijk gebruikt en onderhoudt.