Page de statut
Fonctionnalité en cours de déploiement. L'interface décrite ici est celle de la prochaine livraison : elle peut encore évoluer, et n'est pas forcément activée sur votre tenant.
La supervision est en cours de déploiement ; les domaines personnalisés et les fenêtres de maintenance ne sont pas encore disponibles.
Une page de statut montre publiquement l'état de vos services, leur disponibilité sur 24 h,
30 et 90 jours, et un historique jour par jour. Elle est servie par la plateforme à
l'adresse https://status.<tenant>.dev.stackngo.app/, à partir de vos moniteurs.
Prérequis
- Une session de tenant (
sng tenant use acme) et le droitdeploy:write. - Au moins un moniteur.
1. Publier la page
apiVersion: monitoring.stackngo.io/v1alpha1
kind: StatusPage
metadata:
name: default # "default" : servie à la racine de status.<tenant>…
spec:
title: État des services Acme
groups: # sections publiques, dans l'ordre d'affichage
- name: API
monitors: [api] # une ligne par moniteur, sous son displayName
- name: Site web
components: # lignes nommées (voir « Regrouper et nommer les lignes »)
- name: Site web
monitors: [www, www-assets]
sng apply infra/StatusPage/default.yml
Il n'y a pas de commande sng dédiée : partez du gabarit
sng template gen StatusPage default > status.yml, puis sng apply.
La page est en ligne quelques instants plus tard :
https://status.acme.dev.stackngo.app/
2. Ce que la page affiche
-
Un état global : « Tous les services sont opérationnels », « Incident en cours sur certains services » ou « Certains services ne remontent pas de mesures ».
-
Par section, une ligne par moniteur de
monitors(sous sondisplayName, ou son nom) et une ligne par entrée decomponents(sous sonname), avec son état (opérationnel, panne, inconnu, suspendu) et sa disponibilité sur 24 h, 30 j et 90 j. -
Un historique par jour sur
historyDaysjours (30 ou 90, défaut 90). -
La latence p95 sur 24 h si
showLatency: true. -
En pied de page, la mention « Powered by stackngo ».
La page n'affiche jamais les cibles (URL, hôtes, ports) : seulement les libellés. Choisissez
des displayName présentables (« API publique », pas api-prod-gra), ou nommez les lignes
avec components.
3. Regrouper et nommer les lignes
Une entrée de components est une ligne publique sous son propre name.
Nommer une ligne : avec un seul moniteur, la ligne affiche name au lieu du
displayName du moniteur. Le moniteur garde son displayName pour vos alertes.
Réunir plusieurs moniteurs en une ligne : avec plusieurs moniteurs (10 au plus), la ligne
combine leurs états selon combine :
combine | La ligne est opérationnelle… | Usage |
|---|---|---|
All (défaut) | si tous les moniteurs le sont : un seul en panne suffit à passer la ligne en panne | Un service qui dépend de plusieurs points (API publique et sa base) |
Any | si au moins un moniteur l'est | Des points redondants (deux régions, deux frontaux) |
apiVersion: monitoring.stackngo.io/v1alpha1
kind: StatusPage
metadata:
name: default
spec:
title: État des services Acme
groups:
- name: API
components:
- name: API publique # une seule ligne pour deux sondes
monitors: [api-public, api-ready]
combine: All
- name: Site web
components:
- name: Site web
monitors: [www-gra, www-sbg]
combine: Any
- name: Base de données # renomme le moniteur db-prod
monitors: [db-prod]
Pour une ligne combinée, la disponibilité sur 24 h, 30 j, 90 j et l'historique sont calculés sur l'état combiné, minute par minute (heure par heure au-delà de 24 h), et non comme une moyenne des moniteurs. La latence p95 affichée est celle du moniteur le plus lent.
Dans une section, les lignes de monitors s'affichent avant celles de components. Un
moniteur ne peut figurer qu'une seule fois par page.
Les badges restent par moniteur : /badge/api-ready.svg fonctionne pour un moniteur affiché
au sein d'une ligne combinée.
4. Plusieurs pages
Une page nommée autrement que default est servie sous un chemin :
metadata.name | Adresse |
|---|---|
default | https://status.acme.dev.stackngo.app/ |
interne | https://status.acme.dev.stackngo.app/interne |
Le nombre de pages dépend du tier : 1 en 3XS et 2XS, 2 en XS et S, 3 en M… Voir
Tiers et quotas.
Toutes les pages sont accessibles sans authentification. Ne listez sur une page que ce que vous acceptez de montrer.
5. Résumé JSON et badges
Chaque page expose son contenu en JSON, pour l'intégrer ailleurs :
curl -s https://status.acme.dev.stackngo.app/api/v1/summary.json # page default
curl -s https://status.acme.dev.stackngo.app/summary.json # même document, à la racine
curl -s https://status.acme.dev.stackngo.app/api/v1/pages/interne/summary.json
{
"title": "État des services Acme",
"overall": "operational",
"message": "Tous les services sont opérationnels",
"groups": [
{
"name": "API",
"state": "operational",
"components": [
{ "name": "API publique", "state": "operational", "uptime24h": 1, "uptime30d": 0.9995, "uptime90d": 0.9991, "days": [ { "date": "2026-10-07", "uptime": 1 } ] }
]
}
],
"historyDays": 90,
"updatedAt": "2026-10-07T10:12:00Z"
}
Les valeurs d'uptime vont de 0 à 1. États possibles : operational, outage, unknown,
paused. La réponse autorise les appels depuis n'importe quel site (CORS).
Un badge SVG par moniteur affiché sur une page :

