Hopp til innhold
Skip to content

Du skal følge en måleverdi fra Proxmox til InfluxDB og videre til en graf i Grafana. Først setter du opp de to containerne. Deretter kobler du til Proxmox og kontrollerer at grafen viser nye data fra riktig avsender.

I Level 1 leste du de samme måleverdiene i Proxmox og med kommandoer i VM-en. Nå lagrer du dem selv, slik at du kan velge tidsrom, sammenligne og bygge egne visninger.

Før du begynner

Du trenger en Linux-VM med nettverk, ledig plass og Docker Engine med Compose-pluginen. VM-veiledningen viser ISO-valg, konsoll og root/sudo. Docker Level 1 viser installasjon og en testcontainer. Compose med et ferdig Nginx-image forklarer Compose; du trenger ikke lage en Flask-applikasjon for denne øvelsen.

Kjør docker compose version og docker run --rm hello-world i VM-ens konsoll. Begge skal fungere. Mangler brukeren Docker-tilgang, bruk sudo foran Docker-kommandoene videre, eller arbeid som root uten sudo. SSH er valgfritt. Proxmox-vertens Shell er en annen maskin.

Tilgang til Proxmox-metrikker

Avklar hvem som kan legge til en metrikktjener under Datacenter. Egen VM-tilgang gir ikke nødvendigvis denne rettigheten. Du kan sette opp Grafana og InfluxDB mens du venter på tilgangen. Level 4 krever fungerende Grafana, men ikke Proxmox-metrikker.

Oppsettet er for en avgrenset øvings-VM i et labnettverk. HTTP-portene 3000 og 8086 skal være tilgjengelige for de aktuelle labmaskinene, ikke publiseres på internett. Docker-publiserte porter krever også kontroll av nettverkstilgang; ikke anta at en regel i UFW alene avgrenser dem.

1. Opprett arbeidsmappen

Kjør i VM-en:

mkdir -p ~/overvaking
cd ~/overvaking

Lag filen compose.yaml i denne mappen med innholdet under. Du kan bruke nano compose.yaml: lim inn, lagre med Ctrl+O, bekreft filnavnet med Enter, og avslutt med Ctrl+X. Bruk samme framgangsmåte for filene videre.

services:
  grafana:
    image: grafana/grafana:13.2.4
    restart: unless-stopped
    ports:
      - "3000:3000"
    environment:
      GF_SECURITY_ADMIN_USER: admin
      GF_SECURITY_ADMIN_PASSWORD: ${GRAFANA_ADMIN_PASSWORD:?Sett passordet i .env}
    volumes:
      - grafana-data:/var/lib/grafana

  influxdb:
    image: influxdb:2.9.1
    restart: unless-stopped
    ports:
      - "8086:8086"
    volumes:
      - influxdb-data:/var/lib/influxdb2
      - influxdb-config:/etc/influxdb2

volumes:
  grafana-data:
  influxdb-data:
  influxdb-config:

Her bruker vi InfluxDB 2.x og senere spørrespråket Flux. Ikke bytt til influxdb:latest eller InfluxDB 3: oppsettsfeltene og spørrespråket er forskjellige. De navngitte volumene bevarer data når containerne erstattes. De er ikke sikkerhetskopier.

2. Opprett passord og start

Lag et tilfeldig Grafana-passord uten å overskrive en eksisterende .env:

umask 077
if [ ! -f .env ]; then
  grafana_password="$(openssl rand -hex 24)" &&
    printf 'GRAFANA_ADMIN_PASSWORD=%s\n' "$grafana_password" > .env
fi
chmod 600 .env
docker compose config --quiet
docker compose up -d
docker compose ps

openssl lager tilfeldige tegn. Hvis kommandoen mangler, installer pakken openssl med sudo apt install openssl (uten sudo som root), og kjør passordsteget igjen. config --quiet kontrollerer Compose-filen uten å skrive ut passordet. Ved feil må du rette filen før up -d.

Begge tjenestene skal vises som kjørende. Les eventuelle oppstartsfeil med docker compose logs --tail=30 grafana influxdb.

Åpne .env med nano .env for å lese passordet, og logg inn som admin på http://VM-IP:3000 fra nettleseren på PC-en din. Finn VM-ens IP-adresse med ip a; ikke bruk Proxmox-vertens adresse. Passordet settes ved første oppstart med et nytt Grafana-volume. Senere passordendring gjøres i Grafana.

Del ikke .env, passord eller tilgangstegn i skjermbilder eller innleveringer. Bruker du Git, legg .env i .gitignore før første commit.

3. Opprett lagring og tilgangstegn i InfluxDB

Åpne http://VM-IP:8086 og velg Get Started. Opprett egen bruker og et eget passord, organisasjonen piggy-lab og en bucket kalt proxmox. En bucket er et navngitt lagringsområde for tidsseriedata. Sett gjerne lagringstiden til sju dager i øvingsmiljøet, slik at data ikke vokser uten grense.

Hvis du allerede har satt opp InfluxDB i disse volumene, logg inn i det eksisterende oppsettet i stedet for å initialisere det på nytt.

Under Load Data, API Tokens, oppretter du to Custom API Tokens for bucketen proxmox:

Navn Tilgang Brukes av
proxmox-write Bare Write til proxmox Proxmox sender måleverdier
grafana-read Bare Read fra proxmox Grafana leser måleverdier

Kopier hvert tilgangstegn når det opprettes og oppbevar det privat. Gi ikke de to tjenestene administratorens første tilgangstegn. Et tilgangstegn er en hemmelighet som gir API-tilgang, ikke et bucket-navn.

4. La Proxmox sende metrikker

Dette steget utføres av den som har riktig tilgang på Proxmox-verten. I webgrensesnittet åpner vedkommende Datacenter, Metric Server, Add, InfluxDB. Vis eventuelle avanserte felt og bruk følgende verdier:

Felt Verdi
ID Et unikt navn, for eksempel piggy-influx
Server IP-adressen til VM-en med InfluxDB
Port 8086
Protocol HTTP; ikke standardvalget UDP
Organization piggy-lab
Bucket proxmox
Token Tilgangstegnet proxmox-write
Enabled Aktivert

Organisasjon og bucket må stemme med InfluxDB. Dette er v2-API-et over HTTP, ikke det eldre UDP-oppsettet på port 8089.

Vent litt, åpne Data Explorer i InfluxDB og velg bucketen proxmox og et tidsrom som omfatter de siste minuttene. Bruk filtrene til å velge en måleverdi og en avsender. Nyere Proxmox-oppsett bruker blant annet målingen system og merkelappen object for å skille noder og VM-er. Undersøk hvilke felt ditt oppsett faktisk sender.

Kontrollpunkt: Du skal kunne finne en verdi med et nylig tidsstempel og peke ut hvilken vert eller VM den gjelder. Hvis bucketen er tom, bruk feilsøkingen nederst før du lager et dashboard.

5. Koble Grafana til InfluxDB

I Grafana åpner du Connections, legger til datakilden InfluxDB og fyller ut:

Innstilling Verdi
URL http://influxdb:8086
Product, hvis feltet vises InfluxDB OSS 2.x
Query language Flux
Organization piggy-lab
Default Bucket proxmox
Token Tilgangstegnet grafana-read

Velg Save & test. Grafana skal bekrefte forbindelsen. influxdb er tjenestenavnet i det interne Compose-nettverket. localhost inne i Grafana-containeren viser til Grafana-containeren selv.

Proxmox sender til InfluxDB på VM-IP og port 8086. Grafana leser fra InfluxDB i det interne nettverket og viser resultatet til nettleseren på port 3000.

Proxmox sender nye verdier til databasen. Grafana leser dem når du åpner en visning. Nettleseren henter Grafana-siden; den bruker ikke InfluxDB-containerens interne tjenestenavn.

6. Vis og tolk én måleverdi

I InfluxDB Data Explorer velger du én numerisk måleverdi, for eksempel CPU-bruk fra én VM. Filtrer til riktig avsender og åpne Script Editor for å se Flux-spørringen som filtrene har laget. Kopier spørringen, uten tilgangstegn.

I Grafana oppretter du et dashboard med én visualisering, velger InfluxDB-datakilden og limer spørringen inn i Flux-editoren. Velg samme tidsrom som i InfluxDB. Lagre panelet med et navn som sier hva og hvem det viser.

Forklar enheten og kontroller om CPU-verdien vises som andel eller prosent før du velger visningsenhet. Ikke tolk en akse ut fra grafens form alene. Oppdater tidsrommet og kontroller at det kommer nye punkter; et gammelt skjermbilde viser ikke at innsamlingen fortsatt virker.

Du er klar for neste del når du kan vise en nylig verdi i både InfluxDB og Grafana og forklare veien mellom dem, muntlig eller skriftlig. En vellykket Save & test alene bekrefter ikke at Proxmox sender data.

Hvis noe går galt

Symptom Undersøk først
config --quiet feiler YAML-innrykk, filnavn og at .env har en verdi for GRAFANA_ADMIN_PASSWORD. Ikke lim hele konfigurasjonen med hemmeligheter inn i en innlevering.
En port er opptatt Finn tjenesten som allerede bruker porten. Hvis du endrer venstre portnummer i Compose, må nettleseren og Proxmox bruke den nye vertsporten.
Du får ikke åpnet en nettside Sjekk docker compose ps, VM-IP, port og nettverkstilgang til VM-en.
InfluxDB har ingen data Kontroller HTTP, port, organisasjon, bucket og skrivetilgang på Proxmox. Kontroller så avsender og tidsrom i Data Explorer.
Grafana får 401 eller 403 Lesetegnet må gjelde riktig bucket og organisasjon.
Grafana kan ikke nå databasen Bruk http://influxdb:8086 i datakilden, og kontroller at begge tjenestene er startet fra samme Compose-prosjekt.
Data finnes bare i InfluxDB Bruk samme spørring, avsender og tidsrom i begge verktøyene.

Neste steg og stopp

Fortsett til Level 4 – Containerlogger med Alloy og Loki i samme arbeidsmappe. Du trenger ikke Portainer; det kan brukes som et valgfritt verktøy hvis du allerede kjenner det.

Du kan stoppe de to tjenestene med docker compose stop og starte dem igjen med docker compose up -d. Dette beholder volumene. Unngå docker compose down -v når du vil beholde oppsett og data. Hvis Proxmox fortsatt sender hit, avklar at metrikktjeneren deaktiveres før du avslutter øvingsmiljøet.

Kilder: Proxmox om eksterne metrikktjenere, InfluxDB 2 i Docker, InfluxDB-tilgangstegn, Grafana: InfluxDB-datakilde og Docker og brannmur.