−25%

på Windows vid årsbetalning, till 31/10. Till paketen

EQVPS

VPS för serverövervakning med Grafana + Prometheus

Samla CPU-, RAM-, disk- och tjänstemätvärden från alla dina servrar på ett ställe: Prometheus, node_exporter och Grafana på en VPS, bakom HTTPS.

”Servern är långsam” är en värdelös felrapport, om du inte kan öppna ett diagram och se att minnet klättrade i tre dagar före kraschen. Det är vad Prometheus och Grafana ger dig: varje servers CPU, RAM, disk och nätverk, registrerat var 15:e sekund och ritat i diagram du kan bläddra bakåt i. Lägg dem på en egen liten VPS så fortsätter de att hålla koll även när en produktionsmaskin faller.

Delarna

Det här behöver du

1. node_exporter på varje mål

apt install -y prometheus-node-exporter
# allow only the monitoring server to scrape it
ufw allow from 203.0.113.10 to any port 9100 proto tcp

Byt ut 203.0.113.10 mot adressen till din övervaknings-VPS. Lämna aldrig 9100 öppen för hela världen: den avslöjar mycket om din server.

2. Prometheus och Grafana på övervaknings-VPS:en

apt update && apt install -y docker.io docker-compose-v2 caddy
mkdir -p /opt/monitoring && cd /opt/monitoring

cat > prometheus.yml <<'EOF'
global:
  scrape_interval: 15s
scrape_configs:
  - job_name: nodes
    static_configs:
      - targets: ['198.51.100.21:9100', '198.51.100.22:9100']
EOF

cat > compose.yml <<'EOF'
services:
  prometheus:
    image: prom/prometheus
    volumes: [ "./prometheus.yml:/etc/prometheus/prometheus.yml:ro", "prom:/prometheus" ]
    command: [ "--config.file=/etc/prometheus/prometheus.yml", "--storage.tsdb.retention.time=15d", "--web.enable-remote-write-receiver" ]
    ports: [ "127.0.0.1:9090:9090" ]
    restart: unless-stopped
  grafana:
    image: grafana/grafana
    volumes: [ "grafana:/var/lib/grafana" ]
    ports: [ "127.0.0.1:3000:3000" ]
    restart: unless-stopped
volumes: { prom: {}, grafana: {} }
EOF

docker compose up -d

HTTPS framför Grafana:

echo 'grafana.example.com {
    reverse_proxy 127.0.0.1:3000
}' > /etc/caddy/Caddyfile && systemctl reload caddy

Logga in (admin / admin, byt sedan lösenord), lägg till Prometheus som datakälla på http://prometheus:9090 och importera communitypanelen ”Node Exporter Full” (ID 1860). På ungefär en minut har du en komplett systempanel.

Servrar på NAT-planer

En NAT-server tar bara emot inkommande anslutningar på sin personliga SSH-port, så Prometheus kan inte hämta från dess exporter. Vänd på riktningen: kör Prometheus i agentläge på NAT-maskinen och skicka till övervakningsservern, som redan tar emot fjärrskrivningar (flaggan --web.enable-remote-write-receiver ovan).

# /etc/prometheus/agent.yml on the NAT server
scrape_configs:
  - job_name: self
    static_configs: [ { targets: ['127.0.0.1:9100'] } ]
remote_write:
  - url: https://prom-push.example.com/api/v1/write

Exponera den mottagande slutpunkten via Caddy med basic auth i stället för att öppna port 9090 rakt av.

Ärliga anteckningar

Prometheus bygger på pull: utmärkt för en flotta du kontrollerar och besvärligt för allt bakom NAT, därav agenttricket. Den lokala lagringen är inte gjord för år av historik; för lång lagring lägger du till en fjärrlagring senare. Och paneler är bara halva värdet: sätt upp minst tre larm dag ett (disk över 85 %, minnestryck, mål nere), annars tittar du på diagrammen först när något redan har gått sönder.

Relaterat

Redo att distribuera? Betala med krypto, ingen KYC — igång på ungefär en minut.

Distribuera nu →

FAQ

Hur skiljer sig det här från Uptime Kuma?

Uptime Kuma svarar på ”är den uppe?”. Prometheus och Grafana svarar på ”varför är den långsam, och sedan när?”: mätvärden för CPU, minne, disk, nätverk och applikationer över tid. Många kör båda: Kuma för larm vid avbrott, Grafana för trender och kapacitetsplanering.

Hur mycket disk använder Prometheus?

Ungefär 1–2 byte per mätpunkt efter komprimering. Tio servrar som exporterar tusen serier var, hämtade var 15:e sekund, blir runt 60 miljoner mätpunkter per dag: i storleksordningen 100 MB. Med standardlagringen på 15 dagar blir det ett par gigabyte.

Kan jag övervaka servrar på NAT-planer?

Ja, men inte genom att hämta data: en NAT-server tar inte emot inkommande anslutningar till sin exporter. Kör Prometheus i agentläge på NAT-maskinen och skicka mätvärdena till övervakningsservern med remote_write. Övervakningsservern själv bör ligga på en plan med dedikerad IP.

Vilken plan ska övervakningsservern ha?

Micro-IP (2 GB RAM, $10/mån) klarar bekvämt ett eller två dussin värdar. Lägger du till applikationsmätvärden med hög kardinalitet eller sparar månader av data, gå upp till Small-IP. En dedikerad IP ger dig HTTPS för Grafana och en fast adress att vitlista på dina mål.

Bör övervakningsservern vara separat från det den övervakar?

Ja. Om Grafana körs på servern som just fick slut på minne förlorar du överblicken över problemet precis när du behöver den. En liten separat VPS fortsätter att fungera när en produktionsmaskin går ner.

Kommentarer

Inga kommentarer än. Bli först.

Lämna en kommentar

Kommentarer modereras innan de visas.