Le badge porte « statut | opérationnel », « panne », « suspendu » ou « inconnu ». Un moniteur qui ne figure sur aucune page publiée n'a pas de badge (404).
Vérification
curl -s -o /dev/null -w '%{http_code}\n' https://status.acme.dev.stackngo.app/
200
Un 404 (« page introuvable ») signifie que la page n'existe pas ou a été refusée par la
plateforme (voir « Erreurs fréquentes »).
Fenêtres de maintenance
Fonctionnalité en préparation. Cette page décrit l'interface cible pour recueillir vos retours ; rien n'est encore utilisable.
Le manifeste MaintenanceWindow
est accepté par sng apply pour figer le format, mais il n'a aucun effet dans cette
version : les alertes ne sont pas silencées, l'état « maintenance » n'apparaît pas sur la
page et la fenêtre n'est pas exclue du calcul d'uptime. Pour éviter les alertes pendant une
intervention, suspendez les moniteurs concernés (paused: true) : ils apparaissent alors
« suspendu » sur la page.
Pour aller plus loin
- Délais : l'état d'un moniteur est relu à chaque affichage, mais la page peut rester en cache 30 secondes dans le navigateur ; les uptimes sont recalculés toutes les 30 secondes, l'historique toutes les 10 minutes.
- Débit : 5 requêtes par seconde et par adresse IP (rafales tolérées) ; au-delà,
429. - Domaine personnalisé :
customDomainsexiste dans le format, mais une page qui en déclare est refusée (NotSupported) dans cette version. Retirez le champ. - Moniteur supprimé : il disparaît de la page ; une page qui le liste encore reste servie sans lui
(
WaitingForMonitor). Mettez la page à jour dans le mêmesng apply. - Adresse de la page : le nom
statusest réservé sous la zone de votre tenant ; une App ou un site ne peut pas l'utiliser. - Nom de page : évitez
healthz, qui correspond à une route technique de la plateforme (la page ne serait pas servie).
Erreurs fréquentes
| Symptôme | Cause | Correction |
|---|---|---|
404 page introuvable sur l'adresse | Page refusée : moniteur affiché deux fois (Invalid), customDomains renseigné (NotSupported), ou nombre de pages du tier dépassé (QuotaExceeded) | Corriger la liste des moniteurs, retirer customDomains, supprimer une page |
| L'adresse ne résout pas ou le certificat est invalide | Le certificat de status.<tenant> est émis à la première page acceptée (quelques minutes) ; la publication DNS de cette adresse n'est pas garantie sur tous les tenants dans cette version | Réessayer plus tard ; si cela dure, contacter le support |
503 statut momentanément indisponible | Les mesures sont momentanément indisponibles | Réessayer quelques instants plus tard |
| Un composant reste « inconnu » | Moniteur refusé (intervalle, cible, quota) ou sans mesure récente | Voir Moniteurs |
sng apply refuse : spec.groups: … should have at least 1 items | Page sans section | Au moins une section |
sng apply refuse : monitors ou components requis | Section vide | Lister des moniteurs dans monitors ou components |
sng apply refuse : combine … Unsupported value | Valeur de combine inconnue | All ou Any |
Voir aussi
- Moniteurs d'uptime
- Canaux de notification
- Référence :
StatusPage,MaintenanceWindowetMonitor