StatusPage
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 ne sont pas encore disponibles.
apiVersion | monitoring.stackngo.io/v1alpha1 |
kind | StatusPage |
| Appliqué par | sng apply |
| Commandes liées | sng template gen StatusPage, sng apply, sng kind list StatusPage, sng kind delete StatusPage NAME |
À quoi ça sert
Une StatusPage publie, sans authentification, l'état de vos Monitor
regroupés en composants : état courant, disponibilité sur 24 h, 30 et 90 jours, historique
jour par jour et, en option, latence. L'adresse découle du tenant :
https://status.<tenant>.dev.stackngo.app/ pour la page default, et
https://status.<tenant>.dev.stackngo.app/<nom> pour les autres. La page n'affiche jamais les
cibles sondées, seulement les libellés.
Exemple minimal
apiVersion: monitoring.stackngo.io/v1alpha1
kind: StatusPage
metadata:
name: default
spec:
title: État des services
groups:
- name: API
monitors: [api]
sng apply default.yml # https://status.<tenant>.dev.stackngo.app/
Exemple complet commenté
apiVersion: monitoring.stackngo.io/v1alpha1
kind: StatusPage
metadata:
name: default # "default" : racine de status.<tenant>… ; sinon /<nom>
spec:
title: État des services Acme # titre de la page, 1 à 120 caractères
logoURL: https://www.example.com/logo.png # logo d'en-tête, https uniquement
groups: # sections, dans l'ordre d'affichage (1 à 50)
- name: API # nom public de la section (80 car. max), unique dans la page
monitors: [api-docs] # une ligne par Monitor, sous son displayName (1 à 50)
components: # lignes nommées, après monitors (1 à 20)
- name: API publique # nom public de la ligne (80 car. max), unique dans la section
monitors: [api, api-auth] # 1 à 10 Monitors réunis en une ligne
combine: All # All (défaut) : tous opérationnels ; Any : au moins un
- name: Site web
components:
- name: Site vitrine # un seul Monitor : renomme la ligne
monitors: [www]
showLatency: true # affiche la latence p95 sur 24 h (défaut false)
historyDays: 90 # profondeur de l'historique : 30 ou 90 (défaut 90)
# customDomains: [status.example.com] # pas encore disponible : la page serait refusée
Champs
Règles de validation croisées
Le schéma refuse, dès sng apply :
titlevide ou de plus de 120 caractères ;logoURLqui ne commence pas parhttps://;groupsvide ou de plus de 50 groupes, un groupe sansmonitorsnicomponents(« monitors ou components requis »), plus de 50 moniteurs dansmonitors, plus de 20componentsou plus de 10 moniteurs par composant, un nom de moniteur qui n'est pas un label DNS, uncombineautre queAllouAny; les noms de groupes doivent en outre être uniques dans la page, et ceux des composants dans leur groupe ;historyDaysautre que30ou90; plus de 5customDomains.
Un moniteur listé qui n'existe pas (encore) dans le tenant ne fait pas refuser la page : elle est
servie avec les moniteurs présents et passe Ready=False (WaitingForMonitor) jusqu'à la création
du moniteur, sans action de votre part.
La plateforme refuse en plus, après application (Accepted=False, page non servie) :
- un moniteur affiché deux fois sur la page, dans
monitorsoucomponents(Invalid) ; - un
customDomainsrenseigné (NotSupported) ; - une page au-delà du nombre autorisé par le tier : les plus récentes sont refusées (
QuotaExceeded).
Un moniteur qui existe mais est refusé reste listé : il s'affiche « inconnu ».
StatusPage
StatusPage publie une page de statut qui affiche l'état et l'historique de vos monitors.
| Champ | Description | Défaut | Validation |
|---|---|---|---|
apiVersion string | monitoring.stackngo.io/v1alpha1 | ||
kind string | StatusPage | ||
metadata ObjectMeta | Seul metadata.name est à renseigner (nom de la ressource dans votre tenant). | ||
spec StatusPageSpec | |||
status StatusPageStatus |
StatusPageSpec
StatusPageSpec décrit une page de statut publique. Son adresse n'est pas dans le manifeste : elle est attribuée par la plateforme à partir de votre tenant et affichée dans status.url.
| Champ | Description | Défaut | Validation |
|---|---|---|---|
title string | Titre affiché en tête de page. | MaxLength: 120 MinLength: 1 | |
logoURL string | Logo affiché en en-tête (https). | MaxLength: 2048 Pattern: ^https:// Optional: {} | |
groups StatusPageGroup array | Composants affichés, dans l'ordre. | MaxItems: 50 MinItems: 1 | |
showLatency boolean | Affiche la latence p95 sur 24 h. | Optional: {} | |
historyDays integer | Profondeur de l'historique en jours. | 90 | Enum: [30 90] |
customDomains string array | Vos propres domaines pour la page (pas encore disponible : un manifeste qui en contient n'est pas accepté). | MaxItems: 5 Optional: {} |
StatusPageStatus
StatusPageStatus : adresse publique et acceptation de la page.
| Champ | Description | Défaut | Validation |
|---|---|---|---|
url string | Adresse publique de la page. | Optional: {} | |
observedGeneration integer | Dernière version du manifeste prise en compte. | Optional: {} | |
conditions Condition array | Conditions : Accepted (page valide et publiée). | Optional: {} |
StatusPageGroup
StatusPageGroup : section publique. Chaque Monitor de monitors y est une ligne, sous son displayName ; chaque entrée de components est une ligne sous son propre nom, qui peut réunir plusieurs Monitors.
| Champ | Description | Défaut | Validation |
|---|---|---|---|
name string | Nom public de la section. | MaxLength: 80 MinLength: 1 | |
monitors string array | Noms des Monitor de votre tenant, une ligne chacun. | MaxItems: 50 MinItems: 1 items:Pattern: ^[a-z0-9]([-a-z0-9]\{0,61\}[a-z0-9])?$ Optional: {} | |
components StatusPageComponent array | Lignes nommées, affichées après monitors. | MaxItems: 20 MinItems: 1 Optional: {} |
StatusPageComponent
StatusPageComponent : ligne publique sous son propre nom. Avec un seul Monitor, elle le renomme ; avec plusieurs, elle les combine selon combine.
| Champ | Description | Défaut | Validation |
|---|---|---|---|
name string | Nom public de la ligne. | MaxLength: 80 MinLength: 1 | |
monitors string array | Noms des Monitor de votre tenant. | MaxItems: 10 MinItems: 1 items:Pattern: ^[a-z0-9]([-a-z0-9]\{0,61\}[a-z0-9])?$ | |
combine CombineMode | All (défaut) : et ; Any : ou. | All | Enum: [All Any] Optional: {} |
CombineMode
Type sous-jacent : string
CombineMode : état d'une ligne qui réunit plusieurs Monitors.
Règles de validation :
Enum: [All Any]
| Valeur | Description |
|---|---|
All | CombineAll : opérationnelle seulement si tous les Monitors le sont (et). |
Any | CombineAny : opérationnelle dès qu'un Monitor l'est (ou). |
Statut et conditions
status.url donne l'adresse publique de la page acceptée, par exemple
https://status.acme.dev.stackngo.app/ ou https://status.acme.dev.stackngo.app/interne ;
il est vide tant que la page n'est pas acceptée.
| Condition | True quand | False quand |
|---|---|---|
Accepted | la page est admise et servie (raison Accepted) | refus de la plateforme ; la page répond 404 |
Ready | la page est complète | un moniteur listé n'existe pas encore (WaitingForMonitor) : la page est servie sans lui |
reason | Explication | Action |
|---|---|---|
Accepted | Page servie | — |
WaitingForMonitor | Un moniteur de groups n'existe pas (le message cite le groupe et le moniteur) ; la page affiche les moniteurs présents | Corriger le nom, ou créer le moniteur : la page se complète seule |
Invalid | Un moniteur figure deux fois sur la page (le message cite les deux groupes) | Ne le garder que sur une ligne |
NotSupported | customDomains n'est pas encore disponible | Retirer customDomains |
QuotaExceeded | Nombre de pages du tier atteint (1 en 3XS/2XS, 2 en XS/S, 3 en M, 5 en L, 10 en XL, 20 en 2XL, 50 en 3XL) | Supprimer une page, ou changer de tier |
Dans cette version, sng kind get StatusPage default affiche le manifeste enregistré sans l'état
de la page (# status: not observed yet) ; vérifiez la page en l'ouvrant, ou avec curl.
Ce qui se passe à l'application
Création. À la première page acceptée du tenant, la plateforme publie l'adresse
status.<tenant>.dev.stackngo.app avec un certificat HTTPS ; comptez quelques minutes
avant le premier affichage en HTTPS. Dans cette version, la publication DNS de cette adresse
n'est pas garantie sur tous les tenants. Les pages suivantes partagent la même adresse.
Contenu servi.
| Chemin | Contenu |
|---|---|
/ et /<nom> | page HTML (sans JavaScript), cache navigateur 30 s |
/api/v1/summary.json, /api/v1/pages/<nom>/summary.json | même contenu en JSON, appelable depuis n'importe quel site |
/badge/<moniteur>.svg | badge d'état d'un moniteur listé par une page acceptée |
L'état d'un composant vient du moniteur ; les uptimes sont recalculés toutes les 30 secondes,
l'historique toutes les 10 minutes. Chaque adresse IP est limitée à 5 requêtes par seconde
(réponse 429 au-delà).
Mise à jour. Un nouveau sng apply modifie la page ; l'affichage suit en moins d'une minute.
Ce qui se passe quand vous supprimez
sng kind delete StatusPage default : la page répond 404. Quand le tenant n'a
plus aucune page acceptée, l'adresse status.<tenant>… est retirée. Les mesures des
moniteurs ne sont pas touchées.
Erreurs fréquentes
| Symptôme | Cause | Correction |
|---|---|---|
404 page introuvable | Page refusée (NotSupported, QuotaExceeded), nom de page faux dans l'URL, ou page nommée healthz | Corriger la page ; vérifier /<nom> |
sng apply refuse : spec.logoURL … should match '^https://' | Logo en http:// | URL https:// |
sng apply refuse sur historyDays | Valeur autre que 30 ou 90 | 30 ou 90 |
| Composant « inconnu » | Moniteur refusé ou sans mesure récente | Voir Monitor |
| Un composant manque après la suppression d'un moniteur | Un moniteur listé n'existe plus (WaitingForMonitor) ; la page reste servie sans lui | Retirer le moniteur de la page dans le même sng apply |
503 statut momentanément indisponible | Le stockage des mesures ne répond pas | Réessayer |
Voir aussi
- Guides : Page de statut, Moniteurs d'uptime
- CLI :
sng template,sng apply - Autres kinds :
Monitor,NotificationChannel,MaintenanceWindow