Ga naar inhoud

Auditing & Monitoring — Cheatsheet

Logging, lokale monitoring, Zabbix en SNMP — 2024–2025


Inhoudstafel


Monitoring en auditing

Begrip Doel
Monitoring toestand en prestaties opvolgen
Logging gebeurtenissen chronologisch registreren
Auditing aantonen wie wat wanneer deed
Alerting reageren wanneer een conditie optreedt
Observability gedrag verklaren vanuit metrics, logs en traces

Monitoring beantwoordt vooral wat gebeurt er nu?; auditing ondersteunt wie deed wat en was dit toegestaan?. Een metric zonder context of actiegrens is zelden bruikbaar.

Goede monitoringcyclus

doel → indicator → databron → verzameling → baseline → trigger → actie → evaluatie

Monitor wat gebruikers raakt

Een draaiend proces is geen bewijs dat de dienst werkt. Combineer resource-, service- en end-to-endcontroles.


Meetstrategie

Type Voorbeelden
Availability ping, poort, HTTP-respons, processtatus
Performance CPU, RAM, latency, throughput, queue length
Capacity vrije schijf, databasegroei, interfacesnelheid
Correctness statuscode, inhoudscontrole, checksums
Security mislukte logins, privilege changes, configwijziging
  • Maak eerst een baseline van normaal gedrag.
  • Kies interval volgens veranderingssnelheid en risico.
  • Vermijd alert fatigue: elke alert moet een eigenaar en handelingsperspectief hebben.
  • Denk aan false positives én false negatives.
  • Houd rekening met retentie, privacy, opslag en tijdsynchronisatie.

Linux-monitoring

uptime
top
free -h
df -hT
du -sh /var/*
lsblk
ip -s link
ss -tulpn
ps aux --sort=-%cpu | head
systemctl --failed
Signaal Interpretatie
load average runnable/uninterruptible taken; vergelijk met CPU-count
%wa CPU wacht op I/O
available memory bruikbaarder dan alleen free
swap in/out druk op geheugen, niet alleen toegewezen swap
filesystem usage capaciteit én inodegebruik controleren
journalctl -p warning..alert
journalctl -u ssh --since today
journalctl -f

Windows-monitoring en auditing

Get-Process | Sort-Object CPU -Descending | Select-Object -First 10
Get-Service | Where-Object Status -ne Running
Get-Counter '\Processor(_Total)\% Processor Time'
Get-Volume
Get-NetAdapterStatistics

Belangrijke hulpmiddelen: Task Manager, Resource Monitor, Performance Monitor, Event Viewer en PowerShell.

Event logs

Log Inhoud
Application applicaties en services
System drivers en Windows-componenten
Security audit events
Setup installatie/configuratie
Get-WinEvent -LogName System -MaxEvents 50
Get-WinEvent -FilterHashtable @{LogName='Security'; Id=4625; StartTime=(Get-Date).AddHours(-24)}

Audit policy bepaalt welke success/failure-events worden vastgelegd. Zonder beleid bestaat achteraf geen bewijs; te brede auditing veroorzaakt ruis en opslagdruk.


Logging

Een bruikbaar logrecord bevat timestamp met timezone, bron/host, severity, event-ID/type, identiteit, actie, resultaat en correlatie-ID.

Syslog-severity loopt van 0 Emergency tot 7 Debug; een lager nummer is ernstiger.

Niveau Betekenis
0–2 emergency, alert, critical
3–4 error, warning
5–6 notice, informational
7 debug

Centraliseer logs zodat een aanvaller ze niet eenvoudig op de bron kan wissen. Gebruik NTP, transportbeveiliging, toegangscontrole, rotatie en retentie.

Geheimen

Log geen wachtwoorden, tokens, private sleutels of onnodige persoonsgegevens.


Zabbix-architectuur

agents / SNMP / IPMI / webchecks
              ↓
       Zabbix server/proxy
              ↓
            database
              ↓
          webfrontend
Component Functie
Server polling, trapping, evaluatie en acties
Agent OS- en applicatiemetrics op host
Proxy verzamelt voor remote sites en buffert
Database configuratie, history en trends
Frontend configuratie, visualisatie en beheer

Agent passive: server vraagt data. Agent active: agent vraagt itemlijst en stuurt waarden. Active checks werken vaak beter achter NAT/firewall.


Hosts, items en preprocessing

Een host heeft naam, zichtbare naam, groepen, interface(s), templates en macro's. De hostname moet bij active agent checks exact overeenkomen.

Een item definieert:

  • type (agent, SNMP, trapper, simple check, HTTP agent...);
  • key/OID/URL;
  • datatype en eenheid;
  • update interval en history/trendretentie;
  • preprocessing en tags.

Voorbeelden van agent keys:

system.cpu.util[,user]
vm.memory.size[available]
vfs.fs.size[/,pfree]
net.if.in[eth0]

Preprocessing kan JSONPath, regex, multiplier, delta per second, trimming en discard unchanged toepassen. Test preprocessing met echte input.


Triggers, events en acties

Een trigger evalueert itemhistory en krijgt een severity. Conceptueel:

itemwaarde → triggerexpressie → problem event → action → notification/command
                                            ↓
                                      recovery event

Gebruik hysterese om flapping te vermijden: laat problem en recovery niet op exact dezelfde grens schakelen.

problem:  vrije schijf < 10%
recovery: vrije schijf > 15%

Acties bestaan uit conditions, operations en recovery/update operations. Media types bepalen kanaal (mail, webhook...); een user moet media, actieve periode en passende severity hebben.

Test de volledige keten

Een correcte trigger garandeert geen melding. Test event, action conditions, user permissions, media en aflevering.


Templates en visualisatie

Templates bundelen items, triggers, graphs, discovery rules, dashboards en macro's. Link hetzelfde template aan meerdere hosts en override verschillen met user macros zoals {$CPU.WARN}.

  • Low-level discovery maakt automatisch items/triggers voor filesystems of interfaces.
  • Graphs tonen tijdreeksen; dashboards combineren widgets.
  • Maps tonen afhankelijkheden en status; gebruik ze voor operationeel overzicht, niet als statische decoratie.

Een trigger dependency voorkomt vervolgmeldingen: als router down is, hoeven alle onbereikbare hosts erachter niet afzonderlijk te alarmeren.


SNMP

Term Betekenis
Manager/NMS vraagt en ontvangt data
Agent draait op gemonitord apparaat
MIB semantische beschrijving van objecten
OID numerieke objectidentifier
GET/GETNEXT/GETBULK data ophalen
SET waarde wijzigen
Trap/Inform agent stuurt gebeurtenis
Versie Beveiliging
v1 community string, geen echte beveiliging
v2c efficiënter/GETBULK, nog community string
v3 gebruikers, authenticatie en privacy/encryptie

Gebruik waar mogelijk SNMPv3 authPriv, beperk bron-IP's en geef read-only toegang.

snmpget -v2c -c public 192.0.2.10 1.3.6.1.2.1.1.3.0
snmpwalk -v2c -c public 192.0.2.10 1.3.6.1.2.1

ifIndex kan na reboot/configwijziging veranderen; discovery en interface-identificatie op stabiele kenmerken voorkomen verkeerde grafieken.


Web- en logmonitoring

Een webscenario bestaat uit stappen met URL, methode, headers/body, verwachte status, contentcheck en timeout. Controleer bij HTTPS ook certificaatgeldigheid en vervaldatum.

Logitems moeten nieuw toegevoegde regels volgen, niet telkens het volledige bestand herlezen. Gebruik logrotatiebewuste keys en gerichte regex.

beschikbaarheid: HTTP 200
correctheid:     pagina bevat verwacht kenmerk
performance:     response time onder grens
security:        TLS-certificaat geldig en niet bijna verlopen

Diagnosevolgorde Zabbix

  1. Is host/interface bereikbaar vanaf server/proxy?
  2. Kloppen agent/SNMP credentials en firewall?
  3. Wordt item supported en komt recente data binnen?
  4. Kloppen datatype, preprocessing en interval?
  5. Evalueert trigger zoals verwacht?
  6. Matcht de action en kan het media type leveren?