Observability med Docker

Skip to content

I denne oppgaven skal du sette opp Grafana og koble det til Proxmox - slik at du kan overvåke serverne dine fra et dashboard i nettleseren. Du kommer til å jobbe med ekte verktøy som brukes i produksjonsmiljøer verden over. 🌍

Hva er observability? 🔍

Observability handler om å kunne forstå hva som skjer inni systemene dine, basert på det de sender ut - metrikker, logger og traces. Tenk på det som forskjellen mellom å stirre på en lukket boks og å ha et vindu inn i den.

I praksis betyr det: kan du svare på “hvorfor er serveren treg?” eller “hva skjedde klokken 03:14 i natt?” uten å logge inn på serveren og lete manuelt?

Forutsetninger

Denne oppgaven forutsetter at du har tilgang til Proxmox der du kan opprette en virtuell maskin. Du trenger også grunnleggende kjennskap til Linux-terminalen.


Del 1: Grunnoppsett

Målet med del 1 er å få opp en virtuell maskin med Docker og Portainer, slik at du har et fundament å bygge videre på.

Oppgave

  1. Opprett en VM i Proxmox med Debian 12
  2. Installer Docker
  3. Installer Portainer

Sjekkliste ✅

  • Docker kjører (docker --version gir output)
  • Du får tilgang til Portainer i nettleseren (https://<ip>:9443)
  • Du kan starte en testcontainer (docker run hello-world)
Tips for installasjon

Start med å oppdatere systemet:

sudo apt update && sudo apt upgrade -y

Følg deretter de offisielle guidene - de er gode og oppdaterte! Ikke prøv å finne snarveier her; Docker-installasjonen har noen steg som er viktige å gjøre riktig. 🔧

Ressurser

Hva Lenke
Docker på Debian Install Docker Engine on Debian
Portainer Install Portainer CE with Docker on Linux

Del 2: Grafana og InfluxDB

Nå skal vi installere Grafana og InfluxDB som Docker-containere. Grafana er dashboardet vi ser data i, og InfluxDB er databasen som tar imot metrikker fra Proxmox.

Hva er InfluxDB?

InfluxDB er en tidsseriedatabase - den er laget for data med tidsstempel, som CPU-bruk, minneforbruk og nettverkstrafikk. Den trenger ikke mye konfigurasjon - vi bruker den mest som et mellomledd mellom Proxmox og Grafana.

Oppgave

  1. Installer Grafana som Docker-container
  2. Installer InfluxDB som Docker-container
  3. Sjekk at begge kjører og er tilgjengelige i nettleseren

Sjekkliste ✅

  • Grafana er tilgjengelig i nettleseren (standard port 3000)
  • InfluxDB kjører (du kan sjekke med docker ps)
Docker-tips

Husk å gi containerne faste porter og eventuelt et felles Docker-nettverk, slik at de kan snakke sammen. Se dokumentasjonen for hvilke porter og miljøvariabler du trenger.

Ressurser

Hva Lenke
Grafana med Docker Run Grafana via Docker
InfluxDB med Docker Install InfluxDB as a Docker container

Del 3: Proxmox-metrikker i Grafana

Nå kommer det gøyeste - vi kobler Proxmox til InfluxDB, slik at Proxmox automatisk sender metrikker (CPU, minne, disk, nettverk) til databasen vår. Deretter kobler vi Grafana til InfluxDB for å visualisere det hele. 📊

Oppgave

  1. Konfigurer Proxmox til å sende metrikker til InfluxDB
    • I Proxmox: gå til DatacenterMetric ServerAddInfluxDB
    • Fyll inn IP-adressen til VM-en din og porten til InfluxDB
  2. Legg til InfluxDB som datakilde i Grafana
    • I Grafana: gå til ConnectionsData sourcesAdd data sourceInfluxDB
  3. Lag et dashboard som viser metrikker fra Proxmox

Sjekkliste ✅

  • Proxmox sender metrikker til InfluxDB
  • InfluxDB er lagt til som datakilde i Grafana
  • Du ser metrikker (f.eks. CPU-bruk) i et Grafana-dashboard
Ferdig dashboard

Du trenger ikke lage alt fra bunnen av! Søk etter “Proxmox” på Grafana Dashboards - det finnes ferdige dashboards du kan importere med et par klikk. Prøv det gjerne først, og tilpass etterpå. 🎨

Ser du ingen data?
  • Sjekk at Proxmox-konfigurasjonen peker på riktig IP og port
  • Sjekk at InfluxDB-containeren faktisk kjører (docker ps)
  • Sjekk at Grafana bruker riktig database-navn og URL i datakilden
  • Vent noen minutter - det kan ta litt tid før data begynner å dukke opp

Del 4: Logging med Loki

Nå skal vi sette opp sentralisert logging med Grafana Loki. I stedet for å logge inn på hver server og lese loggfiler manuelt, samler Loki alle logger på ett sted - og du kan søke gjennom dem i Grafana.

Hva er egentlig en logg? 🤔

En logg er rett og slett en tekstlinje som beskriver noe som skjedde, med et tidsstempel. For eksempel:

2026-04-09 14:32:01 INFO  Bruker "admin" logget inn
2026-04-09 14:32:05 ERROR Kunne ikke koble til databasen

Når du har hundrevis av slike linjer fra mange containere, trenger du et system som Loki for å holde oversikt!

Oppgave

  1. Installer Grafana Loki som Docker-container
  2. Installer Grafana Alloy som Docker-container - Alloy samler logger fra de andre containerne og sender dem til Loki
  3. Koble Loki som datakilde i Grafana

Sjekkliste ✅

  • Loki kjører som en container
  • Alloy kjører og er konfigurert til å lese Docker-logger
  • Loki er lagt til som datakilde i Grafana
  • Du ser logger i Grafana under DrilldownLogs

Utforsk filtrene!

I Drilldown-visningen har du et sidepanel med forskjellige filtre. Prøv å klikke rundt - du kan filtrere på container, loggnivå og mer. Det er slik du finner nåla i høystakken! 🔎

Ressurser

Hva Lenke
Loki - Kom i gang Loki Get Started
Grafana Alloy Send data to Loki (Alloy er anbefalt, men det finnes flere alternativer)

Refleksjon (leveres)

Svar kort på følgende spørsmål:

  1. Hva fikk du til?
  2. Hva var vanskelig?
  3. Hva ser du i Grafana-dashboardet ditt?
  4. Hva brukes dette til i virkeligheten?
Til spørsmål 4

Tenk på hva som skjer dersom en nettbutikk plutselig blir treg midt på Black Friday. Hvordan finner utviklerne ut hva som er galt - og helst før kundene merker det? 🛒


Ekstra utfordringer 🏆

Hvis du er ferdig med oppgavene over og vil ha mer:

  • Tilpass dashboardet - Legg til flere paneler, endre visninger, og prøv ulike visualiseringstyper i Grafana
  • Lag et alerting-oppsett - Kan Grafana sende deg en melding (e-post, Slack, Discord) når noe går galt?
  • Koble til det du lærte i Utvikling - Bruk python-logging-loki til å sende logger fra en FastAPI-app direkte til Loki (se Logging-oppgavesettet i Utvikling!)

Generelle tips 🧰

  • Start enkelt og bygg videre - Ikke prøv å gjøre alt på en gang
  • Test én ting om gangen - Sjekk at hvert steg fungerer før du går videre
  • Bruk Portainer aktivt - Det gir deg god oversikt over containerne dine
  • Les feilmeldingene - Docker-logger er ofte veldig tydelige på hva som er galt
  • Bruk docker logs <container> - For å se hva en container skriver ut