Better Stack — Status & Uptime für CockpitOS
Öffentliche Verfügbarkeit von Dashboard, Center-API, MCP, Center-Websites und Neben-Apps über Better Stack Uptime überwachen und optional unter status.cockpit-os.de kommunizieren.
1. Richtiger API-Token
Nicht jeder Token unter „API tokens“ funktioniert für Uptime:
- Better Stack → Settings → API tokens → Team-based tokens
- Euer Team wählen
- Unter Uptime API tokens einen Token erzeugen oder kopieren
Alternativ: Global API Token (Global API tokens) — dann bei API-Calls ggf. team_name mitgeben.
Token niemals ins Git committen. Nur lokal als Umgebungsvariable:
export BETTERSTACK_UPTIME_TOKEN='…'
Token im Chat/Slack geleakt? Sofort widerrufen und neu erzeugen.
2. Monitore per Skript (empfohlen)
Im Repo-Root:
export BETTERSTACK_UPTIME_TOKEN='…'
chmod +x scripts/betterstack-setup-monitors.sh
./scripts/betterstack-setup-monitors.sh
Dry-run:
BETTERSTACK_DRY_RUN=1 ./scripts/betterstack-setup-monitors.sh
Das Skript legt (falls noch nicht vorhanden) Checks an u. a. für:
| Komponente | URL |
|---|---|
| Dashboard | https://dashboard.cockpit-os.de |
| Öffentliche Center-API | …/api/centers/by-slug/gutenberg-center-mainz |
| MCP Remote | https://mallos-mcp-cockpit.onrender.com/health |
| Center-Website (Beispiel) | https://gutenberg-center-mainz.cockpit-os.de |
| Center Manager | https://manager.cockpit-os.de |
| Digital Signage | https://signage.cockpit-os.de |
Region: EU (regions: ["eu"]), Intervall standard 60 s.
Weitere Center-Domains bei Bedarf im Better-Stack-UI oder im Skript ergänzen.
3. Status Page im UI
- Better Stack → Status pages → Create
- Company name: CockpitOS (oder SMG Mall OS)
- Subdomain: z. B.
cockpitos→ vorübergehendcockpitos.betteruptime.com - Design: v2, Theme nach CI
- Monitors aus Schritt 2 als Komponenten zuweisen (Gruppen z. B. „Plattform“, „Center-Websites“, „Integrationen“)
- Subscribe aktivieren (E-Mail/RSS), damit Center IT Updates abonnieren kann
4. Custom Domain status.cockpit-os.de
- In der Status Page: Custom domain =
status.cockpit-os.de - Beim DNS-Provider (cockpit-os.de): CNAME wie von Better Stack angezeigt (typisch Richtung
statuspage.betteruptime.com/status.betteruptime.com— exakten Wert aus dem Dashboard übernehmen) - SSL wird von Better Stack ausgestellt (Propagation kann dauern)
Wichtig: *.cockpit-os.de zeigt auf die Center-Website (Render). Der spezifische Eintrag status.cockpit-os.de → CNAME statuspage.betteruptime.com muss beim DNS-Provider zusätzlich existieren und hat Vorrang vor dem Wildcard. Ohne diesen Eintrag landet status als Center-Slug auf der Mall-Website („Center nicht gefunden“).
Prüfen (nach Propagation, TTL ca. 1 h):
dig @8.8.8.8 status.cockpit-os.de CNAME +short
# → statuspage.betteruptime.com.
curl -sI https://status.cockpit-os.de/ | head -3
# Link-Header mit /assets/public_status_pages… = Better Stack (nicht Next.js/_next/static)
5. Alerts
- E-Mail: bei Monitoren standardmäßig an (Skript)
- Slack / Teams: Better Stack → Integrations → Notification channel → an Monitore oder Escalation Policy hängen
- PagerDuty: nur wenn ihr On-Call habt
Render selbst hat keine Logo-Integration im Onboarding — das ist normal; Render-Services werden über HTTPS-URLs (Custom Domain oder *.onrender.com) geprüft.
6. Was wir bewusst nicht automatisch messen
- PostgreSQL / Redis auf Render — keine öffentliche URL; interne Alerts über Render Dashboard oder später OTel (z. B. Dash0)
- Einzelne Center-Custom-Domains — nach Bedarf manuell hinzufügen (Kurpfalz, Rathaus Galerie, …)
Siehe auch
- Public Center-Website API — Vertrag
- Render-Blueprint:
render.yaml(Service-Namen & Domains)
Nutzungsstatistik: Seitenaufrufe werden anonymisiert erfasst. Im Umami-Dashboard nach diesem Pfad filtern: /developer-guide/better-stack-status-setup