Aller au contenu

Supervision

Myeline expose plusieurs endpoints de supervision pour brancher votre stack obs (Prometheus / Grafana, Uptime Kuma, Zabbix, Datadog, Sentry…).

Endpoints

/healthz — liveness

Toujours 200 si le process Flask répond. Ne touche aucune dépendance externe. Idéal pour les health probes Kubernetes / Podman ou un load balancer.

$ curl -i https://votre-domaine/healthz
HTTP/1.1 200 OK
Content-Type: application/json

{"status": "ok", "version": "v2026.05.01"}

/health — readiness

Vérifie l'état des dépendances critiques :

{
  "status": "ok",
  "checks": {
    "db": "ok",
    "redis": "ok",
    "ollama": "ok",
    "chromadb": "ok",
    "mistral": "ok"      // souverain-hybride uniquement
  }
}

Renvoie 503 si une dépendance critique (DB ou Redis) est down, 200 avec degraded si une dépendance non critique (Ollama ou provider IA) est down. À utiliser pour les readiness probes.

/status — page publique

https://votre-domaine/status affiche :

  • L'état actuel de chaque dépendance (vert / orange / rouge)
  • L'uptime sur 30 jours sous forme de barres (1 par tranche d'1 heure)
  • L'historique des incidents > 5 minutes

Alimentée par le cron record_status (toutes les 5 min). Pratique à partager avec vos utilisateurs internes.

/metrics — Prometheus

Format texte Prometheus standard, scrapable toutes les 15-60 s :

# HTTP
myeline_http_requests_total{method,route,status}
myeline_http_request_duration_seconds{method,route}

# RAG
myeline_rag_queries_total{user_id,status,scope}
myeline_rag_latency_seconds{stage}      # embed / retrieve / rerank / synth

# Ressources
myeline_users_total{tier,is_admin}
myeline_orgs_total{plan}
myeline_conversations_active

# Quotas / audit
myeline_quota_usage{user_id,metric}
myeline_audit_events_total{action}

# Provisioning Enterprise
myeline_enterprise_stacks{status}

Pas d'auth par défaut sur /metrics — restreindre via le reverse proxy (allow-list IP du scraper Prometheus).

Logs

  • Logs applicatifs : sortie standard du conteneur web (capturée par podman / journald). Format JSON structuré (slog-like).
  • Logs mailer (en souverain pur) : data/logs/mailer/<date>.log — chaque envoi simulé y est tracé en clair pour permettre la récupération manuelle des liens (confirmation, reset, invitation).
  • Logs cron : data/logs/cron/<task>.log.

Brancher Loki / Vector / journald → Elastic selon votre standard. Aucun PII n'est loggé hors data/logs/mailer/ (et ce dossier doit être traité comme sensible — voir RGPD).

Alertes recommandées

Alerte Sévérité Seuil
/healthz non 200 pendant 1 min critique downtime probable
/health degraded > 10 min warning dépendance externe down
db ou redis down critique impact direct utilisateurs
5xx HTTP > 1 % sur 5 min warning bug applicatif probable
RAG p95 > 30 s sur 5 min warning LLM lent / saturé
Quota usage > 90 % info scaling à anticiper
Disque libre < 20 % warning backup / chroma à purger

Templates Grafana fournis sur demande (hello@myeline.io).