$ cd ./projects/gotyeah-monitor/
← cd ../ (retour aux projets)

$ cat gotyeah-monitor.md

GotYeah Monitor

Plateforme de monitoring d'uptime auto-hébergée : moniteurs HTTP, ping et port, SLA et page de statut publique, journal d'incidents, maintenance planifiée, équipes avec rôles, connexion par le SSO GotYeah et pilotage depuis Claude via MCP.

date: 12/04/2026

#monitoring #uptime

stack: FastAPI · Python · SQLAlchemy async · Alembic · MySQL · SvelteKit · Tailwind · OpenID Connect · MCP · Docker · GitHub Actions

$ cat README.md

Outil de monitoring d’uptime conçu pour répondre à un besoin concret : surveiller mes propres services auto-hébergés sans dépendre d’un SaaS payant. Il est depuis devenu collaboratif, avec des équipes, des alertes ciblées et une page de statut publique.

Surveillance

  • Trois types de moniteurs, HTTP, ping et port, avec code de statut attendu, mot-clé présent ou absent, seuil de latence et intervalle de vérification propre à chaque moniteur (10 min par défaut).
  • Expiration SSL, suivie avec des alertes à J-30, J-14, J-7 et J-1.
  • Disponibilité et SLA, pourcentage d’uptime sur 24 h, 7, 30 et 90 jours sur chaque carte, et rapport SLA mensuel.
  • Historique, latence et résultats des vérifications sur 7 jours glissants, avec une fenêtre d’affichage réglable par moniteur.

Alertes et incidents

  • Alertes par email et webhook (Discord, Slack, ntfy), sur panne après deux échecs consécutifs pour éviter les fausses alertes, sur rétablissement, sur latence élevée et sur expiration SSL.
  • Destinataires ciblés, par moniteur et par groupe ; sans destinataire configuré, les administrateurs de l’équipe sont prévenus, aucune alerte ne se perd.
  • Journal d’incidents, ouverture et fermeture automatiques, acquittement et note de post-mortem.
  • Maintenance planifiée, des fenêtres qui coupent alertes et ouvertures d’incident pendant que les vérifications continuent.

Équipes et partage

  • Équipes et rôles, chaque moniteur appartient à une équipe, avec trois rôles : administrateur, membre et lecture seule.
  • Groupes et environnements, tableau de bord groupé et repliable, recherche, tri, étiquette prod, staging ou dev.
  • Page de statut publique et badge d’uptime à intégrer, qui n’affichent que les moniteurs marqués publics.
  • Jetons d’API en lecture seule, pour interroger les données depuis Grafana ou un script.

Connexion et pilotage par l’IA

  • SSO GotYeah, la connexion passe par le compte unique GotYeah (OpenID Connect), commun à mes autres outils ; un mode « GotYeah uniquement » masque l’ancien formulaire.
  • Pilotage MCP depuis Claude, via le hub MCP commun à mes outils : lister les équipes, consulter, créer, modifier et supprimer moniteurs et groupes, avec les mêmes droits que dans l’interface.

Architecture

  • Stack séparée, API FastAPI + frontend SvelteKit, avec environnements dev et prod distincts.
  • Auto-surveillance, la boucle de vérification expose son propre état de santé et redémarre si elle s’arrête.
  • CI/CD GitHub Actions, contrôles et mise en production automatiques.

Uptime monitoring tool built to address a concrete need: keeping an eye on my own self-hosted services without relying on a paid SaaS. It has since become collaborative, with teams, targeted alerts and a public status page.

Monitoring

  • Three monitor types, HTTP, ping and port, with expected status code, keyword present or absent, latency threshold and a check interval set per monitor (10 min by default).
  • SSL expiry, tracked with alerts 30, 14, 7 and 1 day before.
  • Availability and SLA, uptime percentage over 24 h, 7, 30 and 90 days on every card, plus a monthly SLA report.
  • History, latency and check results over a rolling 7-day window, with a display window set per monitor.

Alerts and incidents

  • Email and webhook alerts (Discord, Slack, ntfy), on outage after two consecutive failures to avoid false alarms, on recovery, on high latency and on SSL expiry.
  • Targeted recipients, per monitor and per group; with no recipient configured, the team’s admins are notified, so no alert gets lost.
  • Incident log, opened and closed automatically, with acknowledgement and a post-mortem note.
  • Scheduled maintenance, windows that mute alerts and incident creation while checks keep running.

Teams and sharing

  • Teams and roles, every monitor belongs to a team, with three roles: admin, member and read-only.
  • Groups and environments, grouped, collapsible dashboard, search, sorting, prod, staging or dev label.
  • Public status page and embeddable uptime badge, showing only the monitors marked public.
  • Read-only API tokens, to query the data from Grafana or a script.

Sign-in and AI control

  • GotYeah SSO, sign-in goes through the single GotYeah account (OpenID Connect), shared with my other tools; a “GotYeah only” mode hides the old form.
  • MCP control from Claude, through the MCP hub shared by my tools: list teams, view, create, update and delete monitors and groups, with the same permissions as in the interface.

Architecture

  • Separate stack, FastAPI API + SvelteKit frontend, with distinct dev and prod environments.
  • Self-monitoring, the check loop exposes its own health status and restarts if it stops.
  • GitHub Actions CI/CD, automated checks and releases.