Skip to content

Repository files navigation

OfficeLab

Monitoring hub til Office Cluster-labbet: agents på hver Ubuntu-host pusher metrics til en central hub (Postgres + API + dashboard + Discord).

Stack

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)

Hurtig start (hub)

cp .env.example .env
# ret AGENT_API_KEY, POSTGRES_PASSWORD, evt. Discord + SERVICE_CHECKS

docker compose up -d --build

Agent på hver server

Anbefalet: image + auto-update (ingen SSH ved opdateringer)

CI pusher ghcr.io/mercantech/officelab-agent:latest ved ændringer i agent/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 -d

Herefter: 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.

Manuel / lokal build

cd agent
cp .env.example .env
docker compose up -d --build

Agenten monterer /proc, /sys, / (ro) og Docker-socket. GPU kræver nvidia-smi på hosten. Valgfri systemd: sudo ./install-systemd.sh.

Features

  • CPU/RAM/disk, hardware-model, uptime
  • Docker-containere, temperaturer, GPU, net pr. interface
  • Service checks via SERVICE_CHECKS env (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=30

Discord

DISCORD_ENABLED=true
DISCORD_BOT_TOKEN=...
DISCORD_GUILD_ID=...
DISCORD_ALERT_CHANNEL_ID=...

Dokploy + Traefik

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|60

API

  • POST /api/ingest
  • GET /api/servers · /api/servers/:id · /api/servers/:id/history?range=1h|6h|24h|7d|30d
  • GET /api/compare?ids=a,b&range=24h
  • GET /api/alerts · GET /api/checks · GET /api/health

About

Office Cluster lab!

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages