Monitoring hub til Office Cluster-labbet: agents på hver Ubuntu-host pusher metrics til en central hub (Postgres + API + dashboard + Discord).
| Service | Rolle |
|---|---|
db |
Postgres 16 |
api |
FastAPI ingest, history, checks, alerts |
discord-bot |
/status, /server + alert fan-out |
frontend |
Vite/React dashboard (nginx) |
agent/ |
Metrics + Docker/temp/GPU agent (pr. host) |
cp .env.example .env
# ret AGENT_API_KEY, POSTGRES_PASSWORD, evt. Discord + SERVICE_CHECKS
docker compose up -d --build- Dashboard: http://localhost:3001
- API health: http://localhost:8000/health
CI pusher ghcr.io/mercantech/officelab-agent:latest ved ændringer i agent/ på main.
Engang-setup pr. host:
# 1) Log ind på GHCR (kun hvis pakken er privat)
echo YOUR_GHCR_TOKEN | docker login ghcr.io -u YOUR_GITHUB_USER --password-stdin
# 2) Hent compose (eller kopiér agent/-mappen én gang)
cd /opt/officelab-agent # eller hvor compose ligger
cp .env.example .env
# ret HUB_URL, AGENT_API_KEY, SERVER_ID, DISPLAY_NAME
# ved privat pakke: GHCR_USER + GHCR_TOKEN i .env
# 3) Start agent + Watchtower
docker compose --profile autoupdate up -dHerefter: merge til main → GitHub Actions bygger image → Watchtower opdaterer agenten automatisk (~5 min).
Gør pakken public under GitHub → Packages → officelab-agent (nemmest), eller brug GHCR_USER/GHCR_TOKEN med read:packages.
cd agent
cp .env.example .env
docker compose up -d --buildAgenten monterer /proc, /sys, / (ro) og Docker-socket. GPU kræver nvidia-smi på hosten. Valgfri systemd: sudo ./install-systemd.sh.
- CPU/RAM/disk, hardware-model, uptime
- Docker-containere, temperaturer, GPU, net pr. interface
- Service checks via
SERVICE_CHECKSenv (read-only på sitet) - Alert-historik (offline/threshold) + Discord fan-out
- Historik op til 30 dage + downtime + sammenlign-side
SERVICE_CHECKS=office|https://office.mercantec.tech/health|60,econ|https://econ.mercantec.tech/health|60
METRIC_RETENTION_DAYS=30DISCORD_ENABLED=true
DISCORD_BOT_TOKEN=...
DISCORD_GUILD_ID=...
DISCORD_ALERT_CHANNEL_ID=...Brug docker-compose.dokploy.yml.
APP_DOMAIN=office.mercantec.tech
CORS_ORIGINS=https://office.mercantec.tech
AGENT_API_KEY=...
POSTGRES_PASSWORD=...
SERVICE_CHECKS=office|https://office.mercantec.tech/health|60POST /api/ingestGET /api/servers·/api/servers/:id·/api/servers/:id/history?range=1h|6h|24h|7d|30dGET /api/compare?ids=a,b&range=24hGET /api/alerts·GET /api/checks·GET /api/